在第一篇中定义了什么是分布式系统,可见消息是相当重要的。
网络
分布式系统交互模型分为:异步
同步:分布式
消息发送耗时有一个下限和上限性能
每一个进程有一个本地时钟,偏移率在一个已知范围内.net
异步:中间件
消息发送耗时没有上限blog
进程本地时钟偏移率是任意的队列
通讯范式:进程
进程间通讯ci
远程调用
间接通讯
消息的性能:
有效性,发送的消息最终都到达接收消息缓冲区
完整性,接收到的消息和发送的消息一致,没有消息被传递两次
远程调用和进程间通讯都是同步的。但属于不一样层:
1.应用、服务 |
2.远程调用和间接通讯 |
3.底层进程通讯原语、套接字、消息传递 send, recieve |
4.UDP和TCP |
2和3处于中间件层。
请求-应答模型须要考虑的故障:
发送的消息丢失(超时重发)
响应未到达,客户端重发(过滤重复请求)
响应的消息丢失(幂等服务&保存上一次响应)
间接通讯的目的是空间和时间上的解耦,应对变化快的网络条件和下游模块。
时间耦合 | 时间解耦 | |
空间耦合 | RPC | 消息队列 |
空间解耦 | 组播 | 间接通讯范型 |