知识卡片

Web服务器的"拿来主义",及Docker容器带来的两大根本性变革

普通读书笔记卡

内容

[[统一开发框架的三个理由,及”优选成熟框架”的选型原则]]只负责完成业务功能开发,要真正跑起来对外提供服务还需要Web服务器配合。独立开发一个成熟的Web服务器成本极高,而业界已有大量成熟的开源方案,因此互联网行业基本是”拿来主义”,直接挑一个流行的开源服务器用即可,大公司可能会在开源服务器基础上结合自身业务做二次开发(比如淘宝的Tengine),一般公司只需要把开源服务器摸透、调优参数配置就够了;选哪个服务器主要和开发语言相关(Java用Tomcat/JBoss/Resin,PHP/Python用Nginx,最保险的是什么语言都支持的Apache),至于性能问题不用过早担心,等业务真发展到当前服务器撑不住的时候再切换也不迟,那时候有钱有人有时间来应对。容器技术(以Docker为代表)是近几年才火起来的方向,已经在BAT级公司有大规模应用(腾讯万台规模Docker实践、新浪微博红包大规模Docker集群)。传统虚拟化技术是虚拟机,能解决跨平台问题,但因为太庞大、启动慢、运行时占用资源多,在互联网行业没有大规模落地;Docker的容器技术虽然不能跨平台,但启动快、几乎不占资源,推出后很快火了起来,被认为是技术发展的主流方向。Docker绝不只是一个虚拟化/容器技术这么简单,它会从两个层面改变技术格局:一是运维方式会发生革命性变化——因为容器启动快、几乎不占资源、可以随时启停,基于Docker打造自动化运维、智能化运维会成为主流方式;二是设计模式会发生本质变化——启动一个新容器实例的代价如此低,会天然鼓励设计思路朝”微服务”方向发展,比如一个传统网站的登录注册、页面访问、搜索这些功能,没有容器技术时除非访问量特别大,否则一开始都会集成在一个系统里;有了容器技术后,从一开始就可以把这些功能按服务方式独立设计,避免后续访问量变大时还要费力重构。

参考来源

- 位置:《从零开始学架构》第41讲《互联网架构模板:"开发层"和"服务层"技术》"开发层技术"之"Web服务器""容器"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文说明"独立开发一个成熟的 Web 服务器,成本非常高……互联网行业基本上都是'拿来主义'",并展开Docker的两点根本性影响"运维方式会发生革命性的变化……设计模式会发生本质上的变化……启动一个新的容器实例代价如此低,将鼓励设计思路朝'微服务'的方向发展",直接支撑本卡片结论。 - 原始内容:独立开发一个成熟的 Web 服务器,成本非常高……互联网行业基本上都是"拿来主义"……千万不要以为 Docker 只是一个虚拟化或者容器技术……运维方式会发生革命性的变化……设计模式会发生本质上的变化。