1. 程式人生 > >Nats的消息通信模型

Nats的消息通信模型

主題 通過 原創 版權 聲明 模式 處理 高級服務 必須

Nats的消息通信模型
作者:chszs,未經博主允許不得轉載。經許可的轉載需註明作者和博客主頁:http://blog.csdn.net/chszs
6、NATS消息通信模型

NATS的消息通信是這樣的:應用程序的數據被編碼為一條消息,並通過發布者發送出去;訂閱者接收到消息,進行解碼,再處理。訂閱者處理NATS消息可以是同步的或異步的。
這裏寫圖片描述
* 異步處理
異步處理使用回調消息句柄處理消息,當有消息到來時,已註冊的回調句柄接收並控制處理消息。整個過程客戶端不會被阻塞,可以同步執行其它任務。異步處理可以采用多線程調度的設計。
* 同步處理
同步處理需要應用程序顯示調用方法來處理到來的消息。這種顯示調用是阻塞式的調用,會暫停任務直到消息可用。如果沒有可用的消息,消息處理阻塞的周期由客戶端設置。同步處理通常用於服務器等待並處理傳入的請求消息,並發送響應給客戶端。

NATS支持以下消息通信模型,包括:
1)發布/訂閱模型

這裏寫圖片描述
NATS實現了一個發布/訂閱消息通信模型,NATS的發布/訂閱是一對多的消息通信。發布者在一個主題上發送消息,任何註冊(訂閱)了此主題的客戶端都可以接收到該主題的消息。訂閱者可以使用主題通配符註冊感興趣的主題。
如果客戶端沒有註冊某個主題(或者客戶端不在線),那麽該主題發布消息時,客戶端不會收到該消息。NATS系統是一種“發送後不管”的消息通信系統,故如果需要高級服務,需要在客戶端開發相應的功能。
對於異步消息通信,消息交付給訂閱者的消息句柄。如果客戶端沒有句柄,那麽該消息通信是同步的,那麽客戶端可能會被阻塞,直到它處理了該消息。
2)請求/響應模型

這裏寫圖片描述
NATS支持兩種請求-響應消息通信:P2P(點對點)和O2M(一對多)。P2P最快、響應也最先。而對於O2M,需要設置請求者可以接收到的響應數量界限。
在請求-響應的消息交換,發布請求操作會發布一個帶預期響應的消息到Reply主題。
請求創建了一個收件箱,並在收件箱執行調用,並進行響應和返回
3)隊列模型

這裏寫圖片描述
NATS支持P2P消息通信的隊列。要創建一個消息隊列,訂閱者需註冊一個隊列名。所有的訂閱者用同一個隊列名,形成一個隊列組。當消息發送到主題後,隊列組會自動選擇一個成員接收消息。盡管隊列組有多個訂閱者,但每條消息只能被組中的一個訂閱者接收。
隊列的訂閱者可以是異步的,這意味著消息句柄以回調方式處理交付的消息。異步隊列訂閱者必須建立處理消息的邏輯。
7、NATS的特性

NATS提供了以下獨特的功能:
1)純發布/訂閱
永遠不假定有接收者;總是在線
2)集群模式的服務器
NATS服務器可以集群;發布式的隊列可以跨域集群;集群感知的客戶端
3)訂閱者的自動修剪
要支持可伸縮性,NATS提供了客戶端連接的自動修剪功能;如果某個客戶端APP處理消息很慢,NATS會自動關閉此客戶端的連接;如果某個客戶端在ping-pong時間間隔內未做響應,服務器會自動關閉此連接;客戶端實現了重連邏輯
4)基於文本的協議
開發上手比較容易;不影響服務器的性能;可以直接用Telnet連接服務器
---------------------
作者:資深架構師
來源:CSDN
原文:https://blog.csdn.net/chszs/article/details/50996679
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

Nats的消息通信模型