微信扫码下载

编辑推荐

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

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

内容简介

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

作者简介

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

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

张琦

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

精彩书评

随着数字化转型的推进,越来越多的企业开始尝试基于微服务框架构建和重构自己的系统,微服务实施不仅仅是微服务框架的技术选型和服务拆分,它涉及到方方面面,是一个系统化的体系工程。《微服务架构与实践(第2版)》从架构演进、微服务拆分、接口契约测试,流水线构建到微服务实战,涵盖了微服务实施过程中的重要环节,是一本难得的系统化、全面介绍微服务的书籍,值得大家认真研读。

——李林锋

《分布式服务框架原理与实践》《Netty进阶之路》作者

云计算现在已经广为人知,云模式也正在快速替换传统IT模式。为充分发挥云服务的优势,不同行业的应用都需要按照云原生(CloudNative)方式进行构建和运维。传统企业和互联网企业在技术上的差异将逐步缩小并最终消失。微服务之于开发,就像容器之于运维,《微服务架构与实践》凝聚了作者们在微服务与DevOps领域多年的实践经验,这次再版更是把新技术发展和工作反思进行及时分享,相信大家都能从中得到不少收获。

——方国伟

平安科技CTO兼总架构师

很荣幸能提前拜读王磊老师的微服务新书,《微服务架构与实践(第2版)》从基础、策略,再到实战,每章所涵盖的知识点颇为丰富。期待这《微服务架构与实践(第2版)》能尽快出版,帮助大家快速掌握微服务架构的核心,并轻松实现微服务。

——黄勇

《架构探险》作者

王磊是国内微服务架构的先行者。既参与微服务相关基础组件研发,也指导微服务架构的实践落地,积累的这些经验使得王磊对微服务架构的理解更加深刻,更加体系化,也更加能够把握企业微服务架构转型的实际痛点并对此提出解决方案。相信《微服务架构与实践(第2版)》能够为企业数字化转型带来切实价值,也感谢王磊对微服务架构在国内的推广所做出的贡献。

——杨波

拍拍贷基础架构总监/极客时间《微服务架构和实践160讲》作者

目录

第1部分基础篇
第1章微服务架构综述2
1.1软件架构发展历史2
1.2微服务的诞生背景8
1.3什么是微服务架构15
1.4微服务架构的本质23
1.5微服务架构的特征28
1.6微服务架构不是“银弹”34
1.7微服务架构与SOA39
1.8微服务与Serverless40
1.9微服务与ServiceMesh46
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章微服务开发框架ServiceComb356
7.1ServiceComb综述356
7.2JavaChassis361
7.3GoChassis详解364
7.4注册中心ServiceCenter365
7.5数据一致性框架Saga372
7.6小结376
第8章微服务云应用平台ServiceStage377
8.1ServiceStage综述377
8.2CCE云容器引擎服务379
8.3CSE微服务引擎384
8.4SWR软件镜像仓库386
8.5AOS编排服务387
8.6APM应用性能管理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使用JavaChassis实现商品服务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.1SockShop系统的TOSCA模板460
12.2部署SockShop系统465
第13章运维SockShop系统468
13.1监控告警468
13.2日志聚合475
13.3服务治理476
13.4小结479
附录AServiceStage相关概念481
附录BTOSCA模板介绍483
写在最后486
参考文献488
资源列表490

前言/序言

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


其他推荐