前言

微服务架构已成为现代应用程序开发的事实上的选择。虽然它解决了某些问题,但它不是灵丹妙药。它有几个缺点,在使用这种架构时,必须解决许多问题。这就需要学习这些问题中的常见模式并用可重用的解决方案来解决它们。因此,需要讨论微服务的设计模式。在深入研究设计模式之前,我们需要了解微服务架构的构建原则:

可扩展性

可用性

弹性

独立、自主

去中心化治理

故障隔离

自动配置

应用所有这些原则会带来一些挑战和问题。那么该怎么学呢,这份文档是绝对不容错过的,其中描述了如何解决我们将面临的众多架构设计挑战,包括如何管理分布式数据,还介绍了如何将单体应用程序重构为微服务架构,涵盖44个架构设计模式,系统解决服务拆分、事务管理、查询和跨服务通信等难题。而且并不是鼓吹微服务架构的宣言,作者既介绍了微服务的原理、原则,又详细讲解了实际落地中的架构设计模式,将使你理解微服务架构、它的好处和弊端,以及应该何时使用微服务架构。本书将帮助你建立微服务的全局视野,并学会在纷繁复杂的情况下做出正确的架构选择和取舍。

主要内容安排

本文主要由13章组成。

■第1章描述了所谓“单体地狱”的症状,当单体应用程序超出其架构时会出现这种问题,这可以通过采用微服务架构来规避。这一-章还概述了微服务架构模式语言,这也是本文大部分内容的主题。

第2章解释了为什么软件架构很重要,描述了可用于将应用程序分解为服务集合的模式,并解释了如何克服在此过程中遇到的各种障碍。

第3章介绍了微服务架构中强大的进程间通信的几种模式,解释了为什么异步和基于消息的通信通常是最佳选择。

第4章介绍如何使用Saga模式维护服务间的数据一致性。 Saga 是通过传递异步消息的方式进行协调的一系列本地事务。

第5章介绍如何使用领域驱动设计(DDD)的聚合和领域事件等模式为服务设计业务逻辑。

第6章以第5章为基础,解释了如何使用事件溯源模式开发业务逻辑,事件溯源模式是一种以事件为中心的设计思路,用来构建业务逻辑和持久化领域对象。

第7章介绍如何使用API组合模式或命令查询职责隔离(CQRS)模式,这两个模式用来实现查询分散在多个服务中的数据。

第8章介绍了处理来自各种外部客户端请求的外部API模式,例如移动应用程序、基于浏览器的JavaScript应用程序和第三方应用程序。

第9章是关于微服务自动化测试技术的两章中的第一章,介绍了重要的测试概念,例如测试金字塔,描述了测试套件中每种测试类型的相对比例,还展示了如何编写构成测试金字塔基础的单元测试。

第10章以第9章为基础,描述了如何在测试金字塔中编写其他类型的测试,包括集成测试、消费者契约测试和组件测试等。

第11章介绍了开发生产就绪服务的各个方面,包括安全性、外部化配置模式和服务可观测性模式。服务可观测性模式包括日志聚合、应用指标和分布式追踪。

第12章介绍了可用于部署服务的各种部署模式,包括虚拟机、容器和Serverless模式。还介绍了使用服务网格的好处,服务网格是在微服务架构中处理服务间通信的一个网络软件层。

第13章介绍了如何通过采用绞杀者( Strangler)模式逐步将单体架构重构为微服务架构,绞杀者模式是指以服务形式实现新功能,从单体中提取模块将其转换为服务。

乘风破浪会有时,直挂云帆济沧海。