發(fā)布/訂閱(Pub/Sub,即Publish/Subscribe)是分布式系統(tǒng)中用于不同組件或服務(wù)之間異步通信的一種架構(gòu)設(shè)計模式。盡管發(fā)布/訂閱基于消息隊列和事件代理等早期設(shè)計模式,但它更加靈活和可擴(kuò)展。其關(guān)鍵在于,發(fā)布/訂閱允許在系統(tǒng)的不同組件之間傳遞消息,而這些組件之間無需知道彼此的身份(即它們是解耦的)。
發(fā)布/訂閱模式的出現(xiàn)源于擴(kuò)大信息系統(tǒng)規(guī)模的必要性。在互聯(lián)網(wǎng)時代之前,甚至在互聯(lián)網(wǎng)發(fā)展的初期,系統(tǒng)大多是通過靜態(tài)方式擴(kuò)展的。然而,隨著互聯(lián)網(wǎng)的擴(kuò)張和基于Web的應(yīng)用程序的普及,以及移動設(shè)備和物聯(lián)網(wǎng)設(shè)備的廣泛應(yīng)用,系統(tǒng)需要動態(tài)地擴(kuò)展。
發(fā)布/訂閱模式的解耦特性使其成為管理動態(tài)可擴(kuò)展系統(tǒng)架構(gòu)的理想選擇。發(fā)布/訂閱使得在不增加系統(tǒng)組件程序邏輯負(fù)擔(dān)的情況下管理擴(kuò)展成為可能。
Pub/Sub 提供了一個框架,用于在發(fā)布者(創(chuàng)建和發(fā)送消息的組件)和訂閱者(接收和使用消息的組件)之間交換消息。請注意,發(fā)布者不會以點對點方式向特定訂閱者發(fā)送消息。相反,使用中介 - Pub/Sub 消息代理,它將消息分組為稱為通道(或主題)的實體。
訂閱者首先會選擇訂閱特定的主題,以便能夠接收該主題下的所有消息。
隨后,發(fā)布者會向這些已選定的主題發(fā)送消息,這些消息包含了需要傳遞的信息或指令。
消息代理作為核心中介,接收來自發(fā)布者的消息,并將其存儲在對應(yīng)的主題中。同時,代理還會負(fù)責(zé)將這些消息分發(fā)給所有已訂閱該主題的訂閱者。
為了更具體地理解Pub/Sub系統(tǒng)的操作,我們可以考慮以下實際場景:
設(shè)想在家中,您安裝了一系列IoT設(shè)備,這些設(shè)備負(fù)責(zé)監(jiān)測煙霧濃度并控制電力與天然氣的供應(yīng)。為了確保這些設(shè)備之間能夠順暢且可靠地通信,您可以采用MQTT代理作為消息傳遞的中心樞紐。
在這個場景中,一旦煙霧檢測設(shè)備(作為發(fā)布者)偵測到煙霧并判定為警報狀態(tài),它會立即向MQTT代理發(fā)送一條包含警報信息的消息。而您的智能手機(jī)(作為訂閱者之一)已經(jīng)訂閱了相關(guān)的煙霧警報主題,因此會立即接收到這條消息,并通知您家中存在煙霧。
值得注意的是,Pub/Sub模型的靈活性還體現(xiàn)在訂閱者也能轉(zhuǎn)變?yōu)榘l(fā)布者的能力上。例如,您的智能手機(jī)在接收到煙霧警報后,可以作為一個發(fā)布者,向另一個特定主題發(fā)送關(guān)閉電力和天然氣供應(yīng)的指令消息。此時,負(fù)責(zé)控制電力和天然氣供應(yīng)的IoT設(shè)備(作為訂閱者)會接收到這條指令,并據(jù)此執(zhí)行關(guān)閉操作,以確保家庭安全。
通過這樣的方式,即便只發(fā)送了一條消息,也能觸發(fā)兩個獨(dú)立的IoT設(shè)備同時做出響應(yīng),從而實現(xiàn)了高效的跨設(shè)備通信與協(xié)同工作。
Pub/Sub 模式為表帶來了許多好處,包括但不限于:
組件之間的松散耦合,使您的系統(tǒng)更加模塊化和靈活。
高可擴(kuò)展性(理論上,Pub/Sub 允許任意數(shù)量的發(fā)布者與任意數(shù)量的訂閱者通信)。
與語言和協(xié)議無關(guān),這使得將 Pub/Sub 集成到您的技術(shù)堆棧中變得簡單快捷。
異步、事件驅(qū)動型通信,非常適合實時、低延遲的應(yīng)用程序。
Pub/Sub 的松散耦合、異步特性和固有的可擴(kuò)展性使其成為發(fā)布者和訂閱者數(shù)量較高且波動的分布式系統(tǒng)的絕佳解決方案。您可以將 Pub/Sub 用于許多不同的目的,例如:
發(fā)送事件通知。
分布式緩存。
分布式日志記錄。
使用多個數(shù)據(jù)源。
廣播更新(一對多消息傳送)。
構(gòu)建響應(yīng)式、低延遲的最終用戶體驗,例如實時聊天和多人游戲協(xié)作功能。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(微信號:cdebyte)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!
相關(guān)閱讀:
1、【教程】PLC利用函數(shù)塊連接MQTT訂閱消息(一)
2、【教程】PLC利用函數(shù)塊連接MQTT訂閱消息(二)
3、【物聯(lián)科普】詳解發(fā)布-訂閱模式與觀察者模式
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18884314734
蔡友銀(無線模塊):13882211021 葛宇龍(通信設(shè)備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 [email protected]
業(yè)務(wù)郵箱:[email protected] 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號