猜你喜欢
微服务架构与实践(第2版)

微服务架构与实践(第2版)

书籍作者:王磊 ISBN:9787121349942
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:1248
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

  微服务架构不仅延续了分布式系统与SOA 的特征,也汲取了DevOps、持续集成、持续交付等工程实践的成功经验,并正在借着云计算和容器化的春风开始其驰骋之旅。但是,微服务的落地并不像其概念描述的那样举重若轻,它不仅包括架构解耦,还涉及开发测试、部署运维、工程实践、团队合作与康威定律等多方面的因素,这些因素相辅相成,共同影响着如何高质量、快速地交付业务价值。
  《微服务架构与实践(第2版)》是在第1 版的基础之上,基于作者近年来对服务化改造的实战经验和思考,并结合业界的技术趋势进行的一次体系化的精进。全书共分为3 部分,首先阐述了微服务架构的理论基础。其次介绍了微服务生态系统、实施参考模型以及*佳实践,并基于真实案例分析了遗留系统的服务化改造策略与应用场景。最后基于Apache 开源社区的微服务框架ServiceComb,设计并实现了案例SockShop 系统,从端到端交付的角度,指导读者完成服务的设计、开发、测试、流水线,以及自动化部署和运维体系的建立。
  《微服务架构与实践(第2版)》不仅适合架构师、开发人员以及技术管理者阅读,也适合正在尝试向微服务架构迁移的团队或者个人。希望本书能够在微服务落地的工作中对读者有所帮助。

作者简介

王磊
国内较早倡导和实践微服务的先行者,拥有超过十年的软件行业经验,在服务化架构、持续交付和DevOps领域有丰富的经验。著有国内较早的与微服务架构相关书籍《微服务架构与实践》,同时也是《DevOps实践指南》的译者、EXIN DevOps Master认证讲师和西安DevOps Meetup的联合发起人,现任华为公司高级架构师。

马博文
前ThoughtWorks咨询师,拥有多年Web开发和DevOps经验,熟悉持续交付、微服务、AWS和华为云。曾参与翻译《Scala编程实战》《DevOps实践指南》等书,是西安DevOps Meetup活动的发起人,现任华为公司高级工程师。

张琦

一个酷好骑摩托车的佛教徒。在软件研发领域纵横十余载,现任华为公有云PaaS平台高级架构师。亲历了从IaaS到PaaS等云计算各个技术以及其对企业IT影响的过程。虽历尽艰辛却也收获颇多,看到云原生,微服务对传统开发方式,系统架构,乃至IT构建模式的影响之巨大和深刻远超前几年的各种技术。希望本书中的心得体会和一些实践经验总结,能对相关从业人员有所启发并帮助诸位更顺利地实践微服务技术。


编辑推荐
适读人群 :架构师、程序员及广大学习者

Cloud Native+Serverless+Service Mesh+ServiceComb+ServiceStage
√ 微服务业界首著重装上阵,篇幅增倍,内容全面重写重构。
√ 打通微服务落地最后1公里,全力打造微服务实施参考模型。
√ 微服务演进实战:架构解耦→工程实践→部署运维→团队协作。
√ 累积Thoughtworks深厚技术底蕴,代表华为微服务领pao技术。

