微服务架构设计模式 | 第3章 微服务架构中的进程间通信

2021-08-13  本文已影响0人  多氯环己烷

前言

这是一本关于微服务架构设计方面的书,这是本人阅读的学习笔记。首先对一些符号做些说明:

()为补充,一般是书本里的内容;
[]符号为笔者笔注;

微服务架构将应用程序构建为一组服务,这些服务必须经常协作才能处理各种外部请求。而服务的实例通常是在多台机器上运行的进程,所以它们必须使用进程间通信进行交互。

当前有多种进程间通信机制,比较流行的是REST(使用JSON)。选择合适的进程间通信机制是一个重要的架构决策,它影响应用程序的可用性。


1. 微服务架构中的进程间通信概述

进程间通信技术有:基于同步请求/响应、异步的基于消息的通信机制等。

1.1 交互方式的两个维度

交互方式的两个维度

1.2 交互方式的类型

1.3 API的演化

1.4 消息的格式

消息格式会影响进程间通信的效率、API的可用性和可演化新。使用跨语言的消息格式尤为重要;

2. 基于同步远程过程调用模式的通信

2.1 远程过程调用RPI

指客户端使用同步的远程过程调用协议(如REST)来调用服务。

远程过程调用工作原理

图解:客户端业务逻辑调用代理接口,这个接口由远程过程调用代理适配器类实现。远程过程调用代理向服务器发送请求,该请求由远程过程调用服务器适配器类处理,该类通过接口调用服务的业务逻辑。然后它将恢复发送回远程过程调用代理,该代理将结果返回给客户端的业务逻辑。

2.2 REST通信协议的特点及优缺点

REST是一种(总是)使用HTTP协议的进程间通信机制。

特点

好处

弊端

2.3 gRPC通信协议的特点及优缺点

gRPC是一个用于编写跨语言客户端和服务端的框架,是一种二进制协议。

特点

好处

弊端

2.4 同步通信下的局部故障风险

客户端和服务端是独立的进程,服务端很可能无法在有限的时间内对客户端的请求作出响应。

同步通信下的局部故障风险

图解:当Order Service无响应时,OrderServiceProxy将无限期地阻塞,等待响应。会消耗时间、浪费线程等资源。最终API Gateway将资源消耗,无法处理请求,整个API不可用。

解决方法是

2.5 解决局部故障的思路与方法

2.6 应用层服务发现模式

服务及其客户直接与服务注册表交互;

应用层服务发现模式工作原理

2.7 平台层服务发现模式

通过部署基础设施来处理服务发现;

平台层服务发现模式工作原理

3. 基于异步消息模式的通信

使用消息机制时,服务之间的通信采用异步交换消息的方式完成。

基于消息机制的应用程序通常采用消息代理;另一种选择是使用无代理架构。

3.1 关于消息

消息由消息头部和消息主体组成;

3.2 关于消息通道

消息通道工作原理

有以下两种类型的消息通道:

3.3 使用消息机制实现交互方式

介绍下面四种交互方式的消息机制:

实现请求/响应交互方式工作原理图

3.4 为基于消息机制的服务API创建API规范

服务的异步API规范必须制定消息通道的名称、通过每个通道交换的消息类型及其格式。

服务的异步API

3.5 无代理消息的利弊

在无代理的架构中,服务可以直接交换信息。

好处

弊端

举例

无代理与基于代理的架构

3.6 基于代理消息的利弊

消息代理是所有消息的中介节点;发送方将消息写入消息代理,消息代理将消息发送给接收方。

好处

弊端

举例

每个消息代理都有自己的特色

3.7 选择消息代理需要考虑的因素

3.8 处理并发和消息顺序

问题描述:在横向扩展多个消息接收方的实例的情况下,消息的顺序可能会错位。

解决方法:使用分片消息通道扩展接收方;

使用分片消息通道扩展接收方工作原理图
图解

3.9 处理重复消息

问题描述:客户端、网络或消息代理的故障可能导致消息被多次传递。

有以下两种解决办法:

使用message id跟踪消息并丢弃重复消息

3.10 事务性消息

事务日志拖尾模式

3.11 消息相关的类库和框架

服务需要使用库来发送和接收消息。

有两种方法:

4. 使用异步消息提高可用性

采用同步通信机制处理请求,会对系统的可用性带来影响。因此,应尽可能选择异步通信机制来处理服务之间的调用。

4.1 同步消息会降低可用性

同步交互方式提交订单流程图

4.2 消除同步交互的方法

复制数据提交订单流程图 先返回响应,再完成处理订单流程

5. 本章小结

最后

\color{blue}{\rm\small{新人制作,如有错误,欢迎指出,感激不尽!}}

\color{blue}{\rm\small{欢迎关注我,并与我交流!}}

\color{blue}{\rm\small{如需转载,请标注出处!}}

上一篇 下一篇

猜你喜欢

热点阅读