NOTE

1.11 分布式系统通讯

1. 什么是分布式系统通讯 - 单体系统拆分成多个子系统后,子系统之间需要通讯提供完成的服务 2. 分布式系统间通讯方式 2.1. 同步通讯 - A调用B,等待结果返回 2.1.1. REST vs RPC - Restful.md - 如何设计一个RPC框架.md RPC REST -------

分布式系统创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是分布式系统通讯

  • 单体系统拆分成多个子系统后,子系统之间需要通讯提供完成的服务

2. 分布式系统间通讯方式

2.1. 同步通讯

  • A调用B,等待结果返回

2.1.1. REST vs RPC

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. 分布式系统间通讯消息格式

3.1. 文本

3.2. 二进制