微服务架构实战——基于Spring Boot、Spring Cloud、Dockerpdf电子书提取码

简介: 1.通过Spring Boot、Spring Cloud、Docker等技术构建微服务体系。 2.精简而完整的案例分析展示实现微服务架构的完整蓝图。 3.结合业务场景,通过全面案例给出工具在构建微服务架构中的工程实战。 4.作者有近10年软件行业从业经验,主持和参与过多个大型企业级应用和移动互联网系统的开发和管理工作,北风网特邀讲师,讲授系统架构与技术管理相关课程。

近年来,微服务架构(Microservices Architecture)已经成为一种主流的软件开发方法论,它把一种特定的软件应用设计方法描述为能够独立部署的服务套件。所谓微服务(Microservices),就是一些具有足够小的粒度、能够相互协作且自治的服务体系。每个微服务都比较简单,仅关注于完成一个功能并能很好地完成该功能,而这里的功能代表的是一种业务能力。构建微服务体系需要一套完整的方法论和工程实践,而微服务架构的提出代表的就是实现微服务体系的架构模式,即为我们提供了这些方法论和工程实践。从这个角度讲,微服务架构需要我们理解、学习并应用到日常开发过程中去。

微服务架构基于分布式系统,同时借助了面向服务架构和企业服务总线的设计理念并做了改进和优化,从而形成一种新的架构体系。微服务架构一方面具备技术、业务和组织上的优势,另一方面也在技术架构和研发过程中存在巨大挑战。微服务架构的实施需要具备一定的前提,而构建微服务架构是一项系统工程,涉及服务建模、实现技术、基础设施和研发过程等各个维度。在实施过程中,也需要根据现有系统的具体情况采用合适的实施模式。

本章作为全书的开篇,对微服务设计原理与架构做了全面介绍。本书的关注点是微服务架构的实现技术,本章也会梳理目前市面上主流的微服务技术体系并完成技术选型。在本章的最后,我们还会给出全书的组织架构。

顾名思义,微服务区别与其他服务体系的关键在于它的“微”特性。“微”是小的同义词,所以容易让人联想到微服务都是小型的服务,这是微服务的第一个特性。微服务之间只有通过相互的协作和交互才能构成完整的服务体系,而这种协作和交互机制也是微服务区别其他服务体系的另一个主要方面。

所谓分布式系统(Distributed System)是指硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。从这个定义中可以看出,分布式系统包含两个区别于单块系统(Monolith System)的本质性特征:一个是网络,分布式系统的所有组件都位于网络之中,对于互联网应用而言,则位于更为复杂的互联网环境中;另一个是通信和协调,与单块系统不同,位于分布式系统中的各个组件只有通过约定、高效且可靠的通信机制进行相关协作,才能完成某一项业务功能。这些特征是我们在设计和实现分布式系统时首先需要考虑的。

分布式系统相较于单块系统在具备一定优势的同时,也存在一些我们不得不考虑的特性,包括但不限于网络传输的三态性、系统之间的异构性、数据一致性、服务的可用性等。以上问题是分布式系统的基本特性,我们无法避免,只能想办法进行利用和管理,这就给我们设计和实现分布式系统提出了挑战。微服务架构本质上也是一种分布式系统,但在遵循通用分布式特性的基础上,微服务架构还表现出一定的特殊特性。下面将围绕微服务架构的这些特殊特性展开讨论。

Martin Fowler指出,微服务架构具有以下特点。

(1)服务组件化

所谓组件(Component)是一种可独立替换和升级的软件单元。在我们日常开发过程中,可能会设计和使用很多组件,这些组件可能服务于系统内部,也可能存在于系统所运行的进程之外。而服务就是一种进程外组件,服务之间利用诸如RPC(Remote Procedure Call,远程过程调用)等通信机制完成交互。服务组件化的主要目的是服务可以独立部署。如果某个应用程序是由一个运行在独立进程中的很多组件组成,那么对任何一个组件的改变都将导致整个应用程序必须重新部署。但是如果把应用程序拆分成很多服务,通常情况下,只需要重新部署那个改变的服务即可。在微服务架构中,每个服务运行在其独立的进程中,服务与服务之间采用轻量级通信机制互相沟通。

版权:人民邮电出版社