Nats的消息通信模型

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50996679

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连接服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#将http调用返回额json中的有关中文的unicode转换为中文

中文转Unicode:HttpUtility.UrlEncodeUnicode(string str);转换后中文格式:"%uxxxx" 举例:"柳_abc123" 转换结果是:"%u67f3_abc123" Unicode转中文1:HttpUtility.UrlDecode(string st…

计算机常用英文句子,英文简历常用句子

思想成熟上进心强并具极丰富的人际关系技巧,有良好的管理艺术和组织能力,职场秘籍为个人简历添彩经典句子,思想成熟上进心强并具极丰富的人际关系技巧,有很高的领导艺术和很强的集体精神。英文简历常用句子2017-07-04 04:57:40 | …

.NET6之MiniAPI(一):开始Mini API

Mini API之前的官方.net web框架,都是偏重的,不像其他语言,如go,python,或基于c#的nancy,都是简洁方式来开启web之旅的。所以有小伙伴就吐槽.net基于web的不友好性,这不,.net6中官方…

超线程_超线程加核显 i310100+梅捷H410超值爆款组合

酷睿i3-10100是一颗4核心8线程,三级缓存6MB,主频3.6-4.3GHz,集成核显UHD 630 350-1100MHz,热设计功耗65W。对比上代酷睿i3-9100,它增加了超线程技术,加速频率高了100MHz,其他不变。为什么在短短…

JSTL(fn函数)

JSTL&#xff08;fn函数&#xff09; 首先&#xff0c;我们要在页面的最上方引用&#xff1a; <% taglib prefix"fn" uri"http://java.sun.com/jsp/jstl/functions" %> 下面是JSTL中自带的方法列表以及其描述&#xff1a; fn:contains(string, sub…

Hibernate之悲观锁与乐观锁

http://blog.csdn.net/a19881029/article/details/20665663 如果需要保证数据访问的排它性&#xff0c;则需对目标数据加“锁”&#xff0c;使其无法被其它程序修改 一&#xff0c;悲观锁 对数据被外界&#xff08;包括本系统当前的其它事务和来自外部系统的事务处理&#xff0…

他本硕博连跨3大专业,毕业后没多久被破格聘为985高校教授!

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;募格学术整合自东南大学新闻网、东南大学校团委、募格课堂图片&#xff1a;网络来源&#xff1a;东南大学新闻网、东南大学校团委他从本科的计算机专业&#xff0c;到研究生的应用数学专业&#xff0c;再到博士开始研…

.Net之代码优先gRPC服务

介绍该方式适用于多个服务之前都是**.Net项目**的场景优点&#xff1a;可以在 .NET 服务器和客户端之间共享 .NET 服务和数据协定类型。无需在 .proto 文件和代码生成过程中定义协定。操作引用组件创建一个共享的类库ShareProto&#xff0c;该类库可以被服务端和客户端进行访问…

转JS总结1--(CSS书写规范和正则表达式)

一、CSS书写规范&#xff1a; 1、文字&#xff1a;font: font-style font-variant font-weight font-size/line-height font-family; 2、边框&#xff1a;border:border-width border-style border-color; 3、背景&#xff1a;background:background-color background-image ba…

Winform VS2015打包

首先 &#xff0c;我们要去官网http://learn.flexerasoftware.com/content/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio注册一个账号已获得installshiled的注册码。 是免费的~ 注册完后就可以下载我们的第三方打包工具&#xff1a; 注意&#xff1a;这里下载并安装完…

触发键盘_雷蛇这款光轴机械键盘开箱评测,光速触发,颜值爆表

首先感谢头条众测给予雷蛇猎魂光蛛精英版机械键盘的测评机会&#xff0c;雷蛇作为在游戏设备领域深耕的领先者&#xff0c;其生产的游戏设备深得游戏玩家喜爱&#xff0c;下面我们来一睹这款雷蛇机械键盘的风采。首先从包装盒正面可以感受到这款雷蛇光学机械轴键盘霸气侧漏&…

会计电算化的重要物质基础计算机和,湖北工业大学工程技术学院会计电算化管理办法...

湖北工业大学工程技术学院会计电算化管理办法第一章 总则第一条为了进一步加强会计电算化工作&#xff0c;使会计电算化更加规范化、程序化&#xff0c;保障财务工作高效运行&#xff0c;根据《中华人民共和国会计法》、财政部《会计电算化管理办法》和《会计电算化工作规范》等…

spring之使用Spring Security实现权限管理

转载&#xff1a;http://hanqunfeng.iteye.com/blog/1155226 目录 SpringSecurity3.X--一个简单实现 SpringSecurity3.X--前台与后台登录认证 SpringSecurity3.X--remember-me SpringSecurity3.X--验证码 作者对springsecurity研究不深&#xff0c;算是个初学者吧&#xff0c;最…

单元测试之道

Nunit with VS2012: 构建单元测试步骤 1.下载Nunit 2.6.2&#xff0c;解压到某个path&#xff1b; 2.在VS2012 上构建自己的library工程&#xff1b; 3.添加引用&#xff1a;nunit.framework.dll; 4.添加UunitTest类&#xff1a;在该类中using nunit.framework.dll&#xff0c;…

iNeuOS工业互联网操作系统,提升分布式云端控制安全策略和增加实时日志功能...

目 录1. 概述... 22. 平台演示... 23. 云端控制策略和应用过程... 23.1 云端控制策略... 23.2 控制应用过程... 34. 实时日志... 71. 概述这次升级主要提升云端控制的安全策略&#xff0c;不管公有云部署或是私有云部署&#…

直男的回答能多出乎意料?

1 我家的鸭子没这么扁&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 这个回答&#xff0c;妙啊...&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 强迫症犯人要求判10年▼4 像羊又像猫&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼5 美女…

Angularjs调用公共方法与共享数据

这个问题场景是在使用ionic开发页面的过程中发现&#xff0c;多个页面对应的多个controller如何去调用公共方法&#xff0c;比如给ionic引入了toast插件&#xff0c;如何将这个插件的调用变成公共方法或者设置成工具类&#xff0c;因为在每个controller中直接注入这个toast插件…

如何修改pfpj的服务器,如何更改布局?

您可以使用一个布局和一个活动。你必须隐藏/显示你的布局按钮click.i已经实现了它。你可以尝试下面的code.may它会帮助你。main.xml中android:layout_width"match_parent"android:layout_height"match_parent"android:orientation"vertical" >…

栈与队列之用java实现队列

队列 介绍&#xff1a; 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端(front)进行删除操作&#xff0c;而在表的后端(rear)进行插入操作&#xff0c;和栈一样&#xff0c;队列是一种操作受限制的线性表。进行插入操作的端称为队尾&#xff0c;进行删除操…

mysql去掉两个最高分_数据分析系列 16/32 | MySQL中子查询与联合查询

前面说了很多MySQL中的查询&#xff0c;比如条件查询、分组聚合查询、连接查询&#xff0c;今天来说一下另外两个非常的重要的查询&#xff0c;MySQL中的子查询和联合查询。PART01子查询子查询也称嵌套查询&#xff0c;是将一个查询语句嵌套在另一个查询语句的WHERE子句或者HAV…