CN115665239A - 基于Netty框架的消息订阅方法、系统、电子设备及存储介质 - Google Patents
基于Netty框架的消息订阅方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115665239A CN115665239A CN202211313777.4A CN202211313777A CN115665239A CN 115665239 A CN115665239 A CN 115665239A CN 202211313777 A CN202211313777 A CN 202211313777A CN 115665239 A CN115665239 A CN 115665239A
- Authority
- CN
- China
- Prior art keywords
- message
- server
- theme
- client
- netty
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000012795 verification Methods 0.000 claims description 28
- 238000004891 communication Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 22
- 238000004140 cleaning Methods 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 37
- 239000000872 buffer Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000008878 coupling Effects 0.000 description 10
- 238000010168 coupling process Methods 0.000 description 10
- 238000005859 coupling reaction Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000011161 development Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及数据展示技术领域,公开了一种基于Netty框架的消息订阅方法、系统、电子设备及存储介质,该方法通过在消息客户端和消息服务器端之间建立消息推送中心,并通过主题消息请求使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件,进而利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,再通过消息推送通道将主题消息推送至消息客户端,相较于系统通过各自的数据传输通道进行数据传输,通过消息推送中心统一了消息客户端和消息服务器端之间的数据传输方式,降低了系统在数据传输方面的耦合度,进而降低了接入服务的开发成本,并且,减少了数据传输通道的数量,降低了通道维护成本。
Description
技术领域
本发明涉及业务管理技术领域,尤其涉及一种基于Netty框架的消息订阅方法、系统、电子设备及存储介质。
背景技术
目前,针对具有多子系统的大型系统,由于子系统之间并没有统一的交互协议,子系统之间在数据实时传输时采用轮训、阻塞式socket(套接字)等不同的数据传输方式,导致子系统之间在数据传输方面的耦合度较高,若开发者需要继续开发系统和新接入服务,则需要对不同的通道进行开发和维护,开发成本较大。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
鉴于以上所述现有技术的缺点,本发明公开了一种基于Netty框架的消息订阅方法、系统、电子设备及存储介质,以降低数据传输的耦合度,从而减少开发成本。
本发明公开了一种基于Netty框架的消息订阅方法,包括:获取目标主题对应的消息客户端、消息服务器端;在消息客户端和消息服务器端之间建立消息推送中心,其中,所述消息推送中心包括Netty服务器和消息队列中间件;在所述消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道,并向所述消息服务器端发送所述目标主题对应的主题消息请求,使得所述消息服务器端将所述目标主题对应的主题消息发送至所述消息队列中间件;利用所述消息队列中间件将携带所述主题消息的消息队列发送至所述Netty服务器,使得所述Netty服务器通过所述消息推送通道将所述主题消息推送至所述消息客户端。
可选地,在所述消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道,包括:获取所述目标主题对应的主题类型,其中,所述主题类型包括公共主题或私有主题;建立所述消息客户端与所述Netty服务器之间的通信连接,使得所述Netty服务器生成所述通信连接对应的连接标识;若所述主题类型包括公共主题,则将携带所述连接标识和所述目标主题的通道缓存请求发送至所述Netty服务器,使得所述Netty服务器将所述连接标识对应的通信连接作为所述目标主题对应的消息推送通道,并缓存所述消息推送通道;若所述主题类型包括私有主题,则向所述消息服务器端申请所述目标主题对应的访问签名,将携带所述连接标识、所述目标主题和所述访问签名的通道缓存请求发送至所述Netty服务器,使得所述Netty服务器根据预设的校验密钥对所述访问签名进行签名校验,并在签名校验通过后,将所述连接标识对应的通信连接作为所述目标主题对应的消息推送通道,并缓存所述消息推送通道。
可选地,通过以下方式获取目标主题对应的消息客户端:获取Web客户端,所述Web客户端包括客户端工具模块、目标主题以及所述目标主题对应的消息消费应用,其中,所述客户端工具模块用于在消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道;建立所述目标主题对应的消息客户端,其中,将所述目标主题和所述消息消费应用传入所述消息客户端;若主题类型包括私有主题,则将预设的鉴权接口地址传入所述消息客户端,其中,所述鉴权接口地址位于所述消息服务器端。
可选地,向所述消息服务器端申请所述目标主题对应的访问签名,包括:获取身份认证令牌,其中,所述身份认证令牌用于表征所述Web客户端;利用所述客户端工具模块将所述身份认证令牌、所述连接标识和所述目标主题发送至所述消息服务器端的鉴权接口地址,使得所述消息服务器端根据所述身份认证令牌进行身份认证,并在所述身份认证通过后,根据预设加密私钥对所述身份认证令牌、所述连接标识和所述目标主题中的至少一种进行加密,得到所述目标主题对应的访问签名;接收所述鉴权接口地址反馈的访问签名。
可选地,所述消息服务器端通过以下方式将所述目标主题对应的主题消息发送至所述消息队列中间件:所述消息服务器端设置有服务器端工具模块,所述消息推送中心还包括推送服务;利用所述服务器端工具模块对所述目标主题对应的主题消息进行压缩,得到信息摘要,并根据预设加密私钥对所述信息摘要进行加密,得到所述主题消息对应的推送签名,将所述推送签名和所述主题消息发送至所述推送服务;利用所述推送服务基于预设加密公钥对所述推送签名进行签名校验,并在签名校验通过后将所述主题消息推送至所述消息队列中间件。
可选地,在消息客户端和消息服务器端之间建立消息推送中心之后,所述方法还包括:获取目标主题的主题数量;若所述主题数量小于预设数量阈值,则将预设的数量最小值作为所述Netty服务器的服务器数量;若所述主题数量大于或等于预设数量阈值,则将所述主题数量作为所述Netty服务器的服务器数量,其中,所述目标主题、所述Netty服务器、所述消息推送通道三者之间一一对应。
可选地,在消息客户端和消息服务器端之间建立消息推送中心之后,所述方法还包括:对所述Netty服务器进行心跳检测,得到心跳检测结果,并监控目标主题的订阅状态;若满足第一清理条件或第二清理条件,则清理所述消息客户端和所述Netty服务器之间的消息推送通道,其中,所述第一清理条件包括心跳检测结果包括心跳超时,所述第二清理条件包括监控到所述订阅状态包括未订阅。
本发明公开了一种基于Netty框架的消息订阅系统,包括:获取模块,用于获取目标主题对应的消息客户端、消息服务器端;建立模块,用于在消息客户端和消息服务器端之间建立消息推送中心,其中,所述消息推送中心包括Netty服务器和消息队列中间件;订阅模块,用于在所述消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道,并向所述消息服务器端发送所述目标主题对应的主题消息请求,使得所述消息服务器端将所述目标主题对应的主题消息发送至所述消息队列中间件;推送模块,用于利用所述消息队列中间件将携带所述主题消息的消息队列发送至所述Netty服务器,使得所述Netty服务器通过所述消息推送通道将所述主题消息推送至所述消息客户端。
本发明公开了一种电子设备,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行上述的方法。
本发明公开了一种计算机可读存储介质,其上存储有计算机程序:所述计算机程序被处理器执行时实现上述的方法。
本发明的有益效果:
通过在消息客户端和消息服务器端之间建立消息推送中心,并通过主题消息请求使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件,进而利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,再通过消息推送通道将主题消息推送至消息客户端。这样,相较于系统通过各自的数据传输通道进行数据传输,通过消息推送中心统一了消息客户端和消息服务器端之间的数据传输方式,降低了系统在数据传输方面的耦合度,进而降低了接入服务的开发成本,并且,减少了数据传输通道的数量,降低了通道维护成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明实施例中一个基于Netty框架的消息订阅方法的流程示意图;
图2是本发明实施例中一个基于Netty框架的消息订阅框架的结构示意图;
图3是本发明实施例中另一个基于Netty框架的消息订阅方法的流程示意图;
图4是本发明实施例中一个基于Netty框架的消息订阅系统的结构示意图;
图5是本发明实施例中一个电子设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的子样本可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
结合图1所示,本公开实施例提供了一种基于Netty框架的消息订阅方法,包括:
步骤S101,获取目标主题对应的消息客户端、消息服务器端;
步骤S102,在消息客户端和消息服务器端之间建立消息推送中心;
其中,消息推送中心包括Netty服务器和消息队列中间件;
步骤S103,在消息客户端和Netty服务器之间建立目标主题对应的消息推送通道,并向消息服务器端发送目标主题对应的主题消息请求,使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件;
步骤S104,利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,使得Netty服务器通过消息推送通道将主题消息推送至消息客户端。
采用本公开实施例提供的基于Netty框架的消息订阅方法,通过在消息客户端和消息服务器端之间建立消息推送中心,并通过主题消息请求使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件,进而利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,再通过消息推送通道将主题消息推送至消息客户端。这样,相较于系统通过各自的数据传输通道进行数据传输,通过消息推送中心统一了消息客户端和消息服务器端之间的数据传输方式,降低了系统在数据传输方面的耦合度,进而降低了接入服务的开发成本,并且,减少了数据传输通道的数量,降低了通道维护成本。
在一些实施例中,Netty服务器基于JAVA NIO(non-blockinglO,非阻塞输入/输出)构建,是一种异步、基于事件驱动(即Netty会根据客户端的连接请求、读、写等事件做出相应的响应)的网络应用框架,具有高性能、高并发的优点。它用于开发基于TCP(Transmission Control Protocol,传输控制协议)协议的网络IO(输入/输出)程序,同时也支持UDP(User Datagram Protocol,用户数据报协议)、HTTP(Hyper Text TransferProtocol,超文本传输协议)、WebSocket(基于TCP的全双工通信协议)等其他主流协议,其中,利用Netty提供的可拓展事件模型便于添加自定义业务逻辑、利用Netty提供的通用通信API(Application Programming Interface,应用程序编程接口)简化JAVANIO的繁琐代码。
在一些实施例中,Netty服务器支持零拷贝功能,使得Netty的接收和发送ByteBuffer(字节缓冲区)采用DIRECTBUFFERS(内存回收机制),使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝,如果使用传统的堆内存(HEAPBUFFERS)进行Socket读写,JVM会将堆内存Buffer(缓冲区类)拷贝一份到直接内存中,然后才写入Socket中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝,Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象,用户可以像操作一个Buffer那样方便的对组合Buffer进行操作,避免了传统通过内存拷贝的方式将几个小Buffer合并成一个大的Buffer,Netty的文件传输采用了Transfer To方法,它可以直接将文件缓冲区的数据发送到目标频道,避免了传统通过循环写入方式导致的内存拷贝问题,从而提高传输效率。
可选地,在消息客户端和Netty服务器之间建立目标主题对应的消息推送通道,包括:获取目标主题对应的主题类型,其中,主题类型包括公共主题或私有主题;建立消息客户端与Netty服务器之间的通信连接,使得Netty服务器生成通信连接对应的连接标识;若主题类型包括公共主题,则将携带连接标识和目标主题的通道缓存请求发送至Netty服务器,使得Netty服务器将连接标识对应的通信连接作为目标主题对应的消息推送通道,并缓存消息推送通道;若主题类型包括私有主题,则向消息服务器端申请目标主题对应的访问签名,将携带连接标识、目标主题和访问签名的通道缓存请求发送至Netty服务器,使得Netty服务器根据预设的校验密钥对访问签名进行签名校验,并在签名校验通过后,将连接标识对应的通信连接作为目标主题对应的消息推送通道,并缓存消息推送通道。
可选地,通过以下方式获取目标主题对应的消息客户端:获取Web(World WideWeb,即全球广域网)客户端,Web客户端包括客户端工具模块、目标主题以及目标主题对应的消息消费应用,其中,客户端工具模块用于在消息客户端和Netty服务器之间建立目标主题对应的消息推送通道;建立目标主题对应的消息客户端,其中,将目标主题和消息消费应用传入消息客户端;若主题类型包括私有主题,则将预设的鉴权接口地址传入消息客户端,其中,鉴权接口地址位于消息服务器端。
在一些实施例中,通过SDK(Software Development Kit,软件开发工具包)设置客户端工具模块。
可选地,向消息服务器端申请目标主题对应的访问签名,包括:获取身份认证令牌,其中,身份认证令牌用于表征Web客户端;利用客户端工具模块将身份认证令牌、连接标识和目标主题发送至消息服务器端的鉴权接口地址,使得消息服务器端根据身份认证令牌进行身份认证,并在身份认证通过后,根据预设加密私钥对身份认证令牌、连接标识和目标主题中的至少一种进行加密,得到目标主题对应的访问签名;接收鉴权接口地址反馈的访问签名。
这样,若消息客户端订阅的主题类型为私有主题,则消息客户端先向消息服务器端申请目标主题对应的访问签名,再使得Netty服务器根据预设的校验密钥对访问签名进行签名校验,并在签名校验通过后缓存消息推送通道,从而实现数据传输,其中,将主题类型分为公共主题和私有主题,提高了主题订阅的灵活性和安全性。
在一些实施例中,消息服务器端设置有Redis(Remote Dictionary Server,远程字典服务),通过Redis存储预设加密私钥和预设加密公钥。
可选地,消息服务器端通过以下方式将目标主题对应的主题消息发送至消息队列中间件:消息服务器端设置有服务器端工具模块,消息推送中心还包括推送服务;利用服务器端工具模块对目标主题对应的主题消息进行压缩,得到信息摘要,并根据预设加密私钥对信息摘要进行加密,得到主题消息对应的推送签名,将推送签名和主题消息发送至推送服务;利用推送服务基于预设加密公钥对推送签名进行签名校验,并在签名校验通过后将主题消息推送至消息队列中间件。
在一些实施例中,通过SDK设置服务器端工具模块。
可选地,在消息客户端和消息服务器端之间建立消息推送中心之后,方法还包括:获取目标主题的主题数量;若主题数量小于预设数量阈值,则将预设的数量最小值作为Netty服务器的服务器数量;若主题数量大于或等于预设数量阈值,则将主题数量作为Netty服务器的服务器数量,其中,目标主题、Netty服务器、消息推送通道三者之间一一对应。
这样,根据目标主题的数量提供对应数量的Netty服务器,从而提高数据传输效率,同时,在目标主题减少时减少对应的数量的Netty服务器,降低传输成本。
可选地,在消息客户端和消息服务器端之间建立消息推送中心之后,方法还包括:对Netty服务器进行心跳检测,得到心跳检测结果,并监控目标主题的订阅状态;若满足第一清理条件或第二清理条件,则清理消息客户端和Netty服务器之间的消息推送通道,其中,第一清理条件包括心跳检测结果包括心跳超时,第二清理条件包括监控到订阅状态包括未订阅。
在一些实施例中,心跳检测包括在TCP长连接中客户端和服务端定期的互相发送数据包,这样可以确保服务的正确运行,保证服务在线和TCP长连接的可靠性;通常的心跳实现机制是客户端定期的向服务端发送数据包,服务端接收到数据后进行应答,这样就保证了TCP的长连接,如果客户端没有应答,就关闭对应的连接,节省资源。
结合图2所示,本公开实施例提供了一种基于Netty框架的消息订阅框架,包括Web客户端201、消息推送中心202、消息服务器端203,其中,Web客户端包括消息客户端(例如Web浏览器等)、客户端工具模块(PushClientSDK);消息客户端用于获取目标主题和接收目标主题对应的主题消息,其中,目标主题对应的主题类型包括公共主题或私有主题;客户端工具模块用于在消息客户端和Netty服务器之间建立目标主题对应的消息推送通道,并接收Netty服务器推送的主题消息,还用于执行私有主题对应的鉴权任务、对Netty服务器进行心跳检测、向消息服务器端发送目标主题对应的主题消息请求;消息推送中心包括推送服务、消息队列中间件(MQ集群)、Netty服务器;推送服务用于基于预设加密公钥对推送签名进行签名校验,并在签名校验通过后将主题消息推送至消息队列中间件;消息队列中间件用于将携带主题消息的消息队列发送至Netty服务器;Netty服务器用于通过消息推送通道将主题消息推送至消息客户端;消息服务器端包括业务系统、服务器端工具模块(PushServerSDK/API)、能力平台、Redis;业务系统用于获取目标主题对应的主题消息;服务器端工具模块用于推送主题消息;能力平台用于验证访问签名;Redis用于存储预设加密私钥和预设加密公钥。
采用本公开实施例提供的基于Netty框架的消息订阅方法,通过在消息客户端和消息服务器端之间建立消息推送中心,并通过主题消息请求使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件,进而利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,再通过消息推送通道将主题消息推送至消息客户端。这样,相较于系统通过各自的数据传输通道进行数据传输,通过消息推送中心统一了消息客户端和消息服务器端之间的数据传输方式,降低了系统在数据传输方面的耦合度,进而降低了接入服务的开发成本,并且,减少了数据传输通道的数量,降低了通道维护成本。
结合图3所示,本公开实施例提供了一种基于Netty框架的消息订阅方法,包括:
步骤S301,客户端获取目标主题,并建立目标主题对应的消息客户端;
步骤S302,客户端在消息客户端和Netty服务器之间建立WebSocket连接;
步骤S303,客户端向消息服务器端发送签名获取请求;
其中,令牌获取请求包括身份认证令牌、连接标识和目标主题;
步骤S304,消息服务器端根据身份认证令牌进行身份认证,并在身份认证通过后,生成目标主题对应的访问签名;
步骤S305,消息服务器端向客户端发送访问签名;
步骤S306,客户端向Netty服务器发送通道缓存请求;
其中,通道缓存请求携带有连接标识、目标主题和访问签名;
步骤S307,Netty服务器根据预设的校验密钥对访问签名进行签名校验,并在签名校验通过后,缓存消息推送通道;
步骤S308,客户端向消息服务器端发送目标主题对应的主题消息请求;
步骤S309,消息服务器端获取目标主题对应的主题消息;
步骤S310,消息服务器端根据目标主题对应的主题消息生成主题消息对应的推送签名;
步骤S311,消息服务器端向推送服务发送推送签名和主题消息;
步骤S312,推送服务基于预设加密公钥对推送签名进行签名校验,并在签名校验通过后将主题消息推送至消息队列中间件;
步骤S313,消息队列中间件向Netty服务器发送携带主题消息的消息队列;
步骤S314,Netty服务器通过消息推送通道向消息客户端推送主题消息。
采用本公开实施例提供的基于Netty框架的消息订阅方法,通过在消息客户端和消息服务器端之间建立消息推送中心,并通过主题消息请求使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件,进而利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,再通过消息推送通道将主题消息推送至消息客户端,具有以下优点:
第一、相较于系统通过各自的数据传输通道进行数据传输,通过消息推送中心统一了消息客户端和消息服务器端之间的数据传输方式,降低了系统在数据传输方面的耦合度,进而降低了接入服务的开发成本;
第二、减少了数据传输通道的数量,降低了通道维护成本;
第三、若消息客户端订阅的主题类型为私有主题,则消息客户端先向消息服务器端申请目标主题对应的访问签名,再使得Netty服务器根据预设的校验密钥对访问签名进行签名校验,并在签名校验通过后缓存消息推送通道,从而实现数据传输,其中,将主题类型分为公共主题和私有主题,提高了主题订阅的灵活性和安全性;
第四、根据目标主题的数量提供对应数量的Netty服务器,从而提高数据传输效率,同时,在目标主题减少时减少对应的数量的Netty服务器,降低传输成本。
结合图4所示,本公开实施例提供了一种基于Netty框架的消息订阅系统,包括获取模块401、建立模块402、订阅模块403和推送模块404。获取模块401用于获取目标主题对应的消息客户端、消息服务器端;建立模块402用于在消息客户端和消息服务器端之间建立消息推送中心,其中,消息推送中心包括Netty服务器和消息队列中间件;订阅模块403用于在消息客户端和Netty服务器之间建立目标主题对应的消息推送通道,并向消息服务器端发送目标主题对应的主题消息请求,使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件;推送模块404用于利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,使得Netty服务器通过消息推送通道将主题消息推送至消息客户端。
采用本公开实施例提供的基于Netty框架的消息订阅系统,通过在消息客户端和消息服务器端之间建立消息推送中心,并通过主题消息请求使得消息服务器端将目标主题对应的主题消息发送至消息队列中间件,进而利用消息队列中间件将携带主题消息的消息队列发送至Netty服务器,再通过消息推送通道将主题消息推送至消息客户端。这样,相较于系统通过各自的数据传输通道进行数据传输,通过消息推送中心统一了消息客户端和消息服务器端之间的数据传输方式,降低了系统在数据传输方面的耦合度,进而降低了接入服务的开发成本,并且,减少了数据传输通道的数量,降低了通道维护成本。
图5示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图5示出的电子设备的计算机系统500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CentralProcessingUnit,CPU)501,其可以根据存储在只读存储器(Read-OnlyMemory,ROM)502中的程序或者从储存部分508加载到随机访问存储器(RandomAccessMemory,RAM)503中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM503中,还存储有系统操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(Input/Output,I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分507;包括硬盘等的储存部分508;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入储存部分508。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。
本公开实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开的电子设备,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子设备执行如上方法的各个步骤。
在本实施例中,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、图形处理器(Graphics Processing Unit,简称GPU),网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选地,并且操作的顺序可以变化。一些实施例的部分和子样本可以被包括在或替换其他实施例的部分和子样本。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的子样本、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它子样本、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些子样本可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (10)
1.一种基于Netty框架的消息订阅方法,其特征在于,包括:
获取目标主题对应的消息客户端、消息服务器端;
在消息客户端和消息服务器端之间建立消息推送中心,其中,所述消息推送中心包括Netty服务器和消息队列中间件;
在所述消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道,并向所述消息服务器端发送所述目标主题对应的主题消息请求,使得所述消息服务器端将所述目标主题对应的主题消息发送至所述消息队列中间件;
利用所述消息队列中间件将携带所述主题消息的消息队列发送至所述Netty服务器,使得所述Netty服务器通过所述消息推送通道将所述主题消息推送至所述消息客户端。
2.根据权利要求1所述的方法,其特征在于,在所述消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道,包括:
获取所述目标主题对应的主题类型,其中,所述主题类型包括公共主题或私有主题;
建立所述消息客户端与所述Netty服务器之间的通信连接,使得所述Netty服务器生成所述通信连接对应的连接标识;
若所述主题类型包括公共主题,则将携带所述连接标识和所述目标主题的通道缓存请求发送至所述Netty服务器,使得所述Netty服务器将所述连接标识对应的通信连接作为所述目标主题对应的消息推送通道,并缓存所述消息推送通道;
若所述主题类型包括私有主题,则向所述消息服务器端申请所述目标主题对应的访问签名,将携带所述连接标识、所述目标主题和所述访问签名的通道缓存请求发送至所述Netty服务器,使得所述Netty服务器根据预设的校验密钥对所述访问签名进行签名校验,并在签名校验通过后,将所述连接标识对应的通信连接作为所述目标主题对应的消息推送通道,并缓存所述消息推送通道。
3.根据权利要求2所述的方法,其特征在于,通过以下方式获取目标主题对应的消息客户端:
获取Web客户端,所述Web客户端包括客户端工具模块、目标主题以及所述目标主题对应的消息消费应用,其中,所述客户端工具模块用于在消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道;
建立所述目标主题对应的消息客户端,其中,将所述目标主题和所述消息消费应用传入所述消息客户端;
若主题类型包括私有主题,则将预设的鉴权接口地址传入所述消息客户端,其中,所述鉴权接口地址位于所述消息服务器端。
4.根据权利要求3所述的方法,其特征在于,向所述消息服务器端申请所述目标主题对应的访问签名,包括:
获取身份认证令牌,其中,所述身份认证令牌用于表征所述Web客户端;
利用所述客户端工具模块将所述身份认证令牌、所述连接标识和所述目标主题发送至所述消息服务器端的鉴权接口地址,使得所述消息服务器端根据所述身份认证令牌进行身份认证,并在所述身份认证通过后,根据预设加密私钥对所述身份认证令牌、所述连接标识和所述目标主题中的至少一种进行加密,得到所述目标主题对应的访问签名;
接收所述鉴权接口地址反馈的访问签名。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述消息服务器端通过以下方式将所述目标主题对应的主题消息发送至所述消息队列中间件:
所述消息服务器端设置有服务器端工具模块,所述消息推送中心还包括推送服务;
利用所述服务器端工具模块对所述目标主题对应的主题消息进行压缩,得到信息摘要,并根据预设加密私钥对所述信息摘要进行加密,得到所述主题消息对应的推送签名,将所述推送签名和所述主题消息发送至所述推送服务;
利用所述推送服务基于预设加密公钥对所述推送签名进行签名校验,并在签名校验通过后将所述主题消息推送至所述消息队列中间件。
6.根据权利要求1至4任一项所述的方法,其特征在于,在消息客户端和消息服务器端之间建立消息推送中心之后,所述方法还包括:
获取目标主题的主题数量;
若所述主题数量小于预设数量阈值,则将预设的数量最小值作为所述Netty服务器的服务器数量;
若所述主题数量大于或等于预设数量阈值,则将所述主题数量作为所述Netty服务器的服务器数量,其中,所述目标主题、所述Netty服务器、所述消息推送通道三者之间一一对应。
7.根据权利要求1至4任一项所述的方法,其特征在于,在消息客户端和消息服务器端之间建立消息推送中心之后,所述方法还包括:
对所述Netty服务器进行心跳检测,得到心跳检测结果,并监控目标主题的订阅状态;
若满足第一清理条件或第二清理条件,则清理所述消息客户端和所述Netty服务器之间的消息推送通道,其中,所述第一清理条件包括心跳检测结果包括心跳超时,所述第二清理条件包括监控到所述订阅状态包括未订阅。
8.一种基于Netty框架的消息订阅系统,其特征在于,包括:
获取模块,用于获取目标主题对应的消息客户端、消息服务器端;
建立模块,用于在消息客户端和消息服务器端之间建立消息推送中心,其中,所述消息推送中心包括Netty服务器和消息队列中间件;
订阅模块,用于在所述消息客户端和所述Netty服务器之间建立所述目标主题对应的消息推送通道,并向所述消息服务器端发送所述目标主题对应的主题消息请求,使得所述消息服务器端将所述目标主题对应的主题消息发送至所述消息队列中间件;
推送模块,用于利用所述消息队列中间件将携带所述主题消息的消息队列发送至所述Netty服务器,使得所述Netty服务器通过所述消息推送通道将所述主题消息推送至所述消息客户端。
9.一种电子设备,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:
所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211313777.4A CN115665239A (zh) | 2022-10-25 | 2022-10-25 | 基于Netty框架的消息订阅方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211313777.4A CN115665239A (zh) | 2022-10-25 | 2022-10-25 | 基于Netty框架的消息订阅方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115665239A true CN115665239A (zh) | 2023-01-31 |
Family
ID=84991694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211313777.4A Pending CN115665239A (zh) | 2022-10-25 | 2022-10-25 | 基于Netty框架的消息订阅方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115665239A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361038A (zh) * | 2023-06-02 | 2023-06-30 | 山东浪潮科学研究院有限公司 | 一种加速计算管理方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
CN111309501A (zh) * | 2020-04-02 | 2020-06-19 | 无锡弘晓软件有限公司 | 高可用分布式队列 |
CN112307487A (zh) * | 2019-08-02 | 2021-02-02 | 中国电信股份有限公司 | 消息处理方法和装置、消息集群服务器 |
CN112333083A (zh) * | 2020-10-30 | 2021-02-05 | 平安付科技服务有限公司 | 交易信息处理方法、装置、计算机设备及计算机可读介质 |
-
2022
- 2022-10-25 CN CN202211313777.4A patent/CN115665239A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
CN112307487A (zh) * | 2019-08-02 | 2021-02-02 | 中国电信股份有限公司 | 消息处理方法和装置、消息集群服务器 |
CN111309501A (zh) * | 2020-04-02 | 2020-06-19 | 无锡弘晓软件有限公司 | 高可用分布式队列 |
CN112333083A (zh) * | 2020-10-30 | 2021-02-05 | 平安付科技服务有限公司 | 交易信息处理方法、装置、计算机设备及计算机可读介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361038A (zh) * | 2023-06-02 | 2023-06-30 | 山东浪潮科学研究院有限公司 | 一种加速计算管理方法、系统、设备及存储介质 |
CN116361038B (zh) * | 2023-06-02 | 2023-09-08 | 山东浪潮科学研究院有限公司 | 一种加速计算管理方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110199302B (zh) | 事件驱动的区块链工作流处理 | |
US20220272075A1 (en) | Efficient sensor data delivery | |
US10255230B2 (en) | Lock-free processing of stateless protocols over RDMA | |
Cozzolino et al. | Fades: Fine-grained edge offloading with unikernels | |
EP4207688A1 (en) | Asynchronous bookkeeping method and apparatus for blockchain, medium, and electronic device | |
US8799861B2 (en) | Performance-testing a system with functional-test software and a transformation-accelerator | |
CN112163412B (zh) | 数据校验方法、装置、电子设备及存储介质 | |
CN105009089B (zh) | 用于促进对指令违反行为的管理的设备和方法 | |
CN113079164B (zh) | 堡垒机资源的远程控制方法、装置、存储介质及终端设备 | |
CN112416632B (zh) | 事件通信方法、装置、电子设备和计算机可读介质 | |
CN115665239A (zh) | 基于Netty框架的消息订阅方法、系统、电子设备及存储介质 | |
CN107817962B (zh) | 一种远程控制方法、装置、控制服务器及存储介质 | |
CN112434620A (zh) | 场景文字识别方法、装置、设备和计算机可读介质 | |
US9191298B1 (en) | Distributed forensic investigation | |
EP2724489B1 (en) | Validating download success | |
CN111225255B (zh) | 目标视频推送播放方法、装置、电子设备及存储介质 | |
CN115134254B (zh) | 一种网络模拟方法、装置、设备及存储介质 | |
CN115865281A (zh) | 工业仪表通信数据丢包处理方法、系统、设备及存储介质 | |
CN113810264B (zh) | 信息传输方法、装置、电子设备和存储介质 | |
WO2019054042A1 (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN115033904A (zh) | 数据处理方法、装置、系统、介质和产品 | |
CN114189518A (zh) | 应用于计算机集群的通信方法及通信装置 | |
CN104011718A (zh) | 用于检测社交媒体中的趋势的方法、计算机程序和计算机 | |
CN113689296A (zh) | 一种异步可信计算的合约调度方法、装置和电子设备 | |
CN112434619A (zh) | 病例信息提取方法、装置、设备和计算机可读介质 |
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 |