3.1.1 交互方式

有多种客户端与服务的交互方式:

维度一:

  • 一对一: 每个客户端请求由一个服务实例来处理
  • 一对多: 每个客户端请求由多个服务实例来处理

维度二:

  • 同步模式: 客户端请求需要服务端实时响应, 客户端等待响应时可能导致堵塞
  • 异步模式: 客户端请求不会阻塞进程, 服务端的响应可以是非实时的

image.png

一对一交互方式类型说明:

image.png

一对多交互方式类型说明:

image.png

3.1.2 在微服务架构中定义 API

微服务中的 API 和接口:

  • 客户端结构可以调用的方法
    • 方法名
    • 参数
    • 返回类型
  • 服务发布的事件
    • 类型
    • 一组字段

使用接口定义语言 (IDL).

image.png

API 的形式取决于进程间通信机制:

  • 消息机制: 消息通道, 消息类型, 消息格式
  • HTTP: URL, HTTP 动词, 请求, 响应

3.1.3 API 的演化

语义化版本控制

使用语义化版本控制规范来管理 API 版本:

版本号组成: major.minor.patch

image.png

使用版本号的地方:

  • REST API: 可以使用主要版本作为 URL 路径的第一个元素
  • 消息机制: 在其发布的消息中包含版本号

进行次要并且向后兼容的改变

向后兼容的更改是对 API 的附加更改或功能增强:

  • 添加可选属性
  • 向响应添加属性
  • 添加新操作

健壮性原则 (鲁棒性): 严于律己, 宽以待人.

进行主要并且不向后兼容的改变

需要同时支持新旧版本 API.

  • 旧版本和新版本之间进行转换的逻辑
  • API Gateway

3.1.4 消息的格式

基于文本的消息格式

  • json
  • xml

二进制消息格式

  • protocol buffers
  • avro

使用 IDL.

image.png