日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

消息队列的pull与push模式理解

發(fā)布時間:2024/1/1 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息队列的pull与push模式理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

錯誤理解

之所以將這個標(biāo)題,定義為錯誤理解,原因就是無法真正的說服自己;

消息隊列的模式有兩種pull與push.先說說我之前的理解:

  • pull模式指,客戶端連接上broker之后,主動發(fā)起方法調(diào)用獲取遠(yuǎn)程的結(jié)果,說的直白一點就是一次RPC調(diào)用,即同步方法調(diào)用;
  • push模式:

    客戶端與broker建立連接,當(dāng)有消息進(jìn)入broker,broker進(jìn)行消息推送至所有的連接客戶端,即異步方法調(diào)用;但是真正的實現(xiàn)中broker一般是很難維護(hù)這么多長連接,那么它又是如何實現(xiàn)push的呢?

activemq的pull與push模式實現(xiàn)方式

今天有時間,于是打開了activemq 的5.14.x的代碼,一探究竟。對于activemq的代碼我不作描述,本文主是為了糾正思想。對于消息隊列pull與push模式的實現(xiàn)方式如下:

  • pull模式

    客戶端(指一個connection,一般情況指一個tcp的連接建立)連接到broker之后,啟動一個線程,這個線程的任務(wù)就是循環(huán)調(diào)用方法從broker中拉取相應(yīng)的消息至本地。如果是同步方法調(diào)用獲取則將相應(yīng)的消息存放在本地內(nèi)存中,當(dāng)同步方法消費消息時,則從該內(nèi)存區(qū)中直接獲取相應(yīng)的消息進(jìn)行消費;

  • push模式

    客戶端連接到broker之后,啟動一個線程,這個線程的任務(wù)就是循環(huán)調(diào)用方法從broker中拉取相應(yīng)的消息至本地。如果是異步方法調(diào)用,則直接調(diào)用監(jiān)聽器方法,間接調(diào)用業(yè)務(wù)消費消息的方法,而不使用本地內(nèi)存進(jìn)行消息的緩存;所以這里的異步只是客戶端的異步,而非broker的主動推送。通過這種方式既能解決多客戶端的連接,也能解決類似服務(wù)端的push型的消息推送。在互聯(lián)網(wǎng)中這種實現(xiàn)才具有普便性,因為這種方式即解決了性能問題又解決了異步消息的需求。

通過對于pull與push的模式對比,可以非常清晰的理解如下問題:

  • 為什么在互聯(lián)網(wǎng)上大吞吐量的消息隊列都是采用pull模式,而非broker push模式?
  • 為什么采用broker push模式,由于消費端的性能會影響整個消息隊列服務(wù)器的性能?
  • 為什么采用broker push模式,容易造成broker的消息積壓?

總結(jié)

對于網(wǎng)絡(luò)的理解沒有深刻認(rèn)識,就會造成一種想當(dāng)然的認(rèn)識,然后自己就會進(jìn)行一個誤區(qū),以至于問題無法解決。那么換一個思路則山重水復(fù)疑無路,柳暗花明又一村。

思路決定出路…

總結(jié)

以上是生活随笔為你收集整理的消息队列的pull与push模式理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。