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