NOTE
1.11 分布式系统通讯
1. 什么是分布式系统通讯 - 单体系统拆分成多个子系统后,子系统之间需要通讯提供完成的服务 2. 分布式系统间通讯方式 2.1. 同步通讯 - A调用B,等待结果返回 2.1.1. REST vs RPC - Restful.md - 如何设计一个RPC框架.md RPC REST -------
这是历史学习笔记,可能存在过时或不完整的理解。
1. 什么是分布式系统通讯
- 单体系统拆分成多个子系统后,子系统之间需要通讯提供完成的服务
2. 分布式系统间通讯方式
2.1. 同步通讯
- A调用B,等待结果返回
2.1.1. REST vs RPC
- Restful.md(关联笔记尚未公开)
- 如何设计一个RPC框架.md
| RPC | REST | |
|---|---|---|
| 思想 | 面向对象 | 面向资源 |
| 通信协议 | TCP | HTTP |
| 消息协议 | 二进制 | json |
| 性能 | 高 | 低 |
| IDL | proto。参考下面 | swagger。参考下面 |
| 客户端 | 强类型 | 弱类型 |
- 服务和客户端之间的API定义
| 操作 | RPC | REST |
|---|---|---|
| 注册 | POST /signup | POST /persons |
| 注销 | POST /resign { “personid”: “1234” } |
DELETE /persons/1234 |
| 读取用户信息 | GET /readPerson?personid=1234 | GET /persons/1234 |
| 读取用户物品列表 | GET /readUsersItemsList?personid=1234 | GET /persons/1234/items |
| 向用户物品列表添加一项 | POST /addItemToUsersItemsList { “personid”: “1234”; “itemid”: “456” } |
POST /persons/1234/items { “itemid”: “456” } |
| 更新一个物品 | POST /modifyItem { “itemid”: “456”; “key”: “value” } |
PUT /items/456 { “key”: “value” } |
| 删除一个物品 | POST /removeItem { “itemid”: “456” } |
DELETE /items/456 |
- API版本:MAJOR.MINOR.PATCH
- MAJOR:API不向后兼容
- MINIOR:API向后兼容的功能增强
- PATCH:API向后兼容的错误修复
2.2. 异步通讯
- A调用B,不等待结果直接返回
- 如何设计异步系统.md(关联笔记尚未公开)
2.3. 同步通讯 vs 异步通讯
- IO模型.md(关联笔记尚未公开)
| 同步 | 异步 | |
|---|---|---|
| 能否实时获取结果 | 能 | 否 |
| 吞吐量 | 低 | 高 |
3. 分布式系统间通讯消息格式
- 数据模型.md中的物理模型