百道网
 您现在的位置:Fun书 > 云原生应用架构实践
云原生应用架构实践


云原生应用架构实践

作  者:网易云基础服务架构团队

出 版 社:电子工业出版社

出版时间:2017年08月

定  价:79.00

I S B N :9787121315169

所属分类: 专业科技  >  计算机/网络  >  程序设计    

标  签:计算机?网络  网络与数据通信  

[查看微博评论]

分享到:

TOP好评推荐   [展开]

TOP内容简介

    针对企业如何采用云原生架构实现高效的产品迭代能力、支持互联网业务健康发展,《云原生应用架构实践》总结了一套可行的方法论。书中详解了云原生应用的内涵和要点,对实现云原生应用面临的功能和非功能(高性能、高可用、可扩展、安全性、高可靠等)的不同阶段需求和实现方案进行了较为完整的梳理。内容涵盖了系统工程化、高性能数据库、分布式数据库、DevOps、微服务架构、服务化测试、多机房架构等方面,既有业务挑战分析,也有架构实践指导,并通过实战案例加以诠释。

    本书适合希望采用云计算帮助企业实现业务提升的 CTO、CIO、架构师等群体。

 

TOP作者简介

    网易云基础服务架构团队,负责网易云基础服务平台建设,包括计算、网络、存储、CDN、数据库等服务,以及自动化平台的架构和实践,该平台支撑了网易内部95%的互联网产品。团队在互联网产品开发和规范化的系统建设上有丰富的经验,对互联网业务需求、系统设计、开发、测试、运维和调优等方面有独到的经验和理解。

    祝一切顺利!

 

TOP目录

引子 1

第1章 互联网系统架构的挑战 2

1.1  云应用架构技术发展 4

1.2  云平台下架构的不同点 5

1.2.1  开发模式的区别 6

1.2.2  交付模式的区别 7

1.2.3  架构设计的区别 8

1.3  云原生应用架构 10

1.4  架构演化发展历程 21

1.4.1  初创期架构 22

1.4.2  快速成长期架构 24

1.4.3  分布式服务架构 26

1.5  云计算服务介绍 29

1.6  云计算解决方案 31

1.7  案例概述 34

1.7.1  背景介绍 34

1.7.2  环境要求 36

1.7.3  项目构建 36

1.7.4  项目运行 36

1.7.5  相关技术介绍 37

小结 40

第2章  从0到1工程实践 41

2.1  工程化 41

2.1.1  工程模板 41

2.1.2  模块化 45

2.1.3  工程化构建 50

2.1.4  代码规范及检查 53

2.1.5  代码版本管理 54

2.1.6  环境划分 61

2.2  基于容器工程化 62

2.2.1  Docker及作用 63

2.2.2  Docker镜像及操作 66

2.2.3  Docker容器及操作 73

2.2.4  基于容器工程化 77

2.3  实战示例 78

小结 84

第3章  初创期应用架构实践 85

3.1  技术选型 85

3.1.1  业务框架选型 85

3.1.2  结构化数据存储 92

3.1.3  缓存选型 102

3.1.4  静态资源存储 106

3.2  架构实践 109

3.2.1  快速迭代 109

3.2.2  高可用与负载均衡 111

3.2.3  交付与部署 117

3.2.4  Web应用安全 119

3.3  应用监控 127

3.3.1  应用监控指标 127

3.3.2  应用进程监控 128

3.3.3  操作系统监控 129

小结 136

第4章  快速成长期应用架构实践 137

4.1  关键业务需求 137

4.1.1  计数与排序 137

4.1.2  秒杀 146

4.1.3  全文检索 149

4.1.4  日志收集 154

4.2  架构实践 156

4.2.1  前端系统扩展 157

4.2.2  无状态服务设计 157

4.2.3  在线水平扩展 160

4.2.4  后端系统扩展 163

4.2.5  系统通信 173

4.2.6  消息中间件 176

4.3  系统优化 181

4.3.1  静态资源分离 182

4.3.2  数据库调优 185

4.3.3  系统高可用 193

4.4  应用诊断 200

4.4.1  应用健康检查 200

4.4.2  性能问题诊断 204