前言

  自序
  2014 年,微服务架构的概念在国外刚兴起,国内提及并付诸实践的人还并不多。我基于在ThoughtWorks 工作期间对海外某大型房产平台的微服务改造的经验,撰写了本书的第1 版,介绍了微服务架构的概念、背景以及优缺点,并通过一个遗留系统微服务改造的案例,阐述了微服务的理论和相关实践。
  技术的发展日新月异,微服务现在已经从一个“流行语”落地到了诸多互联网公司及传统企业。在技术大会上,讨论的议题不再是微服务的概念、优缺点,而是落地的场景、相关实践以及如何应对大规模服务化带来的挑战等。另外,随着持续交付、DevOps 理念被广泛地接受,Kubernetes、云基础设施的成熟,以及Service Mesh 等概念的兴起,实现微服务的方式正在发生快速的变化。
  近几年,在帮助数个团队将其产品迁移到微服务架构后,我深切地感受到:微服务的落地不仅仅只是架构解耦,还涉及工程实践、部署运维、团队协作等多个方面,这些因素相辅相成,共同影响着如何高质量、快速地交付业务价值。同时,我也发现:有些朋友对微服务的期望过高,将其视为解决现有架构痛点、消除技术债务、提升团队能力的“银弹”。加上社区对微服务的热捧,导致他们过于迫切地希望大刀阔斧地进行改造,而忽略了演进的过程。实际上,由于存在业务模式、技术积累、组织结构等差异性,微服务改造,尤其对于存量系统庞大的组织而言,很难一蹴而就。另外,市面上出版了诸多与微服务架构相关的书籍,但对实施和演进过程做系统化梳理的并不多。随着微服务架构在更多企业的落地,我认为如何系统化地演进和落地微服务将成为一大挑战。
  因此,我萌发了更新原书的想法。首先是与读者分享在过去几年中我在数个团队中落地微服务的心得——书中的设计模式以及工程实践,大多数是来自我对亲历实践的梳理,其中的参考模型帮助我指导了多个团队有效地推进遗留系统的改造。其次,基于热心读者的反馈,也对本书的开发语言以及技术框架(使用Java 作为开发语言,基于微服务开源框架ServiceComb 构建样例)进行了更新。另外,还介绍了微服务架构在业界的最新发展,包括微服务与Serverless 以及Service Mesh 等的关系。
  最后,感谢我的妻子晓丽和儿子锦熙,没有你们的支持和鼓励,我不可能完成这项工作。感谢挚友马博文、张桐、赵国庆一直以来的支持和帮助,你们对本书的服务化测试、部署运维提供了诸多思路。感谢华为的同事,你们积极参与审校并提出了宝贵建议。这些同事(排名不分先后)包括:饶争光、张琦、姜宁、陈弘、刘珊珊、吴继敏、崔毅华、张龙春、田晓亮、周天、闫敏之。感谢电子工业出版社的张春雨和负责本书审校工作的编辑们,本书能够出版,离不开你们一丝不苟的工作态度和敬业精神。
  由于时间仓促及作者水平有限,书中难免有疏漏之处,在此敬请广大读者批评指正。在阅读本书的过程中,也可通过微信5109343 或邮箱[email protected] 与我联系。祝读者们享受微服务的实践之旅!
  王磊
  2018 年7 月1 日于西安
  2011 年入职ThoughtWorks 后,我一直在澳洲一家房地产在线广告公司工作,负责交付项目,配合客户逐步实施敏捷开发、持续集成、自动化测试、蓝绿部署、持续交付、微服务化、云化、容器化、Serverless,我所在企业的组织结构也从职能型组织结构演进为类似Spotify 的敏捷性组织结构。
  在这个过程中,首先完成了将系统从瀑布式开发改进为敏捷式开发,将持续集成、TDD、自动化测试等推广到整个组织中。现在我依然记得当年实现Cucumber 测试做数据准备以及在CI 上修复环境的痛苦。这些痛苦换来的好处是,每个迭代(两周)的产出都可以部署到生产环境中。随后,服务可以通过“蓝绿部署”的方式实现“零宕机时间”部署,这样自动化部署的任务可以很容易地集成到交付流水线中。
  这些工程实践的应用,就像是铺就了一条高速公路,让后面的微服务改造变得异常顺利。同时,由于部署已经自动化,基础设施管理权限和能力也下放到了全功能团队中,对运维管理的监控、日志聚合也都采取比较合理的方案,微服务数量增加而带来的维护成本,由全功能团队承担,分摊在每个人身上的on-call 时间很少。
  维护成本低带来的好处是,微服务拆分的粒度可以非常小,小到只有一个接口。这些微服务设计和实现的经验,也让客户后来可以自如地采用Serverless 部署微服务。
  基于这些实际的微服务演进经历,在开始构想本书时,我们对应地为微服务参考模型的每个维度添加了自身曾经经历过的,或者一些业界的工程实践的案例,为读者在实施微服务时,提高每个维度下的成熟度提供参考。
  在参与本书撰写期间,大概半年多都几乎每天凌晨1 点左右休息。特别感激我的爱人王嘉能一直支持我,她虽然担心我的身体健康,但更能理解本书对我的重要意义。
  借此机会,感谢曾经在刚开始工作时给予我无限帮助的文静、聪明姐、吴少、黄拓和姜鹏。感谢现在团队的同事王磊、桐桐、国庆对我的帮助。同时,也感谢曾经一起工作过的朋友们,没有他们的帮助和影响,我无法对本书做出这些贡献,书中的很多实践案例也是来自他们的智慧和启发。
  I feel so grateful to work with all of you: JP who coached me in coding and swearing, Trent who led me into the DevOps world, Cos who gave me comprehensive guidance to become a qualified DevOps, Jeol who set an example of an outstanding tech leader, and Clayton who inspired me to think big in the data pipeline spike. My heartfelt thanks also go to Collins, Mike Williams, and other REA personnel who helped me and gave me enlightening ideas without any reservation. I’m an introvert and not good at rhetoric, but right here is the best opportunity for me to deliver my greatest gratitude with all my readers as witnesses.
  最后,祝愿各位读者能在阅读本书的过程中有所收益,既可以形成自己的微服务理论体系,也能将实践应用在具体项目中。
  马博文
  2018 年7 月5 日于西安
  随着互联网对各个行业的深度渗透,它对行业的改变除了使行业有了新的业务形式,还有对业务更新节奏的提速。近两年在与处于各种不同行业的朋友的交流中,感受最深的一点就是“这世界变化太快了”。如果前两年这种“快”的影响还只在互联网领域,那么现在几乎所有的行业都已经被裹挟到这个浪潮中来了。而“微服务”便是在这样的大势之下应运而生,由前两年互联网公司的“玩具”转变为被更多企业级IT 系统所接受和尝试东西。
  IT 领域的技术更新节奏是十分迅速的,自本书第1 版出版以来,随着容器技术、DevOps技术的蓬勃发展,“适应业务高速变化的系统架构”已经成长了很多。Kubernetes 的火爆,将容器技术带入了复杂的企业级系统中,对有状态的服务的支持,对复杂应用的编排能力,让更多的人们认识到,不是所有的应用都可以简单到无状态,“农场散养模式”也不一定适合所有类型的应用。Service Mesh 的微服务实现形式的发展,让大家认识到,终于有人开始认为传统的微服务实现方式还是不够快;而单一语言开发、单一协议通信也并不能满足很多实际的需求。在“简单为王”的另一面,人们终于认识到这个世界本就不是那么简单的。互联网褪去了前期的浮华,终于让整个行业和技术的发展进入到“不落两边”的境界。而正是这种技术发展的趋势,让越来越多的企业级应用开始选择和使用微服务架构。本书的前两篇建立在我们对企业级应用的微服务实践上,着重讲解在这个过程中使用到的种种技术。
  然而任何一个曾经尝试过在自己的项目中使用过“微服务”的读者都应该有所感受,“微服务”总是看上去很美,做起来却又“冷暖自知”了。在我参与过的几个微服务项目中,业务架构师在一开始的期望总是想让我一下就告诉他,他的系统怎么做就可以一下就变成微服务架构,可以享受微服务带来的种种好处,但是实际情况却是,不存在这种“速成”的方法。其实从开发流程、组织形式、工具选用、架构方式、实现技术等各个阶段,无不属于微服务的范畴。即便是微服务拆分,也在种种理论之下要充分结合本业务、本系统的实际情况逐步进行。所以本书在“实践篇”中花大篇幅向读者展示了一个以微服务架构构建的系统的始末。从理论的实践到工具的选用,再到各个环节的实施,这是希望读者在此基础上可以引发对实践的思考,并能够进一步以此为启发,自己可以对微服务架构和技术有所领悟。
  我衷心地希望本书的读者可以从中获益,了解微服务架构,掌握微服务架构,自己实践微服务架构。这便是作为IT 从业人员在“搬砖”之外能得到的最大慰藉了。
  张琦
  2018 年9 月1 日于北京

