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