阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nats的消息通信模型

157次阅读
没有评论

共计 1235 个字符,预计需要花费 4 分钟才能阅读完成。

6、NATS 消息通信模型

NATS 的消息通信是这样的:应用程序的数据被编码为一条消息,并通过发布者发送出去;订阅者接收到消息,进行解码,再处理。订阅者处理 NATS 消息可以是同步的或异步的。
Nats 的消息通信模型
* 异步处理
异步处理使用回调消息句柄处理消息,当有消息到来时,已注册的回调句柄接收并控制处理消息。整个过程客户端不会被阻塞,可以同步执行其它任务。异步处理可以采用多线程调度的设计。
* 同步处理
同步处理需要应用程序显示调用方法来处理到来的消息。这种显示调用是阻塞式的调用,会暂停任务直到消息可用。如果没有可用的消息,消息处理阻塞的周期由客户端设置。同步处理通常用于服务器等待并处理传入的请求消息,并发送响应给客户端。

NATS 支持以下消息通信模型,包括:

1)发布 / 订阅模型

Nats 的消息通信模型
NATS 实现了一个发布 / 订阅消息通信模型,NATS 的发布 / 订阅是一对多的消息通信。发布者在一个主题上发送消息,任何注册(订阅)了此主题的客户端都可以接收到该主题的消息。订阅者可以使用主题通配符注册感兴趣的主题。
如果客户端没有注册某个主题(或者客户端不在线),那么该主题发布消息时,客户端不会收到该消息。NATS 系统是一种“发送后不管”的消息通信系统,故如果需要高级服务,需要在客户端开发相应的功能。
对于异步消息通信,消息交付给订阅者的消息句柄。如果客户端没有句柄,那么该消息通信是同步的,那么客户端可能会被阻塞,直到它处理了该消息。

2)请求 / 响应模型

Nats 的消息通信模型
NATS 支持两种请求 - 响应消息通信:P2P(点对点)和 O2M(一对多)。P2P 最快、响应也最先。而对于 O2M,需要设置请求者可以接收到的响应数量界限。
在请求 - 响应的消息交换,发布请求操作会发布一个带预期响应的消息到 Reply 主题。
请求创建了一个收件箱,并在收件箱执行调用,并进行响应和返回

3)队列模型

Nats 的消息通信模型
NATS 支持 P2P 消息通信的队列。要创建一个消息队列,订阅者需注册一个队列名。所有的订阅者用同一个队列名,形成一个队列组。当消息发送到主题后,队列组会自动选择一个成员接收消息。尽管队列组有多个订阅者,但每条消息只能被组中的一个订阅者接收。
队列的订阅者可以是异步的,这意味着消息句柄以回调方式处理交付的消息。异步队列订阅者必须建立处理消息的逻辑。

7、NATS 的特性

NATS 提供了以下独特的功能:
1)纯发布 / 订阅
永远不假定有接收者;总是在线
2)集群模式的服务器
NATS 服务器可以集群;发布式的队列可以跨域集群;集群感知的客户端
3)订阅者的自动修剪
要支持可伸缩性,NATS 提供了客户端连接的自动修剪功能;如果某个客户端 APP 处理消息很慢,NATS 会自动关闭此客户端的连接;如果某个客户端在 ping-pong 时间间隔内未做响应,服务器会自动关闭此连接;客户端实现了重连逻辑
4)基于文本的协议
开发上手比较容易;不影响服务器的性能;可以直接用 Telnet 连接服务器

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-10/136414.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1235字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中