在当今的数字化经济时代,微服务架构已经成为公司业务构建的主流架构模式,代表了未来的技术发
展趋势,同时微服务也成为开发者的必备技能。
本书从微服务架构的设计理念和方法论切入,从不同角度全面介绍微服务特性、使用场景、组织流程、
构建交互、部署交付等软件工程各个关键环节和核心要素,既包含了具体微服务技术的源码解读、原理分析,也加入了作者在电信、金融领域积累的真实案例和实践经验。
全书分为原理篇、实践篇、进阶篇。原理篇涵盖微服务的概念、采用前提、领域驱动设计、DevOps;
实践篇对Spring Boot、Spring Cloud 治理框架、系统集成、微服务数据架构、微服务交付、微服务的监控等重要技术话题展开深入讲解;进阶篇主要介绍函数式编程及响应式微服务架构、Kubernetes、云原生架构生态。
本书不仅适合初学者深入理解微服务架构,也可以作为团队管理者或者架构师进阶微服务架构的技术
参考手册。
内容全面
讲解深入
业内众多专家力荐
当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的IT 企业,
纷纷采用微服务架构构建系统。在过去几年里,DevOps、云原生、面向演进式架构等理念已经深
入人心,围绕微服务生态也出现了大量的组件、框架、工具,这很好地支撑了海量的数据增长和
用户业务需求的快速变化。本书将从微服务理论开始介绍,结合作者多年的工作经验,深入讲解
分布式系统和微服务架构,从而帮助技术人员切实掌握微服务架构技术。
缘起
“物之所至者,志亦至焉;志之所至者,礼亦至焉;礼之所至者,乐亦至焉;乐之所至
者,哀亦至焉。”
—楚简《民之父母》
2008 年,在一次软件架构设计高端课程中,有人将中国传统的“五至”与软件工程做了形象
的类比,提到从事软件开发工作的工程师要“以物为本”。这次课程学习让我印象深刻,也让刚
刚从事软件开发工作的我第一次对“架构”这个词有了直观而深刻的认识,这次课程学习成了我
后来的架构师之路的灯塔。
在“五至”中,对“物、志、礼”进行了明确的排序:先有物,而后有志,最后有礼,所以
前 言
? VII ?
重点是“物”。我们把这种思想对应到软件工程的项目实践中,可以这样理解:物就是最终的交
付物,即软件产品;志对应项目的利益相关人;而礼则对应项目的过程管理。这样的排序不无道
理,在项目实践过程中,应该以最终的交付物为中心,所以我们必须重视架构设计,只有经过完
善的架构设计,才能呈现最好的软件产品。在项目的初期就要做好架构设计,达到“物之所至”;
协调项目的利益相关方,达成共识,达到“志亦至焉”;在项目的进行过程中,做好项目管理和
流程监控,达到“礼亦至焉”。
由上可知,软件架构是决定软件工程成败的首要因素,架构之道就是面对不同的问题域找到
最佳的技术实现方案。在软件工程中,技术架构同时受到组织、流程管理的影响,然而软件产品
最终能否成功仍然需要“以物为本”。
与时俱进
纵观计算机产业,过去的半个世纪,遵从摩尔定律的规律,计算力一直保持着大跨度的提高。
1956 年,英特尔创始人戈登·摩尔提出,集成电路的集成度每两年会翻一番;而后这个周期缩短
到18 个月,微处理器的性能每隔18 个月提高1 倍。然而,硅芯片已逼近物理和经济成本上的极
限,许多专业人士纷纷预测,摩尔定律在不久的将来会失效。界时,我们会面临CPU 性能提升放
缓,计算力增长势微的局面。同时云计算、大数据、物联网、边缘计算、人工智能等技术的进一
步成熟所产生的海量数据,却加大了对后端数据中心计算力的需求。
数字化经济的快速发展和云计算给底层IT 系统带来的巨大变革正是当下微服务架构快速发展
的时代背景。Gartner 预计,从2018 年到2022 年,PaaS 将成为未来的主流平台交付模式,而PaaS
平台需要更加灵活的云原生应用架构做技术支撑,微服务架构正是云原生架构落地的关键技术。
正所谓“大道至简”,微服务本身是一个化繁为简的过程,它采用细粒度的分布式架构模式,
通过系统化的思考方式,将纷繁复杂的业务逻辑映射到底层技术。在软件构建方面,微服务倾向
于使用面向服务和领域驱动设计(Domain Driven Design)的方法论,将现实中的问题投影到对象
的世界。“抽象、分解、扩展、复用”是常见的微服务构建系统的内功心法。然而软件开发没有
“银弹”,架构设计还要从使用、性能、成本、效率、团队、收益等多方面权衡(Trade-off),
进行综合考虑。
微服务架构的目标是,将业务与技术的复杂度进行分离,使业务更专注于实现对客户的价值
交付,而将非功能需求封装在平台或者底层SDK 中。目前在企业的应用开发中,Spring Boot 和
微服务架构深度解析:原理、实践与进阶
? VIII ?
Spring Cloud 平台作为微服务的技术开发框架,依然占据主流地位;而伴随容器和Kubernetes 平台
的崛起,结合自动化和DevOps 持续交付流程,微服务可以显著提升应用交付的效率和产品的质
量,此外。微服务还有如下优势:
? 更加快速地响应业务需求。
? 可提升应用的开发效率。
? 可满足对云原生的支持。
? 可满足系统的弹性、扩展性的需求。
? 容错性及生产就绪特性可保证服务的高可用。
? 有标准化的服务实现和交付方式。
? 基于“不可变基础设施”模式,可以减少环境因素的影响。
? 可提升系统性能及资源利用率。
传统粗放式的开发和运维方式将逐渐被取代,而更加高效、智能化、自动化的开发和运维方
式将使每个人从中获益。当前,微服务和云原生应用架构还在快速演进之中,其间充满了机遇和
挑战。作为软件从业人员,面对技术的更新迭代,我们唯有整装待发,才能与时俱进。
关于本书
本书的原理篇将深入讲解当前微服务架构的理念和方法论;实践篇主要讲解Spring Boot 和
Spring Cloud 微服务框架体系;进阶篇关注微服务发展的技术趋势。本书既涵盖了我多年在传统电
信企业中积累的分布式架构设计经验,也涵盖了互联网金融行业的前沿技术实践;本书既有我在
大型项目中的经历分享和痛点复盘,也有开源软件的案例介绍,以及当下微服务技术趋势的深度
剖析和预测。在本书的代码案例中,使用的是Spring Boot 1.5.11,在进阶篇中使用了Spring Boot 2.x,
这两种版本在使用和配置方面有诸多不同,并且其中一些功能仅支持JDK1.8 及以上版本,读者在
阅读中需要注意。
内容结构
本书在结构上从3 个层次深入解读微服务架构,希望读者能够循序渐进地深入了解微服务架
构的理论及技术实践;当然,具备一定微服务架构经验的工程师也可以根据需要选择性地阅读。
前 言
? IX ?
? 原理篇
原理篇主要讲解微服务的概念、微服务与云原生的关系、微服务的主要特性及设计哲学、采
用微服务的前提、微服务构建的理论基础及基本原则,以及领域驱动设计和微服务构建方法论、
DevOps 方法论等相关知识。
? 实践篇
实践篇主要对微服务架构落地的脚手架、关键技术、系统集成、数据架构、持续交付、服务
治理监控等重要技术话题展开讲解。另外,针对初学者对Spring Boot 和Spring Cloud 体系“入门
容易、精通难”的问题,实践篇中结合框架源码详细解构了Spring Boot 的框架底层运行机制,并
具体介绍了Spring Cloud 核心治理组件及其工作原理,还会讲解如何基于开源软件做扩展性开发。
? 进阶篇
进阶篇主要介绍函数式编程、响应式微服务架构设计原理、常用的响应式编程框架、Spring
Boot 2 新特性,讲解Kubernetes 工作原理、微服务与云原生生态的技术融合演进、微服务未来的
技术发展趋势。
由于我在编写本书的同时需要兼顾工作,时间和精力有限,书中难免有不足之处,恳请广大
读者批评指正。
致谢
首先感谢工作中的各位同事,感谢生活中的朋友,感谢宜信公司的高蕾涵同学,感谢电子工
业出版社董英老师的鼓励和帮助,因为你们我才有动力完成这本书。最后,谨以此书献给我的妻
子和家人,感谢你们对我工作的大力支持!