CN108540367B - 一种消息处理方法及系统 - Google Patents
一种消息处理方法及系统 Download PDFInfo
- Publication number
- CN108540367B CN108540367B CN201710129022.1A CN201710129022A CN108540367B CN 108540367 B CN108540367 B CN 108540367B CN 201710129022 A CN201710129022 A CN 201710129022A CN 108540367 B CN108540367 B CN 108540367B
- Authority
- CN
- China
- Prior art keywords
- message
- data
- network device
- target
- domain
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/06—Message adaptation to terminal or network requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/22—Processing or transfer of terminal data, e.g. status or physical capabilities
- H04W8/24—Transfer of terminal data
Abstract
本发明实施例公开了一种消息处理方法,所述方法包括:消息处理系统检测到第一网络设备获取到发送端设备所发送的第一消息;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域;基于判断结果确定对所述第一消息的处理策略;所述处理策略至少包括第一策略和第二策略。本发明实施例公开了一种消息处理系统。
Description
技术领域
本发明涉及通信技术,尤其涉及一种消息处理方法及系统。
背景技术
目前,即时通信已由最初的即时发送和接收互联网消息的业务演变成一种包含文本、音频、视频、图片、文件、表情等多种媒体形式,以及包含点对点聊天、多人聊天等多种交互方式的新型业务。现有的即时消息业务方案中,采用的标准化的协议主要包括SIMPLE(SIP for Instant Messaging and Presence Leverage Extension)协议、XMPP(Extensible Messaging and Presence Protocol)及MQTT(Message Queuing TelemetryTransport)协议。这里,所述SIMPLE协议是IETF在SIP协议的基础上的扩展,增加了SUBSCRIBE和NOTIFY方法,以用于支持状态的订阅和发布,同时还增加了MESSAGE方法,以用于发送消息内容较短的文本消息,且融合了MSRP(Message Session Relay Protocol)以用于发送文本内容较大的消息及多媒体消息。所述XMPP协议是IETF制定的以XML为基础的开放式即时通信协议,在设计上很大程度上沿袭了E-mail的设计;该XMPP协议采用客户端/服务端的系统架构,从发送端到接收端的XMPP消息必须经由服务端推送给接收端。所述MQTT协议是一种轻量级的、基于代理和“发布/订阅”模式的消息传输协议,该MQTT协议最初主要用于物联网中传感器数据采集的实时推送,但现有即时消息方案均对其进行了二次开发,具体地,该MQTT协议定义了一个消息处理的逻辑实体Broker。消息的发送者向一个Topic(话题)发布消息,Broker根据该Topic的订阅情况向订阅者发送消息。
在实际应用中,运营商级的即时消息系统要求能够支持大量的用户并发访问,满足不同用户的体验质量需求,并能够提供高的系统可靠性,同时,还兼顾流量、终端能耗敏感,以及在使用场景更为复杂的移动互联网场景的适用性等。但是,当使用SIMPLE协议和XMPP协议来实现即时消息业务时,会存在信令交互繁琐,通信过程复杂等问题,而且,由于上述两种协议均是基于文本的协议,协议本身具有很大冗余,移动终端在频繁地发送与接收消息时会产生较大的流量开销和终端能耗,因此,使用SIMPLE和XMPP协议实现即时消息业务的方案不太适合移动互联网环境。而MQTT协议是一个可适用于移动互联网环境的轻量级协议,但是,基于MQTT协议的即时消息业务方案在功能实现上需要自行定义,现有基于MQTT协议的即时消息业务方案均是单系统的,面向的是企业级的应用,不能够应用于运营商级。
发明内容
为解决现有存在的技术问题,本发明实施例提供了一种消息处理方法及系统,能至少解决现有技术中存在的上述问题。
本发明实施例的技术方案是这样实现的:
本发明实施例第一方面提供了一种消息处理方法,所述方法包括:
消息处理系统检测到第一网络设备获取到发送端设备所发送的第一消息;所述消息处理系统中包括有至少一个目标域;每个目标域中包含有至少一个网络设备;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;
确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域;
基于判断结果确定对所述第一消息的处理策略;所述处理策略至少包括第一策略和第二策略;其中,所述第一策略表征控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;所述第二策略表征控制所述第一网络设备将所述第一消息发送至其他目标域,以通过其他目标域将所述第一消息发送至接收端设备。
上述方案中,所述第一消息中携带有接收端设备的用户信息;所述方法还包括:
控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,基于用户信息查询所述接收端设备归属的目标网络设备,判断所述目标网络设备是否为所述第一网络设备;
当所述目标网络设备为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述接收端设备;
当所述目标网络设备不为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述目标网络设备,以通过与所述接收端设备关联的目标网络设备将所述第一消息发送至接收端设备。
上述方案中,所述控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,包括:
当确定出所述发送端设备的归属域为所述第一目标域时,控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息。
上述方案中,每一目标域中存储有归属于自身的所有网络设备对应的功能信息;对应地,所述方法还包括:
获取每一所述目标域所对应的所有网络设备存储的功能信息,并基于用户访问特征对针对于所述目标域的所有功能信息进行分类,至少得到第一类数据和第二类数据;
采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,所述第一分布式存储策略与所述第二分布式存储策略不同。
上述方案中,所述用户访问特征表征访问频率,所述第一类数据的访问频率小于所述第二类数据的访问频率;对应地,所述采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,包括:
获取所述目标域所对应的所有网络设备中的剩余硬盘资源,并将剩余硬盘资源作为第一资源池,利用所述第一资源池对所述第一类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第一资源池获取到所述第一类数据;
获取所述目标域所对应的所有网络设备中的剩余内存资源,并将剩余内存资源作为第二资源池,利用所述第二资源池对所述第二类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第二资源池获取到所述第二类数据。
上述方案中,所述方法还包括:
对所述第二类数据进行划分,得到至少两组数据块;
将所述至少两组数据块进行复制处理,得到至少两组数据集;每一所述数据集中存储有所述第二类数据对应的所有数据块;
利用所述第二资源池对所述至少两组数据集进行分布式存储,以使所述第二类数据在所述第二资源池中存在有备份数据。
本发明实施例第二方面提供了一种消息处理系统,所述系统包括:
检测单元,用于检测到第一网络设备获取到发送端设备所发送的第一消息;所述消息处理系统中包括有至少一个目标域;每个目标域中包含有至少一个网络设备;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;
处理单元,用于确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域,基于判断结果确定对所述第一消息的处理策略;
其中,所述处理策略至少包括第一策略和第二策略;所述第一策略表征控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;所述第二策略表征控制所述第一网络设备将所述第一消息发送至其他目标域,以通过其他目标域将所述第一消息发送至接收端设备。
上述方案中,所述第一消息中携带有接收端设备的用户信息;对应地,所述处理单元,还用于:
控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,基于用户信息查询所述接收端设备归属的目标网络设备,判断所述目标网络设备是否为所述第一网络设备;
当所述目标网络设备为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述接收端设备;
当所述目标网络设备不为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述目标网络设备,以通过与所述接收端设备关联的目标网络设备将所述第一消息发送至接收端设备。
上述方案中,所述处理单元,还用于当确定出所述发送端设备的归属域为所述第一目标域时,控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息。
上述方案中,每一目标域中存储有归属于自身的所有网络设备对应的功能信息;对应地,所述处理单元,还用于:
获取每一所述目标域所对应的所有网络设备存储的功能信息,并基于用户访问特征对针对于所述目标域的所有功能信息进行分类,至少得到第一类数据和第二类数据;
采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,所述第一分布式存储策略与所述第二分布式存储策略不同。
上述方案中,所述用户访问特征表征访问频率,所述第一类数据的访问频率小于所述第二类数据的访问频率;对应地,所述处理单元,还用于获取所述目标域所对应的所有网络设备中的剩余硬盘资源,并将剩余硬盘资源作为第一资源池,利用所述第一资源池对所述第一类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第一资源池获取到所述第一类数据;
获取所述目标域所对应的所有网络设备中的剩余内存资源,并将剩余内存资源作为第二资源池,利用所述第二资源池对所述第二类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第二资源池获取到所述第二类数据。
上述方案中,所述处理单元,还用于对所述第二类数据进行划分,得到至少两组数据块;
将所述至少两组数据块进行复制处理,得到至少两组数据集;每一所述数据集中存储有所述第二类数据对应的所有数据块;
利用所述第二资源池对所述至少两组数据集进行分布式存储,以使所述第二类数据在所述第二资源池中存在有备份数据
本发明实施例所述的消息处理方法及系统,能够满足高并发性和高可靠性要求,而且能够满足运营商级的系统需求,同时,还可适用于移动互联网环境。
附图说明
图1为本发明实施例一消息处理方法的实现流程示意图;
图2为本发明实施例二消息处理系统的组成结构示意图;
图3为本发明实施例三即时消息系统的组成结构示意图;
图4为本发明实施例对活跃数据进行分区和复制处理后得到复制集的示意图;
图5为本发明实施例Broker设备与分布式内存数据库的关系示意图;
图6为本发明实施例基于即时消息系统的即时消息发送和接收流程示意图;
图7为本发明实施例切换Broker设备的流程示意图。
具体实施方式
为了能够更加详尽地了解本发明的特点与技术内容,下面结合附图对本发明的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。
实施例一
本实施例提供了一种消息处理方法;所述方法应用于消息处理系统,所述消息处理系统中设置有至少一个目标域,每个目标域中包含有至少一个网络设备;具体地,如图1所示,所述方法包括:
步骤101:检测到第一网络设备获取到发送端设备所发送的第一消息;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;
在实际应用中,本实施例所述的第一消息可以具体为即时消息;对应地,所述消息处理系统可以具体即时消息处理系统。
步骤102:确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域;
步骤103:基于判断结果确定对所述第一消息的处理策略;所述处理策略至少包括第一策略和第二策略;其中,所述第一策略表征控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;所述第二策略表征控制所述第一网络设备将所述第一消息发送至其他目标域,以通过其他目标域将所述第一消息发送至接收端设备。
本实施例中,当所述发送端设备的归属域为所述第一目标域时,所述消息处理系统选取所述第一策略对所述第一消息进行处理,即控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;否则,利用所述第二策略对所述第一消息进行处理,即控制所述第一网络设备将所述第一消息发送至其他目标域,进而通过其他目标域将所述第一消息发送至接收端设备。也就是说,每一目标域仅处理归属于该域的发送端设备所发送的消息。
在一具体实施例中,所述第一消息中携带有接收端设备的用户信息;例如,在即时消息系统中,所述用户信息可以具体账户信息等;这样,便于所述消息处理系统获取所述接收端设备的用户信息,以基于用户信息确定所述接收端设备所属的目标网络设备;具体地,所述消息处理系统控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,基于用户信息查询所述接收端设备归属的目标网络设备,判断所述目标网络设备是否为所述第一网络设备;当所述目标网络设备为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述接收端设备;当所述目标网络设备不为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述目标网络设备,以通过与所述接收端设备关联的目标网络设备将所述第一消息发送至接收端设备。
这里,在实际应用中,所述消息处理系统只有在确定出所述发送端设备的归属域为所述第一目标域时,才会控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息。
本实施例中,每一目标域中仅存储有归属于自身的所有网络设备对应的功能信息,这里,功能信息可以具体为用户信息(如账户信息)、消息数据,接收端设备与网络设备的归属关系(或者接收端设备的用户信息与网络设备的归属关系)等;具体地,可以采用如下方式对归属于所述目标域的所有网络设备对应的功能信息进行存储,即:
获取每一所述目标域所对应的所有网络设备存储的功能信息,并基于用户访问特征对针对于所述目标域的所有功能信息进行分类,至少得到第一类数据和第二类数据;
采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,所述第一分布式存储策略与所述第二分布式存储策略不同。
进一步地,在一具体实施例中,所述用户访问特征可以具体表征访问频率,此时,所述第一类数据的访问频率小于所述第二类数据的访问频率,例如,所述第一类数据为静态数据,所述第二类数据为活跃数据,此时,可以根据不同的存储策略对上述两类数据分别进行分布式存储,例如:
获取所述目标域所对应的所有网络设备中的剩余硬盘资源,并将剩余硬盘资源作为第一资源池,利用所述第一资源池对所述第一类数据进行分布式存储,也就是说,利用硬盘资源存储静态数据,且对静态数据进行分布式存储,这样,便于所属同一目标域的每一网络设备能够通过所述第一资源池获取到所述第一类数据,例如通过自身硬盘,或者通过归属于同一目标域的其他网络设备的硬盘去获取第一类数据;
相应地,获取所述目标域所对应的所有网络设备中的剩余内存资源,并将剩余内存资源作为第二资源池,利用所述第二资源池对所述第二类数据进行分布式存储,也就是说,利用内存资源存储活跃数据,且对活跃数据进行分布式存储,这样,便于所属同一目标域的每一网络设备能够通过所述第二资源池获取到所述第二类数据,例如,通过网络设备通过自身中的内存,或者通过归属于同一目标域的其他网络设备的内存去获取第一类数据,实现对归属于每一目标域的所有用户相关数据的分布式管理。
在另一具体实施例中,所述消息处理系统还可以对所述第二类数据进行划分,得到至少两组数据块,并将所述至少两组数据块进行复制处理,得到至少两组数据集;这里,每一所述数据集中存储有所述第二类数据对应的所有数据块;进而利用所述第二资源池对所述至少两组数据集进行分布式存储,以使所述第二类数据在所述第二资源池中存在有备份数据,提升系统的时效性和容灾能力。
这样,本发明实施例所述的方法,能够满足高并发性和高可靠性要求,而且能够满足运营商级的系统需求,同时,还可适用于移动互联网环境。
实施例二
本实施例提供了一种消息处理系统,具体地,如图2所示,所述系统包括:
检测单元21,用于检测到第一网络设备获取到发送端设备所发送的第一消息;所述消息处理系统中包括有至少一个目标域;每个目标域中包含有至少一个网络设备;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;
处理单元22,用于确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域,基于判断结果确定对所述第一消息的处理策略;
其中,所述处理策略至少包括第一策略和第二策略;所述第一策略表征控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;所述第二策略表征控制所述第一网络设备将所述第一消息发送至其他目标域,以通过其他目标域将所述第一消息发送至接收端设备。
在一实施例中,所述第一消息中携带有接收端设备的用户信息;对应地,所述处理单元22,还用于:
控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,基于用户信息查询所述接收端设备归属的目标网络设备,判断所述目标网络设备是否为所述第一网络设备;
当所述目标网络设备为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述接收端设备;
当所述目标网络设备不为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述目标网络设备,以通过与所述接收端设备关联的目标网络设备将所述第一消息发送至接收端设备。
在另一实施例中,所述处理单元22,还用于当确定出所述发送端设备的归属域为所述第一目标域时,控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息。
在另一实施例中,每一目标域中存储有归属于自身的所有网络设备对应的功能信息;对应地,所述处理单元22,还用于:
获取每一所述目标域所对应的所有网络设备存储的功能信息,并基于用户访问特征对针对于所述目标域的所有功能信息进行分类,至少得到第一类数据和第二类数据;
采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,所述第一分布式存储策略与所述第二分布式存储策略不同。
在另一实施例中,所述用户访问特征表征访问频率,所述第一类数据的访问频率小于所述第二类数据的访问频率;对应地,所述处理单元22,还用于获取所述目标域所对应的所有网络设备中的剩余硬盘资源,并将剩余硬盘资源作为第一资源池,利用所述第一资源池对所述第一类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第一资源池获取到所述第一类数据;
获取所述目标域所对应的所有网络设备中的剩余内存资源,并将剩余内存资源作为第二资源池,利用所述第二资源池对所述第二类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第二资源池获取到所述第二类数据。
在另一实施例中,所述处理单元22,还用于对所述第二类数据进行划分,得到至少两组数据块;
将所述至少两组数据块进行复制处理,得到至少两组数据集;每一所述数据集中存储有所述第二类数据对应的所有数据块;
利用所述第二资源池对所述至少两组数据集进行分布式存储,以使所述第二类数据在所述第二资源池中存在有备份数据。
这里需要指出的是:以上系统实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明系统实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。
在本申请所提供的实施例二中,应该理解到,所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。基于此,本发明实施例还提供了另外一种划分及组合方式,如下述实施例三所述,通过下述实施例三所述的系统,同样能够实现本发明实施例所述的消息处理方法。
实施例三
本实施例以一分布式MQTT即时消息系统为例,对本发明实施例所述的消息处理方法做进一步向详细说明;这里,本实施例所述系统能够满足高并发性和高可靠性要求,而且能够满足运营商级的系统需求,同时,还可适用于移动互联网环境。具体地,如图3所示,本实施例分布式MQTT即时消息系统采用分域多点的部署方式,设置N个域,所述N为大于等于2的正整数;这里通常每个域服务一定数量的用户,且每个域在逻辑功能上相互独立,每个域均具有数据模块功能、管理模块功能、Broker功能;具体地,
所述Broker功能,为整个即时消息系统的核心,在实际应用中,每个域可以包括一个或者多个Broker集群,每个集群可具体由一台或者多台Broker设备组成。Broker设备的主要功能包括:消息解析,即解析MQTT即时消息;连接维护,即对接入用户的连接认证;消息处理,即根据Topic的订阅关系执行消息过滤及消息发送;处理用户在切换Broker设备期间未完成的消息;缓存Broker进行消息处理时向数据模块的数据库查询的数据信息等。
所述管理模块,负责系统的管理,主要功能为:根据用户及Broker提供的信息对于接入的用户进行鉴权认证;管理用户信息,包括基本信息及配置信息;群组的操作管理;业务信息数据的管理;系统监管及维护。
所述数据模块,负责数据的存储,包括消息数据,例如离线消息数据、多媒体消息数据、历史消息数据;用户数据;群组数据;路由数据,包括Topic的订阅关系及规则、用户接入信息等;系统数据;对于存储的消息数据进行过滤。
本实施例所述的即时消息系统中用户的管理采用归属域管理方式,即用户登录时,只与其归属域的Broker设备连接,并与其归属域的各个功能模块交互信息,每个域的数据模块可以只存储归属于本域的数据,如归属于本域用户信息、消息数据等。
这里,在实际应用中,每一域的管理模块和数据模块的功能可以具体通过归属于该域的Broker集群实现,也可以通过其他设备实现。
本实施例中,所述即时消息系统还可以根据数据的访问频度,将自身涉及的所有数据进行分类,如分为活跃数据和静态数据两类。其中,所述活跃数据是指经常被访问的数据,如用户接入信息,Topic订阅信息及规则等;所述静态数据是指访问频度不高的数据,主要包括用户个人信息、历史消息、用户上传的多媒体消息文件等。进一步地,所述静态数据可以采用一般的分布式数据库进行存储,例如,可以将归属于同一域的所有Broker设备的硬盘作为一个资源池,并利用基于硬盘的资源池对静态数据进行分布式存储;所述活跃数据可以采用分布式内存数据库存储,例如,可以将归属于同一域的所有Broker设备的内存作为一个资源池,并利用基于内存的资源池对活跃数据进行分布式存储。
这里,为了保证时效性和容灾能力,所述分布式内存数据库的实现可以使用复制集与分片相结合的技术,如图4所示,将总体的数据(即所有活跃数据)分成若干部分,同时对于每一部分做一个复制集,每一复制集中存储有所有的活跃数据;在实际应用中,可以通过虚拟化技术将归属于同一域的多台Broker设备的内存整合成一个资源池,通过类似于传统关系型数据库中的分片操作,采取切片的形式将数据分配到分布式内存数据库的不同节点之上。或者还可以采用分区区域模式,进行系统自动切片过程来完成数据的分布式存储,这样,既可以保证系统的扩展性,同时保证数据的完整性。
这里,所述分布式内存数据库的数据分布式以及系统的容错能力是利用复制区域来完成的,即通过使用复制区域使得分区中所有的数据被复制到对应复制集的服务节点,所述复制区域可以使用“multiple masters”(多主)复制组织结构,对于每一个数据条目没有指定的管理者,复制区域中任意服务节点得到数据更新请求后,将会通知复制集中的其他节点,其他节点得到通知后,返回ACK响应,当收到大多数节点的响应后,服务节点将执行数据更新操作,并通知其他节点同步更新数据。数据读取时,将会同时读取多个节点的同一条数据信息,并选取使用数据版本最新的数据,这样,避免了由于数据更新延时而导致获取的数据不精确的问题。
本实施例中,所述Broker设备将处理即时消息时查询的Topic订阅关系及订阅者接入信息缓存到本地Cache中。这里,如图5所示,Broker设备的Cache中缓存的数据需要与数据模块(例如分布式内存数据库)中的相应数据同步,具体地,可以在即时消息系统中设置监控程序来监控数据的更新情况,如果数据模块的数据得到更新,则该监控程序会对缓存了该数据的Broker Cache进行数据更新操作;在实际应用中,监控程序可使用分布式内存数据库框架的事件驱动模块来实现,也可基于一个中间模块实现;其中,
采用事件驱动模块来实现数据监控的步骤包括:使用分布式内存数据库框架的事件驱动模块在分布式内存数据库中创建相应的表,通过时间驱动方式对表中的记录进行监听,当目标事件(某一条数据的更改,如用户设备UE连接的Broker设备发生改变的数据)发生时,分布式内存数据库可以向订阅的客户端报告调用相应的回调函数进行处理。
采用中间模块来实现数据监控的步骤包括:方式一,分布式内存数据库中的数据是按照key-value(键-值对)形式保存的,此时,可以手动编写一个监控程序,该监控程序可以监控分布式内存数据库中某一个key值的变化,然后调用回调函数要求所有相关的Broker实时更新数据。方式二,使用发布订阅模式,即将相应的数据修改行为作为发布的触发条件,订阅该事件的节点在收到修改消息,进而触发所有相关的Broker实时更新数据。
在实际应用中,即时消息的路由方式可以采用基于Topic的路由,且即时消息系统要求即时消息的发送者、接收者必须是Topic的订阅者,即时消息的消息头部中携带一个Topic,Topic中包含了域标识符、用户标识符、业务码等,这里所述域标识符是标志Topic所在的域(也即即时消息发送者所归属的域),用户标识符标识全局唯一的用户,业务码用于区别不同的消息类型。这里,结合图6对本发明实施例所述的消息处理过程作进一步详细说明;具体地,如图6所示,UE 1通过PUBLISH消息将即时消息发送到其接入的Broker设备Broker A(如步骤S1);所述Broker A收到消息后解析消息,检测消息Topic的域标识符是否属于当前域,若不属于,则直接将消息发送到消息Topic所指示的域进行处理;如果消息归属于当前域,则Broker A在本地Cache中查找接收者UE 2的接入信息,如果没有(也即接收者UE 2不归属于当前域)则向当前域对应的数据模块去查询(如步骤S2);进一步地,如果查询出UE 2当前接入Broker是Broker A,则将该消息直接发送给UE 2(如步骤S3),如果查询出UE2的接入Broker是同域的Broker B,则将消息发送到Broker B,由Broker B将消息发送到UE 2(如步骤S5,S6)。
这里,当即时消息为多媒体消息时,发送方首先将多媒体文件上传到发送方所在域的数据模块的数据库中保存,将基于多媒体文件的统一资源标识符(URL)作为即时消息内容进行发送(如步骤S0,S1);接收方收到消息后,根据URL向发送方所在域的数据模块中去获取多媒体文件。如果接收方离线,则接收方所在域的Broker将消息上传到数据模块存储,当用户重新登录时,Broker会向数据模块获取用户离线消息的信息并通知用户。
本实施例中,每个域可以存在多个功能相同的网元设备(如Broker设备),用户不与固定的Broker设备绑定,也就是说,UE可以根据现有网络情况切换其连接的Broker设备,进一步对,用户登录时,Broker设备将新接入用户的接入信息写入数据模块中,同时检测用户是否切换连接的Broker设备,如若切换,则用户新连接的Broker设备会调用用户上次连接的Broker设备来完成用户切换Broker期间未完成的消息,具体地,如图7所示,Broker 1,Broker 2和Broker 3属于同一域的不同Broker设备,UE 1和UE 2为客户端,UE 1接入Broker 1,UE 2接入Broker 2。UE 1将接收方是UE 2的即时消息发送到Broker 1(步骤S1);Broker 1检测到消息属于当前域,且查询到UE 2连接到Broker 2,将消息转发到Broker 2(步骤S2);Broker 2在执行将消息发送到UE 2的过程中,UE 2因为网络等原因断开了与Broker 2的连接,此时,UE 2接入了Broker 3(步骤S3);Broker 3将UE 2的登录信息写入数据模块的数据库中,同时检测到UE 2切换了连接的Broker设备(步骤S4);Broker 3调用Broker 2的相关功能以获取UE 2在切换Broker设备期间未完成的消息(步骤S5);Broker 2将未完成的即时消息发送到Broker 3,并由Broker 3将消息发送到UE 2(步骤S6,S7),完成Broker设备的切换过程。
这样,本发明实施例所述的方法及系统能够支持多点部署,满足了高的并发访问。具体地,本实施例所述的系统中,由于用户不与固定的网元设备绑定,可以根据负载均衡策略与当前的网络状况选择接入网元并获取服务,所以,实现了将单个网元的负载分配到多个功能相同的网元设备中的目的,同时,在系统增减服务设备时,不会影响用户的体验,利于系统扩展。
进一步地,本发明实施例还能够支持故障局部化,满足了高的系统可靠性。具体地,本实施例所述的系统采用了分布式存储方式,减缓了集中式数据存储的读写压力,由于各域的数据由各域的数据模块来管理,服务网元仅缓存数据,系统的故障如网元设备故障等仅对设备接入的用户或者某一域内的用户产生影响,不影响其他域的用户体验,所以,为故障局部化处理奠定了基础。
进一步地,本发明实施例还能够支持数据缓存,满足了高的执行效率。具体地,本实施例所述的系统中数据访问过程采用了本地Cache与分布式内存数据库相结合的技术,在满足数据访问一致性的前提下,实现了数据的快速访问,提供了较高的执行效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种消息处理方法,其特征在于,所述方法包括:
消息处理系统检测到第一网络设备获取到发送端设备所发送的第一消息;所述消息处理系统中包括有至少一个目标域;每个目标域中包含有至少一个网络设备;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;
确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域;
若是,所述消息处理系统选取第一策略对所述第一消息进行处理;
若否,所述消息处理系统选取第二策略对所述第一消息进行处理;
其中,所述第一策略表征控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;所述第二策略表征控制所述第一网络设备将所述第一消息发送至其他目标域,以通过其他目标域将所述第一消息发送至接收端设备;所述消息处理系统为分布式消息队列遥测传输MQTT即时消息系统。
2.根据权利要求1所述的方法,其特征在于,所述第一消息中携带有接收端设备的用户信息;所述方法还包括:
控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,基于用户信息查询所述接收端设备归属的目标网络设备,判断所述目标网络设备是否为所述第一网络设备;
当所述目标网络设备为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述接收端设备;
当所述目标网络设备不为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述目标网络设备,以通过与所述接收端设备关联的目标网络设备将所述第一消息发送至接收端设备。
3.根据权利要求2所述的方法,其特征在于,所述控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,包括:
当确定出所述发送端设备的归属域为所述第一目标域时,控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息。
4.根据权利要求1至3任一项所述的方法,其特征在于,每一目标域中存储有归属于自身的所有网络设备对应的功能信息;对应地,所述方法还包括:
获取每一所述目标域所对应的所有网络设备存储的功能信息,并基于用户访问特征对针对于所述目标域的所有功能信息进行分类,至少得到第一类数据和第二类数据;
采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,所述第一分布式存储策略与所述第二分布式存储策略不同。
5.根据权利要求4所述的方法,其特征在于,所述用户访问特征表征访问频率,所述第一类数据的访问频率小于所述第二类数据的访问频率;对应地,所述采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,包括:
获取所述目标域所对应的所有网络设备中的剩余硬盘资源,并将剩余硬盘资源作为第一资源池,利用所述第一资源池对所述第一类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第一资源池获取到所述第一类数据;
获取所述目标域所对应的所有网络设备中的剩余内存资源,并将剩余内存资源作为第二资源池,利用所述第二资源池对所述第二类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第二资源池获取到所述第二类数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
对所述第二类数据进行划分,得到至少两组数据块;
将所述至少两组数据块进行复制处理,得到至少两组数据集;每一所述数据集中存储有所述第二类数据对应的所有数据块;
利用所述第二资源池对所述至少两组数据集进行分布式存储,以使所述第二类数据在所述第二资源池中存在有备份数据。
7.一种消息处理系统,其特征在于,所述系统包括:
检测单元,用于检测到第一网络设备获取到发送端设备所发送的第一消息;所述消息处理系统中包括有至少一个目标域;每个目标域中包含有至少一个网络设备;所述第一消息中至少携带有发送端设备所归属的目标域的域标识符;
处理单元,用于确定所述第一网络设备所属的第一目标域,并基于所述第一消息所携带的域标识符,判断所述发送端设备的归属域是否为所述第一目标域,若是,所述消息处理系统选取第一策略对所述第一消息进行处理;若否,所述消息处理系统选取第二策略对所述第一消息进行处理;
其中,所述第一策略表征控制所述第一网络设备利用自身,或者利用与自身所归属的第一目标域中的其他网络设备将所述第一消息发送至接收端设备;所述第二策略表征控制所述第一网络设备将所述第一消息发送至其他目标域,以通过其他目标域将所述第一消息发送至接收端设备;所述消息处理系统为分布式消息队列遥测传输MQTT即时消息系统。
8.根据权利要求7所述的系统,其特征在于,所述第一消息中携带有接收端设备的用户信息;对应地,所述处理单元,还用于:
控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息,基于用户信息查询所述接收端设备归属的目标网络设备,判断所述目标网络设备是否为所述第一网络设备;
当所述目标网络设备为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述接收端设备;
当所述目标网络设备不为所述第一网络设备时,控制所述第一网络设备将所述第一消息发送至所述目标网络设备,以通过与所述接收端设备关联的目标网络设备将所述第一消息发送至接收端设备。
9.根据权利要求8所述的系统,其特征在于,所述处理单元,还用于当确定出所述发送端设备的归属域为所述第一目标域时,控制所述第一网络设备获取所述第一消息中携带的所述接收端设备的用户信息。
10.根据权利要求7至9任一项所述的系统,其特征在于,每一目标域中存储有归属于自身的所有网络设备对应的功能信息;对应地,所述处理单元,还用于:
获取每一所述目标域所对应的所有网络设备存储的功能信息,并基于用户访问特征对针对于所述目标域的所有功能信息进行分类,至少得到第一类数据和第二类数据;
采用第一分布式存储策略对所述第一类数据进行分布式存储,采用第二分布式存储策略对所述第二类数据进行分布式存储,所述第一分布式存储策略与所述第二分布式存储策略不同。
11.根据权利要求10所述的系统,其特征在于,所述用户访问特征表征访问频率,所述第一类数据的访问频率小于所述第二类数据的访问频率;对应地,所述处理单元,还用于获取所述目标域所对应的所有网络设备中的剩余硬盘资源,并将剩余硬盘资源作为第一资源池,利用所述第一资源池对所述第一类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第一资源池获取到所述第一类数据;
获取所述目标域所对应的所有网络设备中的剩余内存资源,并将剩余内存资源作为第二资源池,利用所述第二资源池对所述第二类数据进行分布式存储,以便于所属同一目标域的每一网络设备能够通过所述第二资源池获取到所述第二类数据。
12.根据权利要求11所述的系统,其特征在于,所述处理单元,还用于对所述第二类数据进行划分,得到至少两组数据块;
将所述至少两组数据块进行复制处理,得到至少两组数据集;每一所述数据集中存储有所述第二类数据对应的所有数据块;
利用所述第二资源池对所述至少两组数据集进行分布式存储,以使所述第二类数据在所述第二资源池中存在有备份数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710129022.1A CN108540367B (zh) | 2017-03-06 | 2017-03-06 | 一种消息处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710129022.1A CN108540367B (zh) | 2017-03-06 | 2017-03-06 | 一种消息处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108540367A CN108540367A (zh) | 2018-09-14 |
CN108540367B true CN108540367B (zh) | 2021-01-15 |
Family
ID=63489704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710129022.1A Active CN108540367B (zh) | 2017-03-06 | 2017-03-06 | 一种消息处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108540367B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286525B (zh) * | 2018-09-28 | 2022-02-25 | 昆明能讯科技有限责任公司 | 一种基于mqtt通讯和主备之间心跳的双机备份方法 |
CN110798537A (zh) * | 2020-01-03 | 2020-02-14 | 北京信安世纪科技股份有限公司 | 一种消息传播的方法、装置及系统 |
CN111212085B (zh) * | 2020-01-16 | 2022-11-22 | 厦门网宿有限公司 | 物联网平台同步调用的方法、物联网系统和网络设备 |
CN111200662A (zh) * | 2020-01-17 | 2020-05-26 | 南京甄视智能科技有限公司 | 物联网中的消息转发方法、装置、存储介质及服务器 |
CN112286950A (zh) * | 2020-11-20 | 2021-01-29 | 四川长虹电器股份有限公司 | 一种分布式缓存中保持有效数据一致性的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8687791B1 (en) * | 2006-02-24 | 2014-04-01 | West Corporation | System, method, and computer readable medium for routing an agent to a preferred communications platform |
CN101788995B (zh) * | 2009-12-31 | 2011-11-09 | 成都市华为赛门铁克科技有限公司 | 一种热点数据识别方法及装置 |
CN105656847B (zh) * | 2014-11-13 | 2018-08-24 | 中国科学院沈阳计算技术研究所有限公司 | 面向移动设备的sip/mqtt协议转换网关系统及其控制方法 |
CN104468805B (zh) * | 2014-12-12 | 2018-08-28 | 用友网络科技股份有限公司 | 消息路由装置和方法 |
CN105162684A (zh) * | 2015-08-05 | 2015-12-16 | 深圳联友科技有限公司 | 群组通信系统以及方法 |
CN105573669A (zh) * | 2015-12-11 | 2016-05-11 | 上海爱数信息技术股份有限公司 | 一种存储系统的io读加速缓存方法和系统 |
-
2017
- 2017-03-06 CN CN201710129022.1A patent/CN108540367B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108540367A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108540367B (zh) | 一种消息处理方法及系统 | |
US10178055B2 (en) | Hierarchical publish and subscribe system | |
US9124592B2 (en) | Method and system for application level load balancing in a publish/subscribe message architecture | |
US9235829B2 (en) | Hierarchical publish/subscribe system | |
US9269080B2 (en) | Hierarchical publish/subscribe system | |
CN103139241A (zh) | 网络资源文件的离线下载系统和方法 | |
US9762405B2 (en) | Hierarchical publish/subscribe system | |
US9569753B2 (en) | Hierarchical publish/subscribe system performed by multiple central relays | |
CN110545327B (zh) | 一种信息推送方法及系统 | |
US20090177729A1 (en) | Managing watcher information in a distributed server environment | |
CN112671554A (zh) | 一种节点故障处理方法及相关装置 | |
US8799925B2 (en) | Managing contact list status notifications in collaboration systems to reduce network traffic | |
CN112169312A (zh) | 云游戏服务的排队调度方法、装置、设备和存储介质 | |
CN114900449B (zh) | 一种资源信息管理方法、系统及装置 | |
US20140161125A1 (en) | Method, duplication point device, and system for data flow reuse transmission | |
Barber et al. | Bladerunner: Stream processing at scale for a live view of backend data mutations at the edge | |
CN114402577A (zh) | 单页应用的缓存能力 | |
EP2680539B1 (en) | Hierarchical publish/subscribe system | |
CN115840862B (zh) | 一种网络靶场大规模场景中靶标的快速查询方法与系统 | |
US9710861B2 (en) | Optimizing social information signaling | |
US20100161777A1 (en) | Method and System For Providing A Subscription To A Tuple Based On A Variable Identifier | |
JP2008129981A (ja) | 接続先決定サーバ及び負荷分散方法 | |
CN116980241A (zh) | 数据处理方法、系统、装置、电子设备及存储介质 | |
CN117793166A (zh) | 云网关集群之间的会话同步方法及装置 | |
CN116996933A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |