微服务架构深度解析:原理、实践与进阶
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的IT企业,纷纷采用微服务架构构建系统。在过去几年里,DevOps、云原生、面向演进式架构等理念已经深入人心,围绕微服务生态也出现了大量的组件、框架、工具,这很好地支撑了海量的数据增长和用户业务需求的快速变化。本书将从微服务理论开始介绍,结合作者多年的工作经验,深入讲解分布式系统和微服务架构,从而帮助技术人员切实掌握微服务架构技术。

缘起

“物之所至者,志亦至焉;志之所至者,礼亦至焉;礼之所至者,乐亦至焉;乐之所至者,哀亦至焉。”

——楚简《民之父母》

2008年,在一次软件架构设计高端课程中,有人将中国传统的“五至”与软件工程做了形象的类比,提到从事软件开发工作的工程师要“以物为本”。这次课程学习让我印象深刻,也让刚刚从事软件开发工作的我第一次对“架构”这个词有了直观而深刻的认识,这次课程学习成了我后来的架构师之路的灯塔。

在“五至”中,对“物、志、礼”进行了明确的排序:先有物,而后有志,最后有礼,所以重点是“物”。我们把这种思想对应到软件工程的项目实践中,可以这样理解:物就是最终的交付物,即软件产品;志对应项目的利益相关人;而礼则对应项目的过程管理。这样的排序不无道理,在项目实践过程中,应该以最终的交付物为中心,所以我们必须重视架构设计,只有经过完善的架构设计,才能呈现最好的软件产品。在项目的初期就要做好架构设计,达到“物之所至”;协调项目的利益相关方,达成共识,达到“志亦至焉”;在项目的进行过程中,做好项目管理和流程监控,达到“礼亦至焉”。

由上可知,软件架构是决定软件工程成败的首要因素,架构之道就是面对不同的问题域找到最佳的技术实现方案。在软件工程中,技术架构同时受到组织、流程管理的影响,然而软件产品最终能否成功仍然需要“以物为本”。

与时俱进

纵观计算机产业,过去的半个世纪,遵从摩尔定律的规律,计算力一直保持着大跨度的提高。1956年,英特尔创始人戈登·摩尔提出,集成电路的集成度每两年会翻一番;而后这个周期缩短到18个月,微处理器的性能每隔18个月提高1倍。然而,硅芯片已逼近物理和经济成本上的极限,许多专业人士纷纷预测,摩尔定律在不久的将来会失效。界时,我们会面临CPU性能提升放缓,计算力增长势微的局面。同时云计算、大数据、物联网、边缘计算、人工智能等技术的进一步成熟所产生的海量数据,却加大了对后端数据中心计算力的需求。

数字化经济的快速发展和云计算给底层IT系统带来的巨大变革正是当下微服务架构快速发展的时代背景。Gartner预计,从2018年到2022年,PaaS将成为未来的主流平台交付模式,而PaaS平台需要更加灵活的云原生应用架构做技术支撑,微服务架构正是云原生架构落地的关键技术。

正所谓“大道至简”,微服务本身是一个化繁为简的过程,它采用细粒度的分布式架构模式,通过系统化的思考方式,将纷繁复杂的业务逻辑映射到底层技术。在软件构建方面,微服务倾向于使用面向服务和领域驱动设计(Domain Driven Design)的方法论,将现实中的问题投影到对象的世界。“抽象、分解、扩展、复用”是常见的微服务构建系统的内功心法。然而软件开发没有“银弹”,架构设计还要从使用、性能、成本、效率、团队、收益等多方面权衡(Trade-off),进行综合考虑。

微服务架构的目标是,将业务与技术的复杂度进行分离,使业务更专注于实现对客户的价值交付,而将非功能需求封装在平台或者底层SDK中。目前在企业的应用开发中,Spring Boot和Spring Cloud平台作为微服务的技术开发框架,依然占据主流地位;而伴随容器和Kubernetes平台的崛起,结合自动化和DevOps持续交付流程,微服务可以显著提升应用交付的效率和产品的质量,此外。微服务还有如下优势:

● 更加快速地响应业务需求。

● 可提升应用的开发效率。

● 可满足对云原生的支持。

● 可满足系统的弹性、扩展性的需求。

● 容错性及生产就绪特性可保证服务的高可用。

● 有标准化的服务实现和交付方式。

● 基于“不可变基础设施”模式,可以减少环境因素的影响。

● 可提升系统性能及资源利用率。

传统粗放式的开发和运维方式将逐渐被取代,而更加高效、智能化、自动化的开发和运维方式将使每个人从中获益。当前,微服务和云原生应用架构还在快速演进之中,其间充满了机遇和挑战。作为软件从业人员,面对技术的更新迭代,我们唯有整装待发,才能与时俱进。

关于本书

本书的原理篇将深入讲解当前微服务架构的理念和方法论;实践篇主要讲解Spring Boot和Spring Cloud微服务框架体系;进阶篇关注微服务发展的技术趋势。本书既涵盖了我多年在传统电信企业中积累的分布式架构设计经验,也涵盖了互联网金融行业的前沿技术实践;本书既有我在大型项目中的经历分享和痛点复盘,也有开源软件的案例介绍,以及当下微服务技术趋势的深度剖析和预测。在本书的代码案例中,使用的是Spring Boot 1.5.11,在进阶篇中使用了Spring Boot 2.x,这两种版本在使用和配置方面有诸多不同,并且其中一些功能仅支持JDK1.8及以上版本,读者在阅读中需要注意。

内容结构

本书在结构上从3个层次深入解读微服务架构,希望读者能够循序渐进地深入了解微服务架构的理论及技术实践;当然,具备一定微服务架构经验的工程师也可以根据需要选择性地阅读。

原理篇

原理篇主要讲解微服务的概念、微服务与云原生的关系、微服务的主要特性及设计哲学、采用微服务的前提、微服务构建的理论基础及基本原则,以及领域驱动设计和微服务构建方法论、DevOps方法论等相关知识。

实践篇

实践篇主要对微服务架构落地的脚手架、关键技术、系统集成、数据架构、持续交付、服务治理监控等重要技术话题展开讲解。另外,针对初学者对Spring Boot和Spring Cloud体系“入门容易、精通难”的问题,实践篇中结合框架源码详细解构了Spring Boot的框架底层运行机制,并具体介绍了Spring Cloud核心治理组件及其工作原理,还会讲解如何基于开源软件做扩展性开发。

进阶篇

进阶篇主要介绍函数式编程、响应式微服务架构设计原理、常用的响应式编程框架、Spring Boot 2新特性,讲解Kubernetes工作原理、微服务与云原生生态的技术融合演进、微服务未来的技术发展趋势。

由于我在编写本书的同时需要兼顾工作,时间和精力有限,书中难免有不足之处,恳请广大读者批评指正。

致谢

首先感谢工作中的各位同事,感谢生活中的朋友,感谢宜信公司的高蕾涵同学,感谢电子工业出版社董英老师的鼓励和帮助,因为你们我才有动力完成这本书。最后,谨以此书献给我的妻子和家人,感谢你们对我工作的大力支持!

王佩华

读者服务

微信扫码回复:41238

● 获取本书配套资源

● 获取作者提供的各种共享文档、线上直播、技术分享等免费资源

● 加入本书读者交流群,与作者互动

● 获取博文视点学院在线课程、电子书20元代金券