4.4.3  基于日志的故障诊断 210

4.5  数据库诊断 214

4.6  DevOps 223

4.6.1  持续集成 224

4.6.2  持续交付 227

4.6.3  灰度发布 229

4.6.4  大应用编排 231

4.7  安全设计 246

4.7.1  入侵检测 247

4.7.2  防劫持攻击 249

小结 255

第5章  稳定期服务化应用架构实践 256

5.1  业务拆分 256

5.2  统一配置中心 259

5.3  分布式定时任务 261

5.3.1  分布式定时任务设计 262

5.3.2  业界流行的开源框架 264

5.4  分布式锁系统 274

5.5  微服务化架构 277

5.5.1  服务发现 279

5.5.2  服务治理 302

5.5.3  微服务框架 307

5.5.4  服务编排 313

5.5.5  微服务测试 321

5.6  分布式数据一致性 333

5.6.1  CAP和BASE理论 333

5.6.2  一致性模型 336

5.6.3  典型的解决方案 337

5.7  同城多活 344

5.7.1  应用同城多活 345

5.7.2  跨AZ负载均衡 347

5.8  故障诊断 348

小结 353

参考文献 354

技术术语 356

 

TOP书摘

  推荐序一

  不知不觉,网易公司已经走到第20个年头。网易的业务从邮箱、门户和游戏业务,拓展到电商、文娱、教育和农业板块,并在云计算、大数据、人工智能、增强现实等领域进行了战略布局。每一项业务的健康发展,从“道”的层面而言是在于与用户共同成长,从“术”的层面则是不断打磨产品,使之更好地满足用户需求。

  互联网信奉“快”,但网易更尊重“匠心”,产品每一个特性的更新,都需要经过反复的验证。这也意味着,网易业务多元化背后需要大量的产品研发和迭代工作,因此,与之匹配的应用架构至关重要。网易架构在业务成长中不断演进,形成了当下的云原生架构,让95%的互联网业务真正运行于云端,业务团队只需要努力为业务编码。由此,“快”和“匠心”在产品端得到了平衡。我相信,云原生是互联网业务的最优解。

  云原生与传统云计算最大的区别在于,传统云计算关注的是如何提供性价比最高的计算、存储、网络资源,而云原生关注的是如何让产品能够支持快速验证业务模式,如何简化复杂的开发流程、提升研发效率,如何保障产品的高可用性让业务无需承受成长之痛,如何实现大规模弹性伸缩轻松应对业务爆发,等等。也正因如此,“云原生架构”虽然只有短短的五个字,其落地却隐藏了无数的变量与陷阱。

  介于此,本书系统梳理了网易云原生架构的演进经验,对不同的挑战分别给出相应答案。网易架构仍在演进,我不能说这些答案已经很成熟,但我相信,书中一定会有一些章节正好击中不同企业的痛点,帮助企业在互联网业务创新过程中少走一些弯路。网易希望借此与大家共同交流探讨。

  陈刚

  网易杭州研究院院长

  推荐序二

  作为一家诞生于中国互联网萌芽期的互联网公司,网易具有丰富的产品线。长久在网易任职,一个很大的好处是能够真切地经历波澜壮阔的互联网发展史,而对于技术人来说,更重要的是能够学习和实践各项支撑互联网爆炸式发展的技术,能够在这段经历中获得不同于纸上得来的知识和思想:能切实体会到许多技术为何产生、为何沉寂或者兴起,从而能够在实践中避免因循守旧或一味求新逐异;更懂得如何根据功能、非功能性需求进行取舍,选择更有生命力的技术;更加理解架构的本质。

  我和我的团队从十多年前的博客时代开始接触互联网技术,当时Web2.0概念刚刚兴起,网易博客一上线,用户量、访问量就呈爆发式增长,我们最大的困难并不在于如何编写代码,而是怎样支持产品的高速迭代。以往我们并未经历业务几乎每天都在更新迭代的情况,此时通宵更新版本成了家常便饭,为此我们优化了版本控制策略,研发并集成了自动化构建和发布工具,将其总结为“项目工程化”,在之后的项目中尤为重视。

  然而,当时博客业务也在变得日益复杂。更新版本时,团队间的协调成为拖慢迭代节奏的重要因素,因此我们开始把一些业务模块独立出来,以远程接口方式提供服务,或是在负载均衡入口直接按业务模块分流,后台的缓存、数据库也做了相应的拆分,服务化进程就这样自然地开始了,团队曾考虑借鉴当时业界流行的SOA(面向服务架构)理念,想引入企业服务总线等重量级设施,但由于2C业务和性能意味着用户量的支持及实际的用户体验,基于对更轻量、更高性能的渴望,我们最终选择了类似微服务的架构形态。

  服务化一旦开展,过程就变得更加复杂。随着发布的频度再次提升,服务单独升级带来了版本问题,以及维护、故障期间的雪崩等一系列棘手的问题,代码质量也开始下降,由于各种方式的RPC调用、服务发现封装方式大量地充斥在代码中,我们意识到必须要有统一的框架支持服务化进程,于是近十年前我们有了自己的微服务框架,逐步解决雪崩、版本、服务发现、降级等问题。

  后博客时代,我们将工程化、服务化等工具、框架应用于新的业务,又发现了新的问题。服务化带来了业务计算节点种类和数量的大幅增长,运维部署变得非常困难,在资源层面,服务化后的节点无法充分利用服务器资源,众多的服务被混合部署在同一台服务器上,从而服务间资源争抢,故障恢复时与各产品、各模块的协调成了最麻烦的问题,我们意识到单台服务器的负载在短短几年内已发生了极大的改变,要解决资源管理问题,云计算势在必行。

  很幸运的是我与团队能受公司之托来负责云计算平台的研发工作,2012年秋,网易云计算平台正式开始支持公司业务,得益于SDN技术与公司原内网环境的较好融合,云平台很快得到了广泛使用。相比物理机节点数量的线性增长,虚拟机的数量指数级增长在很大程度上解决了原本遇到的资源管理问题;虚拟主机做到专机专用按需配置,使用数据库、缓存等基础服务再也不用等待运维团队部署维护,系统运维效率也得到了极大的提升。

  获取资源容易了,产品自然而然规划出众多的测试环境,如开发环境、集成环境、预发布环境等,于是搭建测试环境,持续集成与交付很快成了新瓶颈,更麻烦的是业务服务化架构日渐成型,应用运维的复杂度指数级提升。为此,我们又打造了自动化部署平台,解决集群的编排、版本更新、回滚等问题,平台上线后每月的部署次数直线上升,达到数万次之多。没有云计算时,我们觉得两套测试环境共用就行,每天集成部署一两次就行,有了云计算后,原本被压抑的资源、迭代频度的需求被瞬间释放,反应到产品中的便是功能开发并行度和迭代速度的大幅提升,迭代风险的大幅下降。上云的收益由此可见一斑,先行拥抱云计算的企业在产品竞争中可获得巨大的优势。

  可以说在网易这样的成熟互联网公司,是原本的软件架构、技术体系的进化推动了云计算的实施,塑造了云计算平台的形态,我们的业务技术架构是与云计算伴随生长的,并且经历了漫长的迭代过程,而对于后来者,基于云来设计软件架构、实现工程化、建设运维体系,则可以选择一条前人已充分实践并总结和提炼的路径,一开始便可以从云而生,这也就是我们所说的云原生的技术体系。我们在开放网易云计算能力的过程中遇到过不少用户,他们不知道网易这样的互联网企业如何基于云高速迭代产品、支撑海量用户,不知道如何在架构设计、技术选型阶段迈出第一步,如何为未来的发展打下基础,或是业务增长后如何应对。有初创企业虽然灵活快速却控制不了迭代质量、刹不住车的,也有传统企业提不了速的。正是看到这些问题,我认为,作为互联网技术的实践者,我们不仅应当将我们的平台、工具链开放出来,同时也应将我们的云端架构实践梳理成知识体系分享出来,在这“大众创业,万众创新”的互联网+时代为企业健康发展作出力所能及的贡献。

  陈谔

  网易杭州研究院云计算技术部总监

  ……

 

TOP 其它信息

装  帧:平装

页  数:372页

版  次:第1版

开  本:16开

加载页面用时:44.4198