您好,登錄后才能下訂單哦!
一般,我們認為消息中間件是指支持與保障分布式應用程序之間同步/異步收發消息的中間件。消息是分布式應用之間進行數據交換的基本信息單位,分布式應用程序之間的通信接口由消息中間件提供。其中,異步方式指消息發送方在發送消息時不必知道接收方的狀態,更無需等待接收方的回復,而接收方在收到消息時也不必知道發送方的目前狀態,更無需進行同步的消息處理,它們之間的連接完全是松耦合的,通信是非阻塞的,這種異步通信方式是由消息中間件中的消息隊列及其服務機制保障的。一般地,實時性要求較高的業務采用同步方式處理,實時性要求不高的業務采用異步方式進行處理。
消息中間件已廣泛應用于各類分布式應用系統,消息中間件開始向發布/訂閱架構轉變,并成為企業應用集成中間件的一種核心機制,而基于發布/訂閱架構的消息中間件通常稱為發布/訂閱消息中間件或消息代理。目前比較典型的消息中間件包括IBM WebSphere MQSeries、阿里的RocketMQ和Kafka等。
消息中間件是在消息的傳輸過程中保存信息的容器。消息中間件再將消息從它的源中繼到它的目標時充當中間人的作用。隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它為止,當然,消息隊列保存消息也是有期限的。
消息發送者可以發送一個消息而無須等待響應。消息發送者將消息發送到一條虛擬的通道(主題或隊列)上,消息接收者則訂閱或是監聽該通道。一條信息可能最終轉發給一個或多個消息接收者,這些接收者都無需對消息發送者做出同步回應。整個過程都是異步的。
主要體現在如下兩點:
(1)發送者和接受者不必了解對方、只需要確認消息
(2)發送者和接受者不必同時在線
比如在線交易系統為了保證數據的最終一致,在支付系統處理完成后會把支付結果放到消息中間件里通知訂單系統修改訂單支付狀態。兩個系統通過消息中間件解耦。
消息傳遞服務模型如下圖所示
點對點模型用于消息生產者和消息消費者之間點到點的通信。消息生產者將消息發送到由某個名字標識的特定消費者。這個名字實際上對于消費服務中的一個隊列(Queue),在消息傳遞給消費者之前它被存儲在這個隊列中。隊列消息可以放在內存中也可以是持久的,以保證在消息服務出現故障時仍然能夠傳遞消息。
傳統的點對點消息中間件通常由消息隊列服務、消息傳遞服務、消息隊列和消息應用程序接口API組成,其典型的結構如下圖所示。
特點:
(1)每個消息只用一個消費者
(2)發送者和接受者沒有時間依賴
(3)接受者確認消息接受和處理成功
示意圖如下所示:
發布者/訂閱者模型支持向一個特定的消息主題生產消息。0或多個訂閱者可能對接收來自特定消息主題的消息感興趣。在這種模型下,發布者和訂閱者彼此不知道對方。這種模式就好比是匿名公告板。這種模式被概況為:多個消費者可以獲得消息,在發布者和訂閱者之間存在時間依賴性。發布者需要建立一個訂閱(subscription),以便能夠消費者訂閱。訂閱者必須保持持續的活動狀態及接收消息,除非訂閱者建立了持久的訂閱。在這種情況下,在訂閱者未連接時發布的消息將在訂閱者重新連接時重新發布。如下圖所示:
發布/訂閱模型特性
(1)每個消息可以有多個訂閱者
(2)客戶端只有訂閱后才能接收到消息
(3)持久訂閱和非持久訂閱
注意:
(1)發布者和訂閱者有時間依賴
接受者和發布者只有建立訂閱關系才能收到消息
(2)持久訂閱
訂閱關系建立后,消息就不會消失,不管訂閱者是否都在線
(3)非持久訂閱
訂閱者為了接受消息,必須一直在線。
當只有一個訂閱者時約等于點對點模式
網站用戶注冊,注冊成功后會過一會發送郵件確認或者短息
把日志進行集中收集,用于計算PV、用戶行為分析
(1)將數據從源頭復制到多個目的地,一般是要求順序或者保證因果序列
(2)用于跨機房數據傳輸、搜索、離線數據計算等。
(1)把消息中間件當成可靠的消息暫存地
(2)定時進行消息投遞,比如模擬用戶秒殺訪問,進行系統性能壓測
(1)緩存數據同步更新
(2)往應用推送數據
比如更新本地緩存:
消息生產者將消息發送給消息傳遞服務,消息傳遞服務又將消息推給消息消費者。
消費者請求消息服務接受消息,消息生產者從消息中間件拉該消息。
push推消息和pull拉消息的區別
下面的是我的公眾號二維碼圖片,歡迎關注。文章轉載請注明出處www.leexide.com
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。