消息隊列與RPC

消息隊列特點:

1.Message Queue把請求的壓力保存一下,逐漸釋放出來,讓處理者按照自己的節(jié)奏來處理。

2.Message Queue引入一下新的結(jié)點,讓系統(tǒng)的可靠性會受Message Queue結(jié)點的影響。

3.Message Queue是異步單向的消息。發(fā)送消息設(shè)計成是不需要等待消息處理的完成。

所以對于有同步返回需求,用Message Queue則變得麻煩了。

RPC的特點:

1.同步調(diào)用,對于要等待返回結(jié)果/處理結(jié)果的場景,RPC是可以非常自然直覺的使用方式。

2. RPC也可以是異步調(diào)用。由于等待結(jié)果,Consumer(Client)會有線程消耗。如果以異步RPC的方式使用,Consumer(Client)線程消耗可以去掉。但不能做到像消息一樣暫存消息/請求,壓力會直接傳導(dǎo)到服務(wù)Provider。

適用場合說明:

1.希望同步得到結(jié)果的場合,RPC合適。

2.希望使用簡單,則RPC;RPC操作基于接口,使用簡單,使用方式模擬本地調(diào)用。異步的方式編程比較復(fù)雜。

3.不希望發(fā)送端(RPC Consumer、Message Sender)受限于處理端(RPC Provider、Message Receiver)的速度時,使用Message Queue。

隨著業(yè)務(wù)增長,有的處理端處理量會成為瓶頸,會進行同步調(diào)用到異步消息的改造。這樣的改造實際上有調(diào)整業(yè)務(wù)的使用方式。比如原來一個操作頁面提交后就下一個頁面會看到處理結(jié)果;改造后異步消息后,下一個頁面就會變成“操作已提交,完成后會得到通知”。

不適用場合說明:

RPC同步調(diào)用使用Message Queue來傳輸調(diào)用信息。 上面分析可以知道,這樣的做法,發(fā)送端是在等待,同時占用一個中間點的資源。變得復(fù)雜了,但沒有對等的收益。

對于返回值是void的調(diào)用,可以這樣做,因為實際上這個調(diào)用業(yè)務(wù)上往往不需要同步得到處理結(jié)果的,只要保證會處理即可。(RPC的方式可以保證調(diào)用返回即處理完成,使用消息方式后這一點不能保證了。)

返回值是void的調(diào)用,使用消息,效果上是把消息的使用方式Wrap成了服務(wù)調(diào)用(服務(wù)調(diào)用使用方式成簡單,基于業(yè)務(wù)接口)

原文連接:http://oldratlee.com/post/2013-02-01/synchronous-rpc-vs-asynchronous-message

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • “ 消息隊列已經(jīng)逐漸成為企業(yè)IT系統(tǒng)內(nèi)部通信的核心手段。它具有低耦合、可靠投遞、廣播、流量控制、最終一致性等一系列...
    落羽成霜丶閱讀 4,294評論 1 41
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,648評論 19 139
  • 1. 歷史 RabbitMQ是一個由erlang開發(fā)的AMQP(Advanced Message Queue )的...
    高廣超閱讀 6,236評論 3 51
  • 1.什么是消息隊列 消息隊列允許應(yīng)用間通過消息的發(fā)送與接收的方式進行通信,當(dāng)消息接收方服務(wù)忙或不可用時,其提供了一...
    zhuke閱讀 4,631評論 0 12
  • 優(yōu)點: 1.文件結(jié)構(gòu)劃分清晰2.代碼注釋詳細(xì) 缺點: 1.ViewController應(yīng)該有一個公共父類 不太合理...
    tianlei閱讀 482評論 0 0

友情鏈接更多精彩內(nèi)容