从互联网、移动互联网到云计算、大数据、人工智能,再到虚拟现实/增强现实,十多年来,信息技术的日新月异催生了不断涌现的互联网新业态,也推动了传统行业投身于数字化创新的浪潮。此时此刻,机器取代人类的说法固然夸张,却也真实地反映了新技术应用对产业带来的冲击。
全球顶级商业机构都是能够把握技术创新成果的企业;而对技术运用不当的企业,即便起点与前者一致,或许也曾风光一时,但最终还是步履维艰,甚至烟消云散。决定能否与技术趋势同行的一个核心因素就是技术架构。如果说商业模式是商业组织的灵魂,那么架构就是灵魂的根基。最典型的例子就是电商618、双11大促,流量爆发之下如何保障整个商品交易流程的体验,对系统设计和运维保障都是巨大的考验,这也推动了技术的进步。当前的大促活动依然让电商企业如履如临,然而挑战难度已经不如七八年前,这就是架构演进趋于成熟的表现,充分利用云计算理念的“互联网架构”由此为业界所推崇。
综合考虑IT资产、业务规模、发展阶段、人才储备及投资成本,不同企业需要的互联网架构并不完全一样,譬如初创公司考虑百万级并发可能不合时宜,然而为长远计,想跟上发展迅速、爆发力惊人的互联网业务,架构设计需要既能满足当前业务需求,又具备快速升级支撑下一个发展阶段的能力。企业如何正确驾驭架构的设计和演进?有哪些通用的成熟经验可供借鉴?业界对此不乏零星的讨论,但企业仍缺乏系统的、可指导实践的参考资料。
本书是网易云基础服务架构团队根据网易集团的十余年实践,结合社区优秀案例总结而成的互联网架构演进指南。2006年,怀着储备互联网技术和孵化新业务的初衷,网易杭州研究院扬帆起航,及至今日在两个方向上都有不俗的成绩,一端是分布式、云计算、大数据、人工智能、增强现实,一端是教育、电商、金融、游戏,这一切都是构建在千锤百炼的互联网架构之上的,这就是同时满足功能性需求、非功能性需求和产品快速迭代需求的云原生架构。网易云希望把这些经验分享给业界,与各行各业一起践行中国云计算。
全书共5章,以商业组织的互联网业务成长为主线,着眼于业务需求,清晰地剖析互联网架构的挑战,云原生架构的特征、构成和解决的问题,以及架构演进的路径,并通过案例对设计原则和实践加以诠释。通过阅读本书,架构师能够借鉴网易十余年的经验结晶,无须反复试验,即可快速设计符合互联网业务场景需求的架构,而有一定基础的读者朋友也能更加透彻地理解和规划未来的方向。
全书由尧飘海统筹构思,网易云基础服务架构团队成员参与写作,书中部分图片脱胎于社区文档或官方宣传资料。第1章以宏观视角简明地解析互联网业务挑战及架构演进要点;第2章介绍开始搭建业务系统时需要的项目版本管理工具、以Docker为代表的容器技术,以及常见语言的工程化构建方式,并结合实战示例给予完整展现;第3章针对访问流量不是很大的业务起步阶段,讲述如何做好技术选型,实现一个支持快速迭代、高可用、安全的应用服务端;第4章介绍如何解决业务高速成长阶段的可扩展性、性能、系统集成与交互、数据可靠性等挑战;第5章以分布式定时任务和分布式锁系统的实现为例,介绍分布式服务应用挑战和架构方法,重点解析了微服务架构、分布式数据一致性和同城多活的实践。
全书内容分别由尧飘海、焦智慧、王新勇、张小刚和冯常健主笔,黄庆兵、郭忆、乔安然、何李夫、孙建良、刘发明、沈明星、崔晓晴、易庭、祝剑锋、姜政冬、朱凌墨等网易云架构师和工程师参与了写作,插图由李倩倩和纪桂莲支持完成。
本书的付梓要特别感谢电子工业出版社的符隆美编辑,她帮助我们及时地解决了遇到的各种问题。
限于作者的精力与能力,书中难免出现一些疏漏之处,请广大读者不吝指正,并予以包涵,我们会在再版中修正。
推荐序一
不知不觉,网易公司已经走到第20个年头。网易的业务从邮箱、门户和游戏业务,拓展到电商、文娱、教育和农业板块,并在云计算、大数据、人工智能、增强现实等领域进行了战略布局。每一项业务的健康发展,从“道”的层面而言是在于与用户共同成长,从“术”的层面则是不断打磨产品,使之更好地满足用户需求。
互联网信奉“快”,但网易更尊重“匠心”,产品每一个特性的更新,都需要经过反复的验证。这也意味着,网易业务多元化背后需要大量的产品研发和迭代工作,因此,与之匹配的应用架构至关重要。网易架构在业务成长中不断演进,形成了当下的云原生架构,让95%的互联网业务真正运行于云端,业务团队只需要努力为业务编码。由此,“快”和“匠心”在产品端得到了平衡。我相信,云原生是互联网业务的最优解。
云原生与传统云计算最大的区别在于,传统云计算关注的是如何提供性价比最高的计算、存储、网络资源,而云原生关注的是如何让产品能够支持快速验证业务模式,如何简化复杂的开发流程、提升研发效率,如何保障产品的高可用性让业务无需承受成长之痛,如何实现大规模弹性伸缩轻松应对业务爆发,等等。也正因如此,“云原生架构”虽然只有短短的五个字,其落地却隐藏了无数的变量与陷阱。
介于此,本书系统梳理了网易云原生架构的演进经验,对不同的挑战分别给出相应答案。网易架构仍在演进,我不能说这些答案已经很成熟,但我相信,书中一定会有一些章节正好击中不同企业的痛点,帮助企业在互联网业务创新过程中少走一些弯路。网易希望借此与大家共同交流探讨。
陈刚
网易杭州研究院院长
推荐序二
作为一家诞生于中国互联网萌芽期的互联网公司,网易具有丰富的产品线。长久在网易任职,一个很大的好处是能够真切地经历波澜壮阔的互联网发展史,而对于技术人来说,更重要的是能够学习和实践各项支撑互联网爆炸式发展的技术,能够在这段经历中获得不同于纸上得来的知识和思想:能切实体会到许多技术为何产生、为何沉寂或者兴起,从而能够在实践中避免因循守旧或一味求新逐异;更懂得如何根据功能、非功能性需求进行取舍,选择更有生命力的技术;更加理解架构的本质。
我和我的团队从十多年前的博客时代开始接触互联网技术,当时Web2.0概念刚刚兴起,网易博客一上线,用户量、访问量就呈爆发式增长,我们最大的困难并不在于如何编写代码,而是怎样支持产品的高速迭代。以往我们并未经历业务几乎每天都在更新迭代的情况,此时通宵更新版本成了家常便饭,为此我们优化了版本控制策略,研发并集成了自动化构建和发布工具,将其总结为“项目工程化”,在之后的项目中尤为重视。
然而,当时博客业务也在变得日益复杂。更新版本时,团队间的协调成为拖慢迭代节奏的重要因素,因此我们开始把一些业务模块独立出来,以远程接口方式提供服务,或是在负载均衡入口直接按业务模块分流,后台的缓存、数据库也做了相应的拆分,服务化进程就这样自然地开始了,团队曾考虑借鉴当时业界流行的SOA(面向服务架构)理念,想引入企业服务总线等重量级设施,但由于2C业务和性能意味着用户量的支持及实际的用户体验,基于对更轻量、更高性能的渴望,我们最终选择了类似微服务的架构形态。
服务化一旦开展,过程就变得更加复杂。随着发布的频度再次提升,服务单独升级带来了版本问题,以及维护、故障期间的雪崩等一系列棘手的问题,代码质量也开始下降,由于各种方式的RPC调用、服务发现封装方式大量地充斥在代码中,我们意识到必须要有统一的框架支持服务化进程,于是近十年前我们有了自己的微服务框架,逐步解决雪崩、版本、服务发现、降级等问题。
后博客时代,我们将工程化、服务化等工具、框架应用于新的业务,又发现了新的问题。服务化带来了业务计算节点种类和数量的大幅增长,运维部署变得非常困难,在资源层面,服务化后的节点无法充分利用服务器资源,众多的服务被混合部署在同一台服务器上,从而服务间资源争抢,故障恢复时与各产品、各模块的协调成了最麻烦的问题,我们意识到单台服务器的负载在短短几年内已发生了极大的改变,要解决资源管理问题,云计算势在必行。
很幸运的是我与团队能受公司之托来负责云计算平台的研发工作,2012年秋,网易云计算平台正式开始支持公司业务,得益于SDN技术与公司原内网环境的较好融合,云平台很快得到了广泛使用。相比物理机节点数量的线性增长,虚拟机的数量指数级增长在很大程度上解决了原本遇到的资源管理问题;虚拟主机做到专机专用按需配置,使用数据库、缓存等基础服务再也不用等待运维团队部署维护,系统运维效率也得到了极大的提升。
获取资源容易了,产品自然而然规划出众多的测试环境,如开发环境、集成环境、预发布环境等,于是搭建测试环境,持续集成与交付很快成了新瓶颈,更麻烦的是业务服务化架构日渐成型,应用运维的复杂度指数级提升。为此,我们又打造了自动化部署平台,解决集群的编排、版本更新、回滚等问题,平台上线后每月的部署次数直线上升,达到数万次之多。没有云计算时,我们觉得两套测试环境共用就行,每天集成部署一两次就行,有了云计算后,原本被压抑的资源、迭代频度的需求被瞬间释放,反应到产品中的便是功能开发并行度和迭代速度的大幅提升,迭代风险的大幅下降。上云的收益由此可见一斑,先行拥抱云计算的企业在产品竞争中可获得巨大的优势。
可以说在网易这样的成熟互联网公司,是原本的软件架构、技术体系的进化推动了云计算的实施,塑造了云计算平台的形态,我们的业务技术架构是与云计算伴随生长的,并且经历了漫长的迭代过程,而对于后来者,基于云来设计软件架构、实现工程化、建设运维体系,则可以选择一条前人已充分实践并总结和提炼的路径,一开始便可以从云而生,这也就是我们所说的云原生的技术体系。我们在开放网易云计算能力的过程中遇到过不少用户,他们不知道网易这样的互联网企业如何基于云高速迭代产品、支撑海量用户,不知道如何在架构设计、技术选型阶段迈出第一步,如何为未来的发展打下基础,或是业务增长后如何应对。有初创企业虽然灵活快速却控制不了迭代质量、刹不住车的,也有传统企业提不了速的。正是看到这些问题,我认为,作为互联网技术的实践者,我们不仅应当将我们的平台、工具链开放出来,同时也应将我们的云端架构实践梳理成知识体系分享出来,在这“大众创业,万众创新”的互联网+时代为企业健康发展作出力所能及的贡献。
陈谔
网易杭州研究院云计算技术部总监
……