3.1.1 交互方式
有多种客户端与服务的交互方式:
维度一:
- 一对一: 每个客户端请求由一个服务实例来处理
- 一对多: 每个客户端请求由多个服务实例来处理
维度二:
- 同步模式: 客户端请求需要服务端实时响应, 客户端等待响应时可能导致堵塞
- 异步模式: 客户端请求不会阻塞进程, 服务端的响应可以是非实时的
一对一交互方式类型说明:
一对多交互方式类型说明:
3.1.2 在微服务架构中定义 API
微服务中的 API 和接口:
- 客户端结构可以调用的方法
- 方法名
- 参数
- 返回类型
- 服务发布的事件
- 类型
- 一组字段
使用接口定义语言 (IDL).
API 的形式取决于进程间通信机制:
- 消息机制: 消息通道, 消息类型, 消息格式
- HTTP: URL, HTTP 动词, 请求, 响应
3.1.3 API 的演化
语义化版本控制
使用语义化版本控制规范来管理 API 版本:
版本号组成: major.minor.patch
使用版本号的地方:
- REST API: 可以使用主要版本作为 URL 路径的第一个元素
- 消息机制: 在其发布的消息中包含版本号
进行次要并且向后兼容的改变
向后兼容的更改是对 API 的附加更改或功能增强:
- 添加可选属性
- 向响应添加属性
- 添加新操作
健壮性原则 (鲁棒性): 严于律己, 宽以待人.
进行主要并且不向后兼容的改变
需要同时支持新旧版本 API.
- 旧版本和新版本之间进行转换的逻辑
- API Gateway
3.1.4 消息的格式
基于文本的消息格式
- json
- xml
二进制消息格式
- protocol buffers
- avro
使用 IDL.