CN114125021A - 一种基于Netty消息驱动的终端信息发布系统 - Google Patents
一种基于Netty消息驱动的终端信息发布系统 Download PDFInfo
- Publication number
- CN114125021A CN114125021A CN202111219738.3A CN202111219738A CN114125021A CN 114125021 A CN114125021 A CN 114125021A CN 202111219738 A CN202111219738 A CN 202111219738A CN 114125021 A CN114125021 A CN 114125021A
- Authority
- CN
- China
- Prior art keywords
- message
- server
- reconnection
- client terminal
- message server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 40
- 230000008569 process Effects 0.000 claims abstract description 36
- 230000007246 mechanism Effects 0.000 claims abstract description 15
- 238000004891 communication Methods 0.000 claims abstract description 11
- 230000004044 response Effects 0.000 claims description 32
- 230000005540 biological transmission Effects 0.000 claims description 14
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims description 3
- 230000001186 cumulative effect Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 230000008093 supporting effect Effects 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001976 improved effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于Netty消息驱动的终端信息发布系统,客户终端用于收发消息,提供基于四个报文的QoS机制;消息服务器为基于Netty框架的使用UDP通信协议的服务器;提供基于四个报文的QoS机制;数据库服务器用于存储消息服务器向客户终端投递失败的离线消息。当客户终端断网或虚网时,客户终端启动一个断网重连守护进程,设置最大重连时间周期阙值和重连线程的等待接收消息服务器反馈数据的超时时间,周期性地尝试重连消息服务器,记录重连次数,增大重连时间周期,直至连接成功为止。本发明优化了客户终端断网和虚网重连算法,解决终端应用崩溃的问题,同时设计基于四个报文的QoS消息可靠投递算法,能节约网络资源和计算资源。
Description
技术领域
本发明涉及数据传输技术领域,具体为一种基于Netty消息驱动的终端信息发布系统。
背景技术
随着物联网、信息技术的发展,数字化的终端信息发布系统有着特别广泛的应用。现有基于Netty消息驱动的终端信息发布技术,客户终端与服务端使用UDP协议通信,采用基于六个报文的QoS消息可靠投递机制(即IM消息的请求/应答/通知三个报文,IM应答的请求/应答/通知三个报文),支持离线消息存储到Kafka数据库,支持客户终端断网重连和离线消息续传。伴随系统广泛应用,系统问题暴露出来。
(1)存在客户现场网络情况极其复杂和不稳定,时有客户终端常常断网虚网。若在客户终端登录消息服务器后出现断网或虚网,则客户终端系统会周期性地尝试重连消息服务器,若在一段时间内没有成功连通消息服务器,因客户终端线程数的持续增长会导致客户终端系统崩溃。
(2)基于六个报文的QoS消息可靠投递机制,会过多消耗消息服务器端的网络带宽和计算资源,影响到消息服务器的吞吐量和负载性能。
公开号为CN109408240A的发明专利申请公开了一种基于Netty框架的终端设备数据采集系统,该申请通过基于Netty框架,针对所有终端设备,提供了统一的数据采集接口,并且省去了终端设备对数据的处理、封装过程,节省终端设备时间开支,提高了终端设备数据发送效率。但是也没有解决上述的2个问题。
发明内容
本发明所要解决的技术问题在于:解决客户终端因断网重连消息服务器会引起客户终端线程数持续增长导致终端应用崩溃的问题;同时科学合理利用网络资源和计算资源,有效提高消息服务器的吞吐量和负载能力。
为解决上述技术问题,本发明提供如下技术方案:
一种基于Netty消息驱动的终端信息发布系统,包括客户终端、消息服务器端和数据库服务器;所述客户终端与所述消息服务器连接通信,所述消息服务器与所述数据库服务器连接通信;
所述客户终端用于收发消息,使用UDP通信协议与所述消息服务器通信,向所述消息服务器发起登录请求,与消息服务器成功建立会话后,会周期性地向消息服务器发送心跳报文,以及收发消息;每个终端都有身份标识,每条消息都有消息指纹,提供基于四个报文的QoS机制;
所述消息服务器为基于Netty框架的使用UDP通信协议的服务器;提供基于四个报文的QoS机制,支持离线消息存储到所述数据库服务器,所述客户终端上线后对离线消息进行自动续传;
所述数据库服务器用于存储所述消息服务器向所述客户终端投递失败的离线消息;
当客户终端断网或虚网时,客户终端启动一个断网重连守护进程,设置最大重连时间周期阙值和重连线程的等待接收消息服务器反馈数据的超时时间,周期性地尝试重连消息服务器,记录重连次数,增大重连时间周期,直至连接成功为止。
优点:本发明优化了客户终端断网和虚网重连算法,设计断网重连守护进程,解决客户终端因断网重连消息服务器会引起客户终端线程数持续增长导致终端应用崩溃的问题。
优选地,所述断网重连守护进程具体包括下述步骤:
S1、定义重连计算器,初始值为1;
S2、定义重连时间周期,按需设定,单位为秒;
S3、定义最大重连时间周期阙值,按需设定,单位为秒;
S4、定义重连消息服务器线程的等待接收消息服务器反馈数据的超时时间,按需设定,单位为秒;
S5、创建重连消息服务器线程;
S6、若连接消息服务器成功,则停止重连消息服务器守护进程;
S7、若连接消息服务器失败,则重连计数器累计值加1递增;
S8、判断重连计数器是否大于等于重连时间周期的几倍数,按需设定倍数;
S9、若否,则继续创建新一轮重连消息服务器线程;
S10、若是,则判断重连时间周期是否等于最大重连时间周期阙值;
S11、若是,则继续创建新的重连消息服务器线程;
S12、若否,则设置重连时间周期等于自身的几倍数,按需设定倍数;
S13、接着,判断重连时间周期是否大于重连时间周期阙值;
S14、若否,则继续创建新一轮重连消息服务器线程;
S15、若是,则设置重连时间周期等于重连时间周期阙值;
S16、接着,继续创建新一轮重连消息服务器线程;
S17、最后,直至客户终端成功连接消息服务器,停止重连消息服务器守护进程。
优选地,所述基于四个报文的QoS机制的具体传输过程如下:在客户终端实现QoS送保证算法基本逻辑,分别创建一个发送消息QoS守护进程和一个接收消息QoS守护进程;
客户终端发送方每发送一条消息都会入站发送消息QoS守护进程的已发送消息队列,该守护进程会周期性地尝试重发消息,若被接收消息QoS守护进程告知某消息发送成功,会将该消息从已发送消息队列移除;
客户终端发送方每接收到一条消息都会入站接收消息QoS守护进程的已接收消息队列,若接收的是应答消息报文,根据消息指纹通知发送消息QoS守护进程对方已接收该消息;
消息服务器提供集中转发消息功能,也有类同客户终端的一个发送消息QoS守护进程和一个接收消息QoS守护进程,若转发消息不成功,向发送方回复消息成功发送伪应答报文,并把发送不成功的消息报文写入kafka离线消息数据库,待接收方上线后续传离线消息;若转发消息成功,向发送方回复消息成功发送应答报文;对离线消息的续传,不再向发送方回复应答报文的;
客户终端接收方收到消息,把收到的消息写入本地的QoS已接收消息队列,根据消息指纹过滤重复收到的消息,接着向发送发回复应答报文。
本发明设计基于四个报文的QoS消息可靠投递算法,即一个IM消息报文和一个IM应答报文的两次转发,与当前基于六个报文的QoS消息可靠传递技术相比,能节约网络资源和计算资源。
优选地,所述客户终端给每条发送消息分配一个指纹编码,唯一标识消息,供接收方去重处理;消息发出后,对该消息添加时间戳和重发次数属性,并写入QoS已发送消息队列,确保消息不丢失。
优选地,所述客户终端创建心跳保活守护进程,用于向所述消息服务器发送心跳包和接收所述消息服务器的心跳应答包;当所述客户终端连接所述消息服务器后,自动激活心跳保活守护进程。
优选地,若客户终端在设定的时间阙值内没有收到消息服务器的应答包,会触发网络异常事件,联动激活重连消息服务器的守护进程;
若消息服务器若在设定的时间阙值内没有收到客户终端的心跳包,会自动断开与该客户终端的连接,释放被占用资源。
优选地,对于所述时间阈值,系统提供5种心跳模式:3秒、10秒、30秒、60秒和120秒心跳。
优选地,所述客户终端具有网络状态自检、断网自动重连的功能。
优选地,系统使用ConcurrentHashMap作为发送和接收消息队列;能够使用Observer观察者模式。
优选地,所述消息服务端使用主从Reactor多线程模型异步收发消息,使用ByteBuffer对数据进行处理。
优选地,所述消息服务器采用集群服务器;所述数据库服务器为Kafka数据库。
与现有技术相比,本发明的有益效果是:
(1)本发明优化了客户终端断网和虚网重连算法,设计断网重连守护进程,解决客户终端因断网重连消息服务器会引起客户终端线程数持续增长导致终端应用崩溃的问题。
(2)本发明设计基于四个报文的QoS消息可靠投递算法,即一个IM消息报文和一个IM应答报文的两次转发,与当前基于六个报文的QoS消息可靠传递技术相比,能节约网络资源和计算资源。
(3)本发明基于Netty框架,可适应各种复杂的网络情况下客户终端信息发布,具有网络状态感知能力、断网重连消息服务器能力及内外网穿透能力,有力保障客户终端与消息服务器之间稳定通信。
(4)本发明的QoS算法逻辑基本都是在客户端实现,减轻消息服务器的复杂度,提高消息服务器的吞吐量和负载能力。
(5)本发明的系统适用于多终端的信息发布,单台消息服务器可支持十万个以上终端正常通信。
附图说明
图1为当前的基于六个报文的QoS消息可靠投递机制示意图;
图2为本发明实施例的基于四个报文的QoS消息可靠投递机制示意图;
图3为本发明实施例的断网重连守护进程算法的流程图。
具体实施方式
为便于本领域技术人员理解本发明技术方案,现结合说明书附图对本发明技术方案做进一步的说明。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
本实施例公开了一种基于Netty消息驱动的终端信息发布系统,包括客户终端、消息服务器端和数据库服务器;
客户终端,用于提供收发消息的客户端。使用UDP通信协议与消息服务器通信,发起登录请求,与消息服务器成功建立会话后,会周期性地向消息服务器发送心跳报文,以及收发消息;同时具有网络状态自检、断网自动重连的能力。每个客户终端都有身份标识,每条消息都有消息指纹以确保消息唯一,提供基于四个报文的QoS机制以保证消息可靠投递。
使用ConcurrentHashMap作为发送和接收消息队列,ConcurrentHashMap的分段锁、线程安全性以及高并发等特点,能够使消息队列实现更简单、更高性能。
客户终端给每条发送消息分配一个指纹编码,唯一标识消息,供接收方去重处理,不影响用户体验。消息发出后,对该消息添加时间戳和重发次数属性,并写入QoS已发送消息队列,确保消息不丢失。
客户终端创建心跳保活守护进程,用于向消息服务器发送心跳包和接收消息服务器的心跳应答包。客户终端连接消息服务器后,自动激活该守护进程,若客户终端在设定的时间阙值内没有收到消息服务器的应答包,会触发网络异常事件,联动激活重连消息服务器的守护进程。另外消息服务器若在设定的时间阙值内没有收到客户终端的心跳包,会自动断开与该客户终端的连接,及时释放被占用资源。系统缺省提供5种心跳模式:3秒、10秒、30秒、60秒以及120秒心跳,满足众多常规的应用场景需求。
若客户终端发生断网或虚网接收不到消息服务器的心跳应答报文导致心跳接收超时时,此时将停止心跳守护进程,使用Observer观察者模式联动激活重连消息服务器守护进程;客户终端使用Observer观察者模式解除了事件主题和观察者间的耦合,让耦合的双方都依赖于抽象,能够降低代码间的耦合度。
通过上述的心跳保活守护进程和Observer观察者模式能够保证因重连线程数持续增长导致终端应用崩溃的问题,有效增强终端系统的稳定性和健壮性。
消息服务器,用于提供基于Netty框架的使用UDP通信协议的消息服务器。提供基于四个报文的QoS机制以保证消息可靠投递,支持离线消息存储到Kafka数据库,客户终端上线对离线消息进行自动续传。
消息服务端使用Netty的主从Reactor多线程模型,解决消息通信高性能IO问题。使用Netty的零拷贝技术,接收和发送消息使用ByteBuffer,直接内存进行Socket读写,减少服务器cpu的运行,同时节省服务器内存带宽。
消息服务器可以采用集群服务器,采用集群服务器能够更好的满足大量客户终端的信息发布。
数据库服务器,用于存储消息服务器向客户终端投递失败的离线消息的Kafka数据库。
参阅图1,当前终端信息发布技术基本上都是采用六个报文的QoS以确保消息可靠传递,即IM消息的R/A/N三个报文,IM应答的R/A/N三个报文(注:R表示客户端主动发送给服务器的报文,A表示服务器被动应答客户端的报文,一个A一定对应一个R,N表示服务器主动发送给客户端的报文)。一条消息可靠传递需要发送6个报文,会过多消耗消息服务器端的网络带宽和计算资源而造成消息服务器的性能问题。
参阅图2,本发明创新设计了基于四个报文的QoS消息可靠投递保障机制,一条消息可靠传递发送4个报文(即一条消息报文的两次转发,一条确认报文的两次转发)。具体传输如下:
在客户终端实现QoS送保证算法基本逻辑,分别创建一个发送消息QoS守护进程以保障消息可靠发送和一个接收消息QoS守护进程以保障消息有效接收。客户终端发送方每发送一条消息都会入站发送消息QoS守护进程的已发送消息队列,该守护进程会周期性地尝试重发消息,若被接收消息QoS守护进程告知某消息发送成功,会将该消息从已发送消息队列移除。客户终端发送方每接收到一条消息都会入站接收消息QoS守护进程的已接收消息队列,若接收的是应答消息报文,根据消息指纹通知发送消息QoS守护进程对方已接收该消息。接收消息QoS守护进程也会过滤处理重复接收到的消息,并周期性地清理超出一定时长的历史接收消息。消息服务器提供集中转发消息功能,也有类同客户终端的一个发送消息QoS守护进程和一个接收消息QoS守护进程。若转发消息不成功,向发送方回复消息成功发送伪应答报文,并把发送不成功的消息报文写入kafka离线消息数据库,待接收方上线后续传离线消息;若转发消息成功,向发送方回复消息成功发送应答报文;对离线消息的续传,不再向发送方回复应答报文的;客户终端接收方收到消息,把收到的消息写入本地的QoS已接收消息队列,根据消息指纹过滤重复收到的消息,接着向发送发回复应答报文。
本发明采用基于四个报文的QoS消息可靠投递算法,即一个IM消息报文和一个IM应答报文的两次转发,与当前的基于六个报文的QoS消息可靠传递相比,能节约网络资源和计算资源。QoS算法逻辑基本都是在客户端实现,减轻消息服务器的复杂度,提高消息服务器的吞吐量和负载能力。因此该系统特别适用于多终端的信息发布,单台消息服务器可支持十万个以上终端正常通信。
参阅图3,为解决客户终端因断网重连消息服务器会引起客户终端线程数持续增长导致终端应用崩溃的问题,优化了客户终端断网和虚网重连算法,设计断网重连守护进程。客户终端启动一个断网重连守护进程,设置最大重连时间周期阙值和重连线程的等待接收消息服务器反馈数据的超时时间,周期性地尝试重连消息服务器,记录重连次数,增大重连时间周期,直至连接成功为止。具体流程算法步骤如下:
S1、定义重连计算器,初始值为1;
S2、定义重连时间周期,按需设定,单位为秒;
S3、定义最大重连时间周期阙值,按需设定,单位为秒;
S4、定义重连消息服务器线程的等待接收消息服务器反馈数据的超时时间,按需设定,单位为秒;
S5、创建重连消息服务器线程;
S6、若连接消息服务器成功,则停止重连消息服务器守护进程;
S7、若连接消息服务器失败,则重连计数器累计值加1递增;
S8、判断重连计数器是否大于等于重连时间周期的几倍数,按需设定倍数;
S9、若否,则继续创建新一轮重连消息服务器线程;
S10、若是,则判断重连时间周期是否等于最大重连时间周期阙值;
S11、若是,则继续创建新的重连消息服务器线程;
S12、若否,则设置重连时间周期等于自身的几倍数,按需设定倍数;
S13、接着,判断重连时间周期是否大于重连时间周期阙值;
S14、若否,则继续创建新一轮重连消息服务器线程;
S15、若是,则设置重连时间周期等于重连时间周期阙值;
S16、接着,继续创建新一轮重连消息服务器线程;
S17、最后,直至客户终端成功连接消息服务器,停止重连消息服务器守护进程。
下面以终端设备采用商户公共展示屏为消息接收端设备和农贸市场管理APP为消息发送端设备,数据库服务器采用kafka数据库服务器为例具体说明:
本实施例中,商户公共展示屏和农贸市场管理APP与消息服务器连接通信,消息服务器与kafka数据库服务器连接通信。
商户公共展示屏基于安卓系统开发集成消息模块,商户公共展示屏开机联网情况下自动发起登录消息服务器连接请求,成功登录消息服务器后,使用Observer观察者模式联动激活心跳守护进程,心跳守护进程向消息服务器周期性地发送心跳报文,若商户公共展示屏发生断网或虚网接收不到消息服务器的心跳应答报文导致心跳接收超时,此时将停止心跳守护进程,使用Observer观察者模式联动激活重连消息服务器守护进程,初始化参数:定义重连时间周期为20秒,最大重连时间周期阙值为320秒,重连消息服务器线程的等待接收消息服务器反馈数据的超时时间为40秒,周期性地执行断网重连算法,直至成功连接消息服务器为止。商户公共展示屏监听等待接收农贸市场管理APP下发节目包、截屏、重启等消息指令,收到发送方消息后:
1)将收到的消息写入QoS消息接收队列,同时添加消息接收时间戳属性;
2)接着向发送方回复应答报文,应答报文发出后,将应答报文写入QoS消息发送队列,以保证消息成功发送;
3)根据消息指纹过滤重发收到的消息,根据消息接收时间戳,自动从QoS接收消息队列移除超出10分钟的历史消息。
农贸市场管理APP登录连接消息服务器流程、心跳流程、接收消息流程与商户公众展示屏相同,不再赘述。此处主要说明下农贸市场管理APP发送消息的流程,农贸市场管理APP向消息服务器发送消息,消息发送后,将该消息写入QoS消息发送队列,并添加消息发送时间戳和重复发送次数属性,在接收消息守护进程没有收到对方的应答报文之前,发送消息守护进程会周期性地尝试重发消息,每重发一次,重发次数属性值按1递增,若超出最大重发次数阙值,提示消息发送失败;相反,若接收消息守护进程成功收到对方的应答报文,则该消息从QoS消息发送队列移除,并提示消息发送成功。
消息服务器集中代理收发客户终端的消息,使用主从Reactor多线程模型异步收发消息,使用ByteBuffer内存零拷贝快速对数据进行处理。若向消息接收方转发消息失败,会序列化消息对象为json格式发送到kafka消息服务器。Kafka消息服务器收到离线消息数据后,分析离线消息数据以获得接收方设备身份标识,则将该数据存储到某个收方设备身份标识对应的消息队列。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
以上所述实施例仅表示发明的实施方式,本发明的保护范围不仅局限于上述实施例,对于本领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明保护范围。
Claims (10)
1.一种基于Netty消息驱动的终端信息发布系统,其特征在于:包括客户终端、消息服务器端和数据库服务器;所述客户终端与所述消息服务器连接通信,所述消息服务器与所述数据库服务器连接通信;
所述客户终端用于收发消息,使用UDP通信协议与所述消息服务器通信,向所述消息服务器发起登录请求,与消息服务器成功建立会话后,会周期性地向消息服务器发送心跳报文,以及收发消息;每个终端都有身份标识,每条消息都有消息指纹,提供基于四个报文的QoS机制;
所述消息服务器为基于Netty框架的使用UDP通信协议的服务器;提供基于四个报文的QoS机制,支持离线消息存储到所述数据库服务器,所述客户终端上线后对离线消息进行自动续传;
所述数据库服务器用于存储所述消息服务器向所述客户终端投递失败的离线消息;
当客户终端断网或虚网时,客户终端启动一个断网重连守护进程,设置最大重连时间周期阙值和重连线程的等待接收消息服务器反馈数据的超时时间,周期性地尝试重连消息服务器,记录重连次数,增大重连时间周期,直至连接成功为止。
2.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:所述断网重连守护进程具体包括下述步骤:
S1、定义重连计算器,初始值为1;
S2、定义重连时间周期,按需设定,单位为秒;
S3、定义最大重连时间周期阙值,按需设定,单位为秒;
S4、定义重连消息服务器线程的等待接收消息服务器反馈数据的超时时间,按需设定,单位为秒;
S5、创建重连消息服务器线程;
S6、若连接消息服务器成功,则停止重连消息服务器守护进程;
S7、若连接消息服务器失败,则重连计数器累计值加1递增;
S8、判断重连计数器是否大于等于重连时间周期的几倍数,按需设定倍数;
S9、若否,则继续创建新一轮重连消息服务器线程;
S10、若是,则判断重连时间周期是否等于最大重连时间周期阙值;
S11、若是,则继续创建新的重连消息服务器线程;
S12、若否,则设置重连时间周期等于自身的几倍数,按需设定倍数;
S13、接着,判断重连时间周期是否大于重连时间周期阙值;
S14、若否,则继续创建新一轮重连消息服务器线程;
S15、若是,则设置重连时间周期等于重连时间周期阙值;
S16、接着,继续创建新一轮重连消息服务器线程;
S17、最后,直至客户终端成功连接消息服务器,停止重连消息服务器守护进程。
3.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:所述基于四个报文的QoS机制的具体传输过程如下:在客户终端实现QoS送保证算法基本逻辑,分别创建一个发送消息QoS守护进程和一个接收消息QoS守护进程;
客户终端发送方每发送一条消息都会入站发送消息QoS守护进程的已发送消息队列,该守护进程会周期性地尝试重发消息,若被接收消息QoS守护进程告知某消息发送成功,会将该消息从已发送消息队列移除;
客户终端发送方每接收到一条消息都会入站接收消息QoS守护进程的已接收消息队列,若接收的是应答消息报文,根据消息指纹通知发送消息QoS守护进程对方已接收该消息;
消息服务器提供集中转发消息功能,也有类同客户终端的一个发送消息QoS守护进程和一个接收消息QoS守护进程,若转发消息不成功,向发送方回复消息成功发送伪应答报文,并把发送不成功的消息报文写入kafka离线消息数据库,待接收方上线后续传离线消息;若转发消息成功,向发送方回复消息成功发送应答报文;对离线消息的续传,不再向发送方回复应答报文的;
客户终端接收方收到消息,把收到的消息写入本地的QoS已接收消息队列,根据消息指纹过滤重复收到的消息,接着向发送发回复应答报文。
4.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:所述客户终端给每条发送消息分配一个指纹编码,唯一标识消息,供接收方去重处理;消息发出后,对该消息添加时间戳和重发次数属性,并写入QoS已发送消息队列,确保消息不丢失。
5.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:所述客户终端创建心跳保活守护进程,用于向所述消息服务器发送心跳包和接收所述消息服务器的心跳应答包;当所述客户终端连接所述消息服务器后,自动激活心跳保活守护进程。
6.根据权利要求5所述的基于Netty消息驱动的终端信息发布系统,其特征在于:若所述客户终端在设定的时间阙值内没有收到所述消息服务器的应答包,会触发网络异常事件,联动激活重连所述消息服务器的守护进程;
若所述消息服务器若在设定的时间阙值内没有收到所述客户终端的心跳包,会自动断开与所述客户终端的连接,释放被占用资源。
7.根据权利要求6所述的基于Netty消息驱动的终端信息发布系统,其特征在于:对于所述时间阈值,系统提供5种心跳模式:3秒、10秒、30秒、60秒和120秒心跳。
8.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:系统使用ConcurrentHashMap作为发送和接收消息队列;若客户终端发生断网或虚网时,使用Observer观察者模式联动激活所述断网重连守护进程。
9.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:所述消息服务端使用Netty的主从Reactor多线程模型,使用Netty的零拷贝技术,接收和发送消息使用ByteBuffer,直接内存进行Socket读写。
10.根据权利要求1所述的基于Netty消息驱动的终端信息发布系统,其特征在于:所述消息服务器采用集群服务器;所述数据库服务器为Kafka数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111219738.3A CN114125021B (zh) | 2021-10-20 | 2021-10-20 | 一种基于Netty消息驱动的终端信息发布系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111219738.3A CN114125021B (zh) | 2021-10-20 | 2021-10-20 | 一种基于Netty消息驱动的终端信息发布系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114125021A true CN114125021A (zh) | 2022-03-01 |
CN114125021B CN114125021B (zh) | 2024-01-30 |
Family
ID=80376145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111219738.3A Active CN114125021B (zh) | 2021-10-20 | 2021-10-20 | 一种基于Netty消息驱动的终端信息发布系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114125021B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328130A (zh) * | 2022-03-03 | 2022-04-12 | 深圳市明源云科技有限公司 | 服务器监控方法、系统、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070291656A1 (en) * | 2006-06-16 | 2007-12-20 | Harris Corporation | Method and system for outbound content-based QoS |
CN102611642A (zh) * | 2012-02-27 | 2012-07-25 | 杭州闪亮科技有限公司 | 处理异步消息的系统及其发送消息、监听处理任务的方法 |
CN106230984A (zh) * | 2016-09-12 | 2016-12-14 | 深圳市彬讯科技有限公司 | 一种采用Netty框架实现网页服务通道的方法 |
CN106941461A (zh) * | 2017-02-23 | 2017-07-11 | 江苏徐工信息技术股份有限公司 | 一种利用消息队列优化服务器处理请求的方法 |
-
2021
- 2021-10-20 CN CN202111219738.3A patent/CN114125021B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070291656A1 (en) * | 2006-06-16 | 2007-12-20 | Harris Corporation | Method and system for outbound content-based QoS |
CN102611642A (zh) * | 2012-02-27 | 2012-07-25 | 杭州闪亮科技有限公司 | 处理异步消息的系统及其发送消息、监听处理任务的方法 |
CN106230984A (zh) * | 2016-09-12 | 2016-12-14 | 深圳市彬讯科技有限公司 | 一种采用Netty框架实现网页服务通道的方法 |
CN106941461A (zh) * | 2017-02-23 | 2017-07-11 | 江苏徐工信息技术股份有限公司 | 一种利用消息队列优化服务器处理请求的方法 |
Non-Patent Citations (1)
Title |
---|
胡喜明: "基于响应式的服务推送框架设计", 计算机工程与设计 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328130A (zh) * | 2022-03-03 | 2022-04-12 | 深圳市明源云科技有限公司 | 服务器监控方法、系统、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114125021B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9271230B2 (en) | Cloud-enabled low power Wi-Fi sensor | |
EP3331197B1 (en) | A method and system for monitoring a connection status of a device | |
US10230807B2 (en) | Method and apparatus for energy-optimized data transmission using the OPC UA protocol in radio networks | |
CN106686056A (zh) | 一种安卓客户端通信装置及与服务器进行连接通信的方法 | |
CN102111419B (zh) | 一种基于消息中间件的客户端自动重连方法 | |
CN106993043B (zh) | 基于代理的数据通信系统和方法 | |
CN112118171A (zh) | 消息互通系统、方法、装置、计算机设备及可读存储介质 | |
CN113765976A (zh) | 一种通信方法和系统 | |
CN107508916B (zh) | 用于智能机器人的服务器链接管理方法 | |
CN107342896A (zh) | 一种信息获取方法、装置及系统 | |
CN113986501A (zh) | 实时数据库api无中断调用方法、系统、存储介质及服务器 | |
US5675740A (en) | System for sending messages in a session using a mixture of protocols and preventing usage of a protocol when the message failing to meet a set of criteria | |
CN114125021B (zh) | 一种基于Netty消息驱动的终端信息发布系统 | |
CN103516766A (zh) | 一种客户端与应用服务器间进行通信的方法和系统 | |
CN114640703A (zh) | 一种数据通信的方法、装置、电子设备及存储介质 | |
CN105515936A (zh) | 消息通信的方法、服务器和系统 | |
CN103312586A (zh) | 一种即时通信的方法、系统及服务器 | |
CN111866060A (zh) | 通信设备的tls连接方法、通信设备和通信系统 | |
CN113472810B (zh) | 一种基于tcp/ip协议socket通信的方法及系统 | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
CN116112536A (zh) | 一种tcp-串口通信透传的方法及装置 | |
CN106789510B (zh) | 冗余can总线通信系统的数据通信方法 | |
CN113259404B (zh) | 基于tcp/ip协议的工业通信中间件及其使用方法 | |
CN113965495A (zh) | 终端应用程序的探活方法、装置、电子设备及存储介质 | |
CN117082125A (zh) | 一种基于tcp/ip协议和对等端通信程序的数据交换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |