天天看點

RPC和Message Queue對比

RPC和Message Queue對比

RPC、MQ的結構對比:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

RPC系統結構:

+----------+     +----------+

| Consumer | <=> | Provider |

+----------+     +----------+

Consumer調用的Provider提供的服務。

Message Queue系統結構:

+--------+     +-------+     +----------+

| Sender | <=> | Queue | <=> | Receiver |

+--------+     +-------+     +----------+

Sender發送消息給Queue;Receiver從Queue拿到消息來處理。

來源: <http://www.cnblogs.com/xiazh/archive/2013/03/17/2964203.html>

功能特點

在架構上,RPC和Message的差異點是,Message有一個中間結點Message Queue,可以把消息存儲。

消息的特點

  • Message Queue把請求的壓力儲存一下,逐漸釋放出來,讓處理者按照自己的節奏來處理。
  • Message Queue引入一下新的結點,讓系統的可靠性會受Message Queue結點的影響。
  • Message Queue是異步單向的消息。發送消息設計成是不需要等待消息處理的完成。

是以對于有同步傳回需求,Message Queue則方向。

PRC的特點

  • 同步調用,對于要等待傳回結果/處理結果的場景,RPC是可以非常自然直覺的使用方式。

    # RPC也可以是異步調用。

  • 由于等待結果,Consumer(Client)會有線程消耗。

如果以異步RPC的方式使用,Consumer(Client)線程消耗可以去掉。但不能做到像消息一樣暫存消息/請求,壓力會直接傳導到服務Provider。

适用場合說明

  • 希望同步得到結果的場合,RPC合适。
  • 希望使用簡單,則RPC;RPC操作基于接口,使用簡單,使用方式模拟本地調用。異步的方式程式設計比較複雜。
  • 不希望發送端(RPC Consumer、Message Sender)受限于處理端(RPC Provider、Message Receiver)的速度時,使用Message Queue。

随着業務增長,有的處理端處理量會成為瓶頸,會進行同步調用到異步消息的改造。

這樣的改造實際上有調整業務的使用方式。

比如原來一個操作頁面送出後就下一個頁面會看到處理結果;改造後異步消息後,下一個頁面就會變成“操作已送出,完成後會得到通知”。

不适用場合說明

繼續閱讀