远程调用服务(RPC)和基于消息的通信(Message Queue)对比

系统结构

RPC Message Queue
调用方式 Consumer <=> Provider Sender <=> Queue <=> Receiver
调用对象 Consumer调用的Provider提供的服务。 Sender发送消息给Queue;Receiver从Queue拿到消息来处理。

功能特点

在架构上,RPC和Message的差异点是,Message有一个中间结点Message Queue,可以把消息存储。

  • 消息的特点
    Message Queue把请求的压力保存一下,逐渐释放出来,让处理者按照自己的节奏来处理。
    Message Queue引入一下新的结点,让系统的可靠性会受Message Queue结点的影响。
    Message Queue是异步单向的消息。发送消息设计成是不需要等待消息处理的完成。
    所以对于有同步返回需求,用Message Queue则变得麻烦了。

  • PRC的特点
    同步调用,对于要等待返回结果/处理结果的场景,RPC是可以非常自然直觉的使用方式。
    RPC也可以是异步调用。
    由于等待结果,Consumer(Client)会有线程消耗。
    如果以异步RPC的方式使用,Consumer(Client)线程消耗可以去掉。但不能做到像消息一样暂存消息/请求,压力会直接传导到服务Provider。

应用

其实基于MQ和RPC的应用在之前介绍过,分别是:

  • Kafka
  • Dubbo

ps:
暂且了解到这里,以后再补充。

你可能感兴趣的:(远程调用服务(RPC)和基于消息的通信(Message Queue)对比)