一种基于Netty框架应用Raft算法实现MQTTBroker服务器的方法技术

技术编号:37601692 阅读:26 留言:0更新日期:2023-05-18 11:52
本发明专利技术提供一种基于Netty框架应用Raft算法实现MQTT Broker服务器的方法。所述基于Netty框架应用Raft算法实现MQTT Broker服务器的方法包括以下步骤:S1.Netty所述Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端;S2.Reactor模型所述Netty架构是按照Reactor模式设计和实现的,所述Netty的Reactor并发模型:Netty实现并扩展了Reactor模型。本发明专利技术提供的基于Netty框架应用Raft算法实现MQTT Broker服务器的方法可以避免商业授权的负面影响,不断迭代升级,可以为Broker运行和决策提供数据支撑,可以保证集群内数据的强制一致性,即使节点故障,节点恢复后仍然能正常提供数据,同时还可以解决现有技术的缺点。点。点。

【技术实现步骤摘要】
一种基于Netty框架应用Raft算法实现MQTT Broker服务器的方法


[0001]本专利技术属于物联网
,尤其涉及一种基于Netty框架应用Raft算法实现MQTT Broker服务器的方法。

技术介绍

[0002]消息队列遥测传输是ISO标准(ISO/IEC PRF 20922)下基于发布(Publish)/订阅(Subscribe)范式的消息协议,可视为“资料传递的桥梁”它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件,以解决当前繁重的资料传输协议。
[0003]MQTT协议定义了两种网络实体:消息代理(message broker)与客户端(client)。其中,消息代理用于接收来自客户端的消息并转发至目标客户端。MQTT客户端可以是任何运行有MQTT库并通过网络连接至消息代理的设备,例如微型控制器或大型服务器。
[0004]信息的传输是通过主题(topic)管理的。发布者有需要分发的数据时,其向连接的消息代理发送携带有数本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于Netty框架应用Raft算法实现MQTT Broker服务器的方法,其特征在于,包括以下步骤:S1.Netty所述Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端;S2.Reactor模型所述Netty架构是按照Reactor模式设计和实现的,所述Netty的Reactor并发模型:Netty实现并扩展了Reactor模型,具体如下:1).Acceptor主线程池是一个独立的NIO线程池,它用NIO的形式扮演网络链路中的Acceptor角色,又名AcceptorReactor;2).程序启动后,会在Acceptor主线程池中随机选择一个线程作为Acceptor线程,用于绑定端口,接收客户端连接;3).Acceptor线程接收到连接请求,会将请求交给AcceptorReactor的其他线程,以处理客户端的登录、握手和安全认证;4).在业务层链路正式建立后,会将请求转到IO子线程池的某个线程,由其处理IO读写、编码操作;5).最后根据请求类型的不同,将请求转到特定类型WorkThreadsPools,做具体的业务处理在Netty并发模型中,客户端的并发接入、底层Socket的读写、以及业务请求的处理,都是多线程化的异步操作,因此,Netty赋予了应用程序一项核心能力,可以以任意的顺序响应任意时间点产生的网络事件,可以在确定的资源里,不断复用计算机的线程资源,适应更高的吞吐量和可扩展性要求;S3.Raft所述Raft集群由若干节点组成,每个节点有三个状态:Leader、Follower和Candidate,Raft会先选举Leader,并且只会有一个节点是Leader,其他节点都是Follower,Leader节点处理所有客户端请求,复制Replicated Log到Follower节点,如果Leader故障,选举倒计时过期后,Leader心跳检测依然异常,Follower会重新选举出新的Leader;S4.基于Netty和Raft实现MQTT Broker:所述MQTT Broker是直接接受并发客户端网络连接的服务器,使用Netty处理网络通信部分,可以最大限度地利用服务器资源处理更多的客户端连接、处理更多的业务,Netty自带MQTT的编解码模块,可以直接使用以完成MQTT协议通信的编解码;S5.Broker服务通过Raft集群保持数据一致性:MQTT Broker服务通过实现Raft算法,赋予MQTT Broker之间数据复制特性,基于强一致性的数据同步组成集群,从而降低系统单点故障的风险;S6.通过Raft算法赋予系统以下特性:1).持久会话:当会话标识“Clean Session”置为0时,表示创建一个持久会话,在客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销,持久会话信息、离线MQTT信息保存本地后,通过Raft算法复制到集群其他Broker,客户端重新上线后,即可及时获得全部离线信息,减少等待;2).订阅数据:客户端订阅成功后,将订阅关系数据复制到其他Broker,需要广播、下发
指令、或客户端更换了Broker接入,即可及时获得客户端当前全部的订阅主题数据,取消订阅时则本地删除后集群内删除;3).消息服务质量保证(QoS)的消息重传:MQTT协议规定作为通信双方服务端和客户端对于自己发送到对端的消息都应该满足其服务质量的要求,即,MQTT报文发送后,对端在规定时间内未收到应答,则客户端会重发该报文,同时,若在保持会话的情况下,客户端发成重连,Broker会自动为重连的客户端重发应答的消息,以确保QoS流程的正确,针对上述场景,将客户端发送而未确认消息保存本地,再复制同步到其他Broker,无论是重试消息、或是发布者重连,仍然可以在其他Broker中找到该消息报文,并按QoS的语义要求,对相应消息报文做出维护。2.根据权利要求1所述的基于Netty框架应用Raft算法实现MQTT Broker服务器的方法,其特征在于:所述MQTT Broker服务包括如下:(1).Broker服务由网络服务层、MQTT协议服务层、业务服务层、存储模块和桥接模块组成,将网络通信和业务处理分离,存储模块由Raft节点和本地存储组成,存储模块定义有若干存储器;(2).网络服务层处理客户端连接,并转发客户端上报数据到协议层解码,同时,将协议层已编码的业务数据下发到对应客户端;(3).协议层应用Netty已实现的MQTT协议编解码模块,处理客户端和Broker之间通信所需的MQTT协议报文,定义对应报文的处理流程,实现协议业务的触发处理,如登录、鉴权等和消息分发;(4).业务服务由消息下发模块和数据分发模块组成;(5).Raft服务实现网络通信,为Raft集群提供节点间的通信功能,支持Raft集群的运作:选举、日志复制、安全检查和心跳探活;(6).Raft节点由实现Raft协议的存储器与Raft通信服务组成,业务链路内的过程数据和结果数据,按需可以将数据变更提交到Raft Leader,将作为Raft Log存入本地特定存储引擎,利用Raft算法的日志复制和强一致性检查,完成集群内节点之间的数据复制;(7).本地存储用于存储包括但不限于以下数据:客户端会话记录、未确认的消息(QoS1、QoS2)、指标度量数值和程序运行所需的配置数据;(8).无状态的桥接服务向外暴露REST API,通过低侵入性的方式提供包括但不限于以下业务功能管理操作:获取Broker状态信息、进行消息发布和查看客户端列表。3.根据权利要求2所述的基于Netty框架应用Raft算法实现MQTT Broker服务器的方法,其特征在于:所述消息下发负责捕获用户操作,抽象成MQTT消息体后,转入协议层处理,所述数据分发负责捕获协议层已解码的消息体,所述数据分发负责处理包括但不限于:消息持久化、设备间通信、消息重放、共享订阅等,通过对接持久化中间件和特定服务接口完成上报数据的分发。4.根据权利要求1所述的基于Netty框架应用Raft算法实现MQTT Broker服务器的方法,其特征在于:所述数据复制流程具体如下:(1).Leader负责接收客户端的请求,Leader把请求作为Raft日志...

【专利技术属性】
技术研发人员:罗伟杰林宏正黄铭娘刘军许伟明陈勇朱培军
申请(专利权)人:广东亿迅科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1