本篇介绍 RPC(分布式远程过程调用) 和 MQ(消息队列) 的对比.
RPC(分布式远程过程调用) 和 MQ(消息队列) 的 应用场景 和区别
系统结构:
|
|
- 在架构上,RPC和Message的差异点是:
- Message有一个中间结点Message Queue,可以把消息存储。
消息队列 的使用场景:
|
|
区别:
消息机制: 用于端到端的延迟通信;
在RPC机制下,
用于接收数据的进程必须在数据发送时处于执行状态。
如果在消息发送过程中,接收进程死掉了,则数据将不能再传输。RPC: 用于端到端的同步通信。
相反,在消息传递机制下,
则可以在服务进程死掉后,仍然可以发送消息,而不必因为此时服务进程没有接收消息而阻塞或重发消息。
因为,基于消息机制时,消息被放置在一个消息队列中,而且服务进程可以在任何时候取得所属自己的消息。
因此,在发送消息时,服务进程是否在执行不再重要。
消息机制 和 RPC 各自特点:
- RPC机制的特点:
提供一个较高层次上的通信抽象,更完全地隐藏应用分布的实质。
尽可能地优化客户和服务器之间的交互,因为这种机制直接的请求/应答协议支持。
客户在等待一个服务应答时,只是简单地等待。
- 消息机制的特点:
客户在等待对方进程的应答时,可以自由的执行其他的操作。
允许对一个请求发多个应答或多个请求发一个应答。
适合具有较长交易周期的应用。
可通过以任何顺序从消息队列中取走消息、的形式,来支持优先级和负载均衡。
可支持容错。
主要用于支持大型系统和分布范围很广的分布式系统。