Nats的消息通信模型
Nats的消息通信模型
作者:chszs,未經(jīng)博主允許不得轉(zhuǎn)載。經(jīng)許可的轉(zhuǎn)載需注明作者和博客主頁(yè):http://blog.csdn.net/chszs
6、NATS消息通信模型
NATS的消息通信是這樣的:應(yīng)用程序的數(shù)據(jù)被編碼為一條消息,并通過(guò)發(fā)布者發(fā)送出去;訂閱者接收到消息,進(jìn)行解碼,再處理。訂閱者處理NATS消息可以是同步的或異步的。
* 異步處理
異步處理使用回調(diào)消息句柄處理消息,當(dāng)有消息到來(lái)時(shí),已注冊(cè)的回調(diào)句柄接收并控制處理消息。整個(gè)過(guò)程客戶端不會(huì)被阻塞,可以同步執(zhí)行其它任務(wù)。異步處理可以采用多線程調(diào)度的設(shè)計(jì)。
* 同步處理
同步處理需要應(yīng)用程序顯示調(diào)用方法來(lái)處理到來(lái)的消息。這種顯示調(diào)用是阻塞式的調(diào)用,會(huì)暫停任務(wù)直到消息可用。如果沒(méi)有可用的消息,消息處理阻塞的周期由客戶端設(shè)置。同步處理通常用于服務(wù)器等待并處理傳入的請(qǐng)求消息,并發(fā)送響應(yīng)給客戶端。
NATS支持以下消息通信模型,包括:
1)發(fā)布/訂閱模型
NATS實(shí)現(xiàn)了一個(gè)發(fā)布/訂閱消息通信模型,NATS的發(fā)布/訂閱是一對(duì)多的消息通信。發(fā)布者在一個(gè)主題上發(fā)送消息,任何注冊(cè)(訂閱)了此主題的客戶端都可以接收到該主題的消息。訂閱者可以使用主題通配符注冊(cè)感興趣的主題。
如果客戶端沒(méi)有注冊(cè)某個(gè)主題(或者客戶端不在線),那么該主題發(fā)布消息時(shí),客戶端不會(huì)收到該消息。NATS系統(tǒng)是一種“發(fā)送后不管”的消息通信系統(tǒng),故如果需要高級(jí)服務(wù),需要在客戶端開(kāi)發(fā)相應(yīng)的功能。
對(duì)于異步消息通信,消息交付給訂閱者的消息句柄。如果客戶端沒(méi)有句柄,那么該消息通信是同步的,那么客戶端可能會(huì)被阻塞,直到它處理了該消息。
2)請(qǐng)求/響應(yīng)模型
NATS支持兩種請(qǐng)求-響應(yīng)消息通信:P2P(點(diǎn)對(duì)點(diǎn))和O2M(一對(duì)多)。P2P最快、響應(yīng)也最先。而對(duì)于O2M,需要設(shè)置請(qǐng)求者可以接收到的響應(yīng)數(shù)量界限。
在請(qǐng)求-響應(yīng)的消息交換,發(fā)布請(qǐng)求操作會(huì)發(fā)布一個(gè)帶預(yù)期響應(yīng)的消息到Reply主題。
請(qǐng)求創(chuàng)建了一個(gè)收件箱,并在收件箱執(zhí)行調(diào)用,并進(jìn)行響應(yīng)和返回
3)隊(duì)列模型
NATS支持P2P消息通信的隊(duì)列。要?jiǎng)?chuàng)建一個(gè)消息隊(duì)列,訂閱者需注冊(cè)一個(gè)隊(duì)列名。所有的訂閱者用同一個(gè)隊(duì)列名,形成一個(gè)隊(duì)列組。當(dāng)消息發(fā)送到主題后,隊(duì)列組會(huì)自動(dòng)選擇一個(gè)成員接收消息。盡管隊(duì)列組有多個(gè)訂閱者,但每條消息只能被組中的一個(gè)訂閱者接收。
隊(duì)列的訂閱者可以是異步的,這意味著消息句柄以回調(diào)方式處理交付的消息。異步隊(duì)列訂閱者必須建立處理消息的邏輯。
7、NATS的特性
NATS提供了以下獨(dú)特的功能:
1)純發(fā)布/訂閱
永遠(yuǎn)不假定有接收者;總是在線
2)集群模式的服務(wù)器
NATS服務(wù)器可以集群;發(fā)布式的隊(duì)列可以跨域集群;集群感知的客戶端
3)訂閱者的自動(dòng)修剪
要支持可伸縮性,NATS提供了客戶端連接的自動(dòng)修剪功能;如果某個(gè)客戶端APP處理消息很慢,NATS會(huì)自動(dòng)關(guān)閉此客戶端的連接;如果某個(gè)客戶端在ping-pong時(shí)間間隔內(nèi)未做響應(yīng),服務(wù)器會(huì)自動(dòng)關(guān)閉此連接;客戶端實(shí)現(xiàn)了重連邏輯
4)基于文本的協(xié)議
開(kāi)發(fā)上手比較容易;不影響服務(wù)器的性能;可以直接用Telnet連接服務(wù)器
總結(jié)
以上是生活随笔為你收集整理的Nats的消息通信模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Vue构建中(大)型应用
- 下一篇: Winform VS2015打包