目录

第1 部分 基础篇
第1 章 微服务架构综述 2
1.1 软件架构发展历史 2
1.2 微服务的诞生背景 8
1.3 什么是微服务架构 15
1.4 微服务架构的本质 23
1.5 微服务架构的特征 28
1.6 微服务架构不是“银弹” 34
1.7 微服务架构与SOA 39
1.8 微服务与Serverless 40
1.9 微服务与Service Mesh 46
1.10 小结 53
第2 部分 策略篇
第2 章 微服务生态系统 57
2.1 为什么定义生态系统 57
2.2 微服务生态系统的核心内容 59
2.3 生态系统的工程实践 66
2.4 小结 73
第3 章 微服务关键技术 74
3.1 服务设计 74
3.2 服务治理 116
3.3 服务运维 131
3.4 小结 142
第4 章 微服务参考模型 143
4.1 为什么需要参考模型 143
4.2 参考模型的核心内容 144
4.3 如何使用参考模型 172
4.4 小结 183
第5 章 基于参考模型的实践 184
5.1 微服务团队 184
5.2 核心敏捷实践 192
5.3 服务设计与实现 198
5.4 运维管理 212
5.5 测试管理 235
5.6 交付流水线 269
5.7 部署管理实践 288
5.8 小结 333
第6 章 遗留系统的微服务改造 334
6.1 遗留系统综述 334
6.2 遗留系统改造策略 336
6.3 遗留系统改造场景 341
6.4 遗留系统改造案例 347
6.5 小结 354
第3 部分 实战篇
第7 章 微服务开发框架ServiceComb 356
7.1 ServiceComb 综述 356
7.2 Java Chassis 361
7.3 Go Chassis 详解 364
7.4 注册中心ServiceCenter 365
7.5 数据一致性框架Saga 372
7.6 小结 376
第8 章 微服务云应用平台ServiceStage 377
8.1 ServiceStage 综述 377
8.2 CCE 云容器引擎服务 379
8.3 CSE 微服务引擎 384
8.4 SWR 软件镜像仓库 386
8.5 AOS 编排服务 387
8.6 APM 应用性能管理 389
8.7 小结 391
第9 章 SockShop 系统分析与设计 392
9.1 系统综述 392
9.2 需求理解与分析 395
9.3 服务划分与设计 396
9.4 架构设计 401
9.5 基础设施塔建 404
9.6 小结 407
第10 章 实现SockShop 系统的第一个服务 408
10.1 使用Java Chassis 实现商品服务 408
10.2 使用Docker-Compose 本地运行服务 415
10.3 商品服务自动化测试 416
10.4 搭建交付流水线 419
10.5 小结 423
第11 章 实现SockShop 系统的其他服务 424
11.1 实现用户服务 425
11.2 实现购物车服务 432
11.3 实现订单服务 434
11.4 实现支付服务 437
11.5 实现物流服务 438
11.6 实现用户界面服务 440
11.7 使用Pact 验证服务 451
11.8 运行SockShop 系统 456
11.9 小结 459
第12 章 部署SockShop 系统 460
12.1 SockShop 系统的TOSCA 模板 460
12.2 部署SockShop 系统 465
第13 章 运维SockShop 系统 468
13.1 监控告警 468
13.2 日志聚合 475
13.3 服务治理 476
13.4 小结 479
附录A ServiceStage 相关概念 481
附录B TOSCA 模板介绍 483
写在最后 486
参考文献 488
资源列表 490