一种消息推送方法、系统、设备及存储介质与流程

文档序号:26584806发布日期:2021-09-10 18:47阅读:73来源:国知局
一种消息推送方法、系统、设备及存储介质与流程

1.本发明涉及数据处理领域,尤其涉及一种消息推送方法、系统、设备及存储介质。


背景技术:

2.随着业务的发展,web平台项目越来越复杂,业务量越来越大,为了实现负载均衡,会使用分布式环境部署web平台;但现有的websocke进程只能在单机部署中使用,即websocket连接只能让单个客户端和单个服务器之间进行数据传输,使得服务器产生的消息时只能将其消息单独发布给单个客户端供一个用户查看,而其他客户端则无法接收到该服务器所产生的消息,无法实现实时将服务器推送的消息分享给每个用户的目的。


技术实现要素:

3.为了克服现有技术的不足,本发明的目的之一在于提供一种消息推送方法,有效确保每个用户可实时接收到服务器推送的消息,提高消息共享效率。
4.本发明的目的之二在于提供一种消息推送系统。
5.本发明的目的之三在于提供一种电子设备。
6.本发明的目的之四在于提供一种存储介质。
7.本发明的目的之一采用如下技术方案实现:
8.一种消息推送方法,应用在包括至少一代理服务器和多个后台服务器的分布式系统中,每个所述后台服务器均对应有至少一客户端;其消息推送方法包括:
9.所述代理服务器响应于连接请求在所述后台服务器与所述客户端之间建立连接通道,并对所有已建立连接的客户端的标识信息进行存储;
10.在任意一所述后台服务器产生消息时,所述代理服务器从订阅的消息队列中接收所述后台服务器所发布的消息,并根据所述标识信息将消息推送至所有已建立连接的客户端中。
11.进一步地,所述代理服务器采用websocket协议在所述后台服务器与所述客户端之间建立长连接。
12.进一步地,所述客户端与所述后台服务器之间建立websocket连接后,所述代理服务器为所述客户端建立对应的标识信息,所述标识信息为所述客户端的唯一标识码。
13.进一步地,所有已建立连接的所述后台服务器共同订阅的同一消息队列的主题消息,并在任意一所述后台服务器产生消息后将其发布到所述消息队列的主题消息中。
14.进一步地,当多个所述后台服务器同时产生消息时,按照预设的优先级规则将多个后台服务器所发布的消息依次发布至所订阅的消息队列中。
15.进一步地,还包括:
16.任意一所述后台服务器将产生的消息发布至所述消息队列的同时,对消息进行副本处理并写入非易失内存中进行存储;若识别到所述消息队列中的消息出现丢失时,从所述非易失内存中获取消息并将其推送至所述客户端中。
17.进一步地,还包括:
18.任意一所述后台服务器在产生所述消息时对所述消息添加唯一的约束编码,所述代理服务器从所述消息队列中获取所述消息时,识别所述消息的约束编码,判断该消息的约束编码是否与前一消息的约束编码相同,若相同,则丢弃该消息,若不相同,才将该消息推送至所述客户端中。
19.本发明的目的之二采用如下技术方案实现:
20.一种消息推送系统,包括:
21.多个后台服务器,与多个客户端之间建立websocket连接,并在任意一所述后台服务器产生消息时将所述消息发布至多个所述后台服务器共同订阅的消息队列中;
22.代理服务器,用于从订阅的消息队列中接收所述后台服务器所发布的消息,并将所述消息推送至所有已建立websocket连接的客户端中。
23.本发明的目的之三采用如下技术方案实现:
24.一种电子设备,其包括处理器、存储器及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的消息推送方法。
25.本发明的目的之四采用如下技术方案实现:
26.一种存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述的消息推送方法。
27.相比现有技术,本发明的有益效果在于:
28.让多个后台服务器均订阅同一消息队列,在任意一后台服务器产生消息时,将产生的消息发布至消息队列中,订阅了消息队列的服务器向不同的客户端推送消息,确保不同服务器上的每个用户可实时接收到服务器推送的消息,提高消息共享效率。
附图说明
29.图1为本发明分布式系统的连接示意图;
30.图2为本发明消息推送方法的流程示意图。
具体实施方式
31.下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
32.实施例一
33.本实施例提供一种消息推送方法,该系统基于websocket和消息队列实现实时通信,能够有效确保每个用户都能实时且无误地接收到服务器推送到消息。
34.如图1所示,本实施例的消息推送方法应用在分布式web系统中,该系统包括至少一代理服务器和多个后台服务器,每个所述后台服务器均对应有至少一客户端;在本实施例中,代理服务器是web服务器,其使用websocket协议实现客户端与后台服务器之间的实时双向通信,使得用户可通过客户端连接上指定的后台服务器,后台服务器也可向其连上的客户端发送消息。但现有的后台服务器无法直接向与其他服务器相连的客户端发送消息,而利用本实施例的方法即可在任意一后台服务器产生消息时,将消息推送给与该后台
服务器相连的客户端上,同时还可将消息推送给其他后台服务器上的客户端,实现将任意一后台服务器发布的消息实时发送给不同的客户端中,确保每个用户都可实时接收到该后台服务器所发布的消息。
35.如图2所示,本实施例的消息推送方法具体包括如下步骤:
36.所述代理服务器响应于连接请求在所述后台服务器与所述客户端之间建立连接通道,并对所有已建立连接的客户端的标识信息进行存储;
37.在任意一所述后台服务器产生消息时,所述代理服务器从订阅的消息队列中接收所述后台服务器所发布的消息,并根据所述标识信息将消息推送至所有已建立连接的客户端中。
38.其中,当用户利用其客户端登陆系统时,客户端向后台服务器发起websocket连接,此时,所述代理服务器使用websocket协议在客户端与后台服务器之间建立websocket连接,其websocket连接是长连接,使得连接长期处于打开状态,确保消息传输的实时性。所述客户端利用所述代理服务器与后台服务器之间建立websocket连接后,所述代理服务器获取所述客户端的相关信息,其信息包括客户端所在终端的终端名称、客户端登陆的用户身份信息、imei、终端id、mac地址等,所述代理服务器根据获取的信息为所述客户端建立对应的标识信息,而该标识信息则是利用客户端唯一标识码生成,例如imei、mac地址等。
39.当多个后台服务器启动时,websocket进程启动,所有已建立websocket连接的所述后台服务器共同订阅的同一消息队列的主题消息,当任意一所述后台服务器产生消息时,该后台服务器即可将其产生的消息发布到所述消息队列的主题消息中。而所述消息队列可通过消息队列服务器来构建,是一个使用队列来通信的组件。多个后台服务器按照其各自的运行操作产生消息时,会按照消息产生的时间按照顺序写入所述消息队列中,所述消息队列中存储有多个后台服务器的消息,而所述消息队列则会以先进先出的方式将存储在消息队列中的消息推送至不同的客户端中。
40.本实施例中以订阅的方式让所有建立websocket连接的客户端都能消费所述消息队列所推送的消息。若多个后台服务器在同一时刻同时产生消息并同时发布至所述消息队列中,则可按照预设的优先级规律将多个后台服务器所产生的消息进行排序,将排序后的消息依次存储在所订阅的消息队列中;其优先级规则可以是根据实际业务需求对多个后台服务器进行优先级设置,若将一后台服务器的优先级设置为最高,在多个消息同时产生时,将优先级最高的后台服务器的消息先写入消息队列中,让优先级最高的后台服务器所产生的消息最先推送至所有客户端中。
41.而本实施例任意一后台服务器产生消息后,将消息发布至消息队列的topic消息中,其后,所述代理服务器从所述消息队列中获取消息,并根据标识信息将该消息发送至标识信息对应的客户端中,此时,已建立websocket连接的所有客户端都可接收到该后台服务器产生的消息,确保不同服务器上的每个用户都能实时且无误地接收到服务器推送到信息。
42.此外,当所述消息队列的服务器发生崩溃时,所述消息队列中存储的信息会发生丢失,使得无法将后台服务器产生的消息推送至所有客户端中,因此,本实施例在任意一所述后台服务器将产生的消息发布至所述消息队列的同时,对消息进行副本处理并写入非易失内存中进行存储;非易失内存具有信息防丢失的特点,可对后台服务器所产生的消息进
行存储,可避免消息队列服务器崩溃时消息丢失的情况;若识别到所述消息队列中的消息出现丢失时需要重启服务器时,即可从所述非易失内存中获取消息并将其推送至所述客户端中,完成消息推送的目的。
43.与此同时,任意一所述后台服务器在产生所述消息时对所述消息添加唯一的约束编码,该约束编码可通过随机的方式生成,不同消息的约束编码不同,不同后台服务器发送的约束编码也不同,将约束编码加密后添加至消息中,所述代理服务器从所述消息队列中获取所述消息后,对消息中的约束编码进行解密后,识别出所述消息的约束编码,并判断该消息的约束编码是否与前一消息的约束编码相同,若相同,则代表该消息为重复消息,因此丢弃重复的消息,避免将重复的消息重复推送给客户端;若不相同,才将该消息推送至所述客户端中。
44.实施例二
45.本实施例提供一种消息推送系统,该消息推送系统执行实施例一所述的基于分布式系统的消息推送方法,其消息推送方法包括多个后台服务器和至少一台代理服务器;
46.多个后台服务器与多个客户端之间建立websocket连接,并在建立websocket连接时将客户端的标识信息进行保存;当任意一所述后台服务器产生消息时将所述消息发布至多个所述后台服务器共同订阅的消息队列中;所述代理服务器则用于从订阅的消息队列中接收所述后台服务器所发布的消息,并根据所述标识信息将所述消息推送至所有已建立websocket连接的客户端中。
47.实施例三
48.本实施例提供一种电子设备,其包括处理器、存储器及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一中的消息推送方法;另外,本发明还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述的消息推送方法。本发明的方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在该计算机存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机存储介质不包括电载波信号和电信信号。
49.本实施例中的设备及存储介质与前述实施例中的方法是基于同一发明构思下的两个方面,在前面已经对方法实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施中的系统的结构及实施过程,为了说明书的简洁,在此就不再赘述。
50.上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所
要求保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1