CN102143198A - 消息传送方法、装置和系统 - Google Patents
消息传送方法、装置和系统 Download PDFInfo
- Publication number
- CN102143198A CN102143198A CN2010105023016A CN201010502301A CN102143198A CN 102143198 A CN102143198 A CN 102143198A CN 2010105023016 A CN2010105023016 A CN 2010105023016A CN 201010502301 A CN201010502301 A CN 201010502301A CN 102143198 A CN102143198 A CN 102143198A
- Authority
- CN
- China
- Prior art keywords
- message
- pay
- useful
- load
- notification service
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种消息传送方法、装置和系统,其中该消息传送方法包括:接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。本实施例可以根据消息的实时属性将实时性要求不高的非实时传送的消息保存到消息有效负载列表后,进行批量压缩传送,从而提高通知服务中间件的吞吐量,节约系统带宽。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种消息传送方法、装置和系统。
背景技术
随着3G、NGN时代的临近,互联网业务更加丰富,带动基础网络建设、新型业务运营、企业运营转型发展。掌握基础设施、提供新颖业务的企业拥有更强的竞争力。数据中心作为企业内部支撑平台以及对外运营的业务平台,正是在这种趋势下应运而生。随着技术以及观念的改变,数据中心不再是原有的“机房”概念,而是成为了基于软硬件支持及运营维护为一体的基础平台。云计算时代的数据中心不只是提供硬件平台服务,还是一个存储平台、计算平台、业务平台等。随着全球数据量爆炸式的增长以及web2.0业务的迅猛发展,数据中心的规模不断膨胀。
企业在部署数据中心时需要考虑诸多因素,如用户分布、场地费用、能源消耗费用等,数据中心可能分布在全球各地,数据中心之间出现互联的问题,即数据中心之间进行信息共享、异地容灾、本地化访问的问题。随着业务的增长,各个数据中心的规模不断的扩大,数据中心之间的通信量也随之增长,怎样很好的实现数据中心之间的数据通信是非常关键的问题。部分企业采用专用光纤的方式进行数据中心之间的互联,但专用光纤价格昂贵,并且两数据中心之间可能没有可以购买或租用的光纤。部分企业采用基于PUB/SUB的通知服务中间件模式进行数据中心之间的消息通信,这种模式底层采用普通的数据路由方式,当消息量达到一定规模如数据中心节点数量达到1000个时,将出现链路拥塞,并发处理能力受到严重的挑战。因此,随着数据中心节点规模扩大,数据中心之间的通信量猛增,如果数据中心之间消息通信采用基于PUB/SUB的通知服务中间件模式时,其并发处理能力将是面临的重要问题。
传统的应用层基于主题的PUB/SUB实时通知服务中间件系统中,订阅者到中间件(broker)上注册对某个主题的订阅,发布者发布消息给本区域的任一broker,该broker收到该消息后取出消息的主题,然后根据所设置的路由策略(广播、组播或基于过滤)把该消息发送给订阅了此主题的其它区域broker,其它区域broker收到消息后分发给本区域的订阅者。
在这种传统的应用层的基于主题的PUB/SUB通知服务中间件系统中,broker收到发布者发布的消息时立即根据一定的路由策略路由给订阅者,保证了消息的实时性。但是每个消息都实时传送给订阅者,当消息量猛增时,系统的吞吐量将面临严重挑战,系统带宽浪费。
发明内容
本发明提供一种消息传送方法、装置和系统,用以解决现有技术中基于主题的PUB/SUB通知服务中间件系统的吞吐量不足和带宽浪费的缺陷,实现提高通知服务中间件的吞吐量,节约系统带宽。
本发明实施例提供一种消息传送方法,包括:
接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;
若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;
在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;
将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。
本发明实施例又提供一种消息传送方法,包括:
接收源通知服务中间件发送的压缩消息,所述压缩消息包括主题;
采用设定的解压算法对所述压缩消息进行解压,得到至少一个有效负载;
将解压缩得到的各个所述有效负载重新封装为所述主题对应的各个消息后,将重新封装后消息的消息列表发送至订阅所述主题的订阅者,以使所述订阅者循环取出所述消息列表中的所有消息。
本发明实施例还提供一种通知服务中间件,包括:
第一接收模块,用于接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;
缓存模块,用于若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;
压缩模块,用于在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;
第一发送模块,用于将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。
本发明实施例还提供一种通知服务中间件,包括:
第二接收模块,用于接收源通知服务中间件发送的压缩消息,所述压缩消息包括主题;
解压模块,用于采用设定的解压算法对所述压缩消息进行解压,得到至少一个有效负载;
封装模块,用于将解压缩得到的各个所述有效负载重新封装为所述主题对应的各个消息;
第二发送模块,用于将重新封装后消息的消息列表发送至订阅所述主题的订阅者,以使所述订阅者循环取出所述消息列表中的所有消息。
本发明实施例还提供一种消息传送系统,包括:发布者、订阅者和通知服务中间件系统,所述通知服务中间件系统包括至少一个通知服务中间件;
所述通知服务中间件为源通知服务中间件或目标通知服务中间件;
所述源通知服务中间件为上述的一种通知服务中间件;
所述目标通知服务中间件上述的一种通知服务中间件;
所述发布者,用于向所述源通知服务中间件发送消息;
所述订阅者,用于接收所述目标通知服务中间件返回的该订阅者订阅的主题对应的消息。
本发明提供的消息传送方法、装置和系统,可以根据消息的实时属性将实时性要求不高的非实时传送的消息保存到消息有效负载列表后,进行批量压缩传送,从而提高通知服务中间件的吞吐量,节约系统带宽。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中的基于发布/订阅模式(PUB/SUB)的通知服务中间件系统的架构图;
图2为本发明消息传送方法第一实施例的流程图;
图3为本发明消息传送方法第二实施例的流程图;
图4为本发明消息传送方法第二实施例中消息有效负载列表的示意图;
图5为本发明消息传送方法第二实施例中压缩过程的流程图;
图6为本发明消息传送方法第二实施例中汇聚过程的信令流程图;
图7为本发明消息传送方法第二实施例中压缩消息的示意图;
图8为本发明消息传送方法第三实施例的流程图;
图9为本发明消息传送方法第三实施例中解压封装的示意图;
图10为本发明消息传送方法第三实施例中订阅者读取过程的流程图;
图11为本发明消息传送方法第四实施例的完整信令流程图;
图12为本发明通知服务中间件第一实施例的结构示意图;
图13为本发明通知服务中间件第二实施例的结构示意图;
图14为本发明通知服务中间件第三实施例的结构示意图;
图15为本发明消息传送系统实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例中的基于发布/订阅模式(PUB/SUB)的通知服务中间件系统的架构图,如图1所示,该系统架构包括:发布者(publishers)、订阅者(subscribers)和通知服务中间件系统(notification service)。其中,发布者、订阅者和通知服务中间件系统属于数据中心。其中,发布者和订阅者分别是两个不同数据中心内的节点,通知服务中间件是两个或多个数据中心间消息传送的方式。
其中,发布者1如图1中的P1、P2、P3,负责发布事件消息5例如:AA和BB,发布者1发布消息时不需知道订阅者的信息,只需将消息发布给通知服务中间件(broker),即完成消息的发布,消息由通知服务中间件4自动根据主题路由给相关的订阅者3如图1中的S1、S2和S3,消息可以匿名传送。
订阅者3,首先到本区域的通知服务中间件4上注册自己感兴趣的主题,即订阅主题;然后当有相关的主题消息被发布时,本区域的通知服务中间件4根据注册列表信息,发消息给订阅了此主题的订阅者,从而使订阅者可以不断的收到自己订阅的主题。
通知服务中间件系统2,是应用层的基于主题的PUB/SUB通知服务中间件系统的核心模块,通知服务中间件系统可以由多个通知服务中间件4构成,通知服务中间件4之间构成一个应用层的路由层,可以是一个覆盖网,如DHT网络;也可以是基于广播或组播的网络,每个通知服务中间件4都知道其他通知服务中间件4的主题订阅信息;还可以是基于过滤的网络,每个通知服务中间件4只知道附近几个通知服务中间件4的情况,在路由过程中进行主题匹配。通知服务中间件的主要功能是:保存订阅者对这题的注册信息;接收发布者发布的事件信息;根据以上说明的路由层路由机制之一,以及消息的主题,将消息路由给订阅了此主题的订阅者。
图2为本发明消息传送方法第一实施例的流程图,如图2所示,该消息传送方法包括:
步骤101、接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;
在基于主题的PUB/SUB通知服务中间件系统中,发布者在发布消息时,可以在消息中添加该消息的实时属性,指明此消息是需要按传统PUB/SUB通知服务中间件机制实时路由给订阅者还是可以容忍一定的延迟,实时属性的参数的设定方式例如:“REAL TIME”表示实时传送,“NOT REALTIME”表示非实时传送。本发明实施例中将接收到发布者消息的通知服务中间件称为源通知服务中间件,将订阅了该消息对应主题的订阅者所在区域的通知服务中间件称为目标通知服务中间件。
步骤102、若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;
步骤103、在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;
在对消息有效负载列表中包括的有效负载进行压缩时,其中设定策略可以为每个消息有效负载列表的时间周期,也可以为每个消息有效负载列表的消息总大小阈值,或者是其他策略。满足任何一个或多个设定策略,都可以对消息有效负载列表中的内容进行压缩。其中,源通知服务中间件对上述的消息总大小阈值的设置和更新方法具体可以包括:
根据所述压缩算法的平均压缩比和网络最大传输单元大小,设定所述消息总大小阈值;在对接收到的每一个消息进行压缩后,根据压缩前和压缩后的消息大小计算每一次的压缩比;间隔设定的统计时间后,计算统计到的压缩比的加权平均值;根据所述加权平均值,更新所述消息总大小阈值。
具体地,步骤103可以包括以下任意一种情况:
情况一、对每个消息有效负载列表进行计时,若计时时间达到设定周期,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表;
在情况一中,每个消息有效负载列表可以从保存第一个有效负载开始计时,到达计时时间后对其中的有效负载进行压缩;在压缩之后,可以将计时时间清零,将有效负载列表清空;然后在下一次的保存第一个有效负载开始计时。其中,情况一可以两种方式,一是仅对每个消息有效负载列表进行计时,不统计消息有效负载列表中包括的有效负载的大小;二是既对每个消息有效负载列表进行计时,也统计消息有效负载列表中包括的有效负载的大小,在计时时间达到设定周期,而有效负载的大小未达到消息总大小阈值。
情况二、若所述消息有效负载列表中包括的有效负载的大小达到消息总大小阈值,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,清空所述消息有效负载列表;
其中,情况二可以包括两种方式,一是仅统计消息有效负载列表中包括的有效负载的大小,不对每个消息有效负载列表进行计时;二是既统计消息有效负载列表中包括的有效负载的大小,也对每个消息有效负载列表进行计时,在有效负载的大小达到消息总大小阈值,而计时时间未达到设定周期。如果采用第二种方式,在消息有效负载列表的大小达到消息总大小阈值时,即使计时时间未达到设定周期,也可以对消息有效负载列表中包括的有效负载进行压缩;在压缩之后,需要将有效负载列表清空,并且将计时时间清零;然后在下一次的保存第一个有效负载开始统计和计时。
情况三、对每个消息有效负载列表进行计时,若计时时间达到设定周期,且所述消息有效负载列表中包括的有效负载的大小未达到消息总大小阈值,则从本区域内其他通知服务中间件收集所述主题消息对应的有效负载保存到所述消息有效负载列表中,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表。
其中,情况三的具体方法可以包括:
若所述消息有效负载列表中包括的有效负载的大小与所述消息总大小阈值的比率小于设定比,则向本区域内其他通知服务中间件发送所述主题对应的收集通知;
接收所述本区域内其他通知服务中间件根据所述收集通知返回的所述主题对应的有效负载;
采用压缩算法对接收到的有效负载与源通知服务中间件的消息有效负载列表中包括的有效负载共同压缩,得到包括所述主题的压缩消息。
步骤104、将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。
其中,压缩消息是重新打包后的PUB/SUB消息,压缩消息中还可以携带第一序列号,在执行步骤104发送压缩消息的同时,还可以将压缩消息保存在已发送消息列表中,以便后续的重发,因此,消息传送方法还可以包括:
按照所述压缩消息中携带的第一序列号,将已发送的各个所述压缩消息保存在已发送消息列表中;
若在设定时间内接收所述目标通知服务中间件返回的确认消息,且所述已发送消息列表中包括的第一序列号中存在与所述确认消息中携带的第二序列号相匹配的序列号,则所述第二序列号对应的压缩消息传送成功,将所述第二序列号对应的压缩消息从所述已发送消息列表中删除;
若在设定时间内未接收所述目标通知服务中间件返回的确认消息,或所述已发送消息列表中包括的第一序列号中不存在与所述确认消息中携带的第二序列号相匹配的序列号,则重新发送所述已发送消息列表中超时的所述第一序列号对应的压缩消息。
本实施例可以根据消息的实时属性将实时性要求不高的非实时传送的消息保存到消息有效负载列表后,进行批量压缩传送,从而提高通知服务中间件的吞吐量,节约系统带宽。
图3为本发明消息传送方法第二实施例的流程图,如图3所示,该消息传送方法包括:
步骤201、源通知服务中间件接收发布者发布的消息。
随着数据中心节点规模扩大,数据中心之间的通信量猛增,数据中心之间消息通信采用基于主题的发布/订阅模式(PUB/SUB)通知服务中间件系统,由于一些应用本身实现策略的保证,使得它们在跨数据中心进行数据同步时对实时性要求不高,数据副本能保证最终一致即可。针对数据中心之间数据同步的这些特点,可以对传统的基于应用层的基于主题的PUB/SUB通知服务中间件系统进行优化,提供一种可调的消息同步机制。对实时性要求不高的消息,可以牺牲一定的实时性,增强其并发处理能力,减少总体数据传输量和数据包数量,节约带宽,提高消息传送可靠性。发布者在发布消息时,可以在消息中添加该消息的实时属性,指明此消息是需要按传统PUB/SUB通知服务中间件机制实时路由给订阅者还是可以容忍一定的延迟,实时属性的参数的设定方式例如:“REAL TIME”表示实时传送,“NOT REALTIME”表示非实时传送。
步骤202、源通知服务中间件判断该消息的实时属性,若该消息的实时属性为实时传送,则执行步骤205,若该消息的实时属性为非实时传送,则执行步骤203。
步骤203、源通知服务中间件按照主题,将该消息的有效负载分类缓存在对应的消息有效负载列表中。
在系统的各个通知服务中间件上可以设置一个消息缓存模块,当源通知服务中间件接收到发布者发布的消息时,可以判断该消息的实时属性,如果该消息的实时属性为非实时传送则不需要马上进行处理,源通知服务中间件可以根据消息的主题对消息进行分类,对于非实时传送的消息可以保存到该消息的主题对应的消息有效负载列表。图4为本发明消息传送方法第二实施例中消息有效负载列表的示意图,如图4所示,在将该消息保存到对应的消息有效负载列表之前可以去掉该消息中所带的主题、超时时间等信息,只保留该消息的有效负载例如:主题_1对应的消息有效负载列表中包括消息_n有效负载、消息_n-1有效负载。源通知服务中间件将非实时传送的消息根据主题保存在各自对应的消息有效负载列表中的方法可以为先进后出,即后存入的消息保存在消息有效负载列表的前面,可以被先取出;也可以为或者先进先出,即先存入的消息保存在消息有效负载列表的前面,可以被先取出。
此外,在步骤203的中,如果源通知服务中间件判断消息实时属性为实时传送,则源通知服务中间件可以直接执行步骤205,按传统PUB/SUB机制立即将该消息路由给相应主题订阅者,不对消息进行其他处理。
步骤204、源通知服务中间件对消息有效负载列表中的有效负载进行压缩,得到压缩消息。
基于主题的PUB/SUB通知服务中间件系统可设定消息被缓存在各个通知服务中间件的时间周期T和/和可缓存在一个消息有效负载列表中的消息总大小阈值S。上述步骤102中源通知服务中间件按照主题对消息进行分类缓存后,当某个主题的第一个非实时传送的消息到达源通知服务中间件时,源通知服务中间件开始对这个主题的消息有效负载列表进行一个时间周期T的计时,也可以开始累计该消息有效负载列表的消息总大小。
由于消息总大小阈值S的设定原则可以为使压缩后的消息大小是一个网络最大传输单元,源通知服务中间件根据系统配置的压缩算法对消息进行压缩的平均压缩比设定消息总大小阈值S的初始值Sinit,参见如下公式(1):
Sinit=平均压缩比*网络最大传输单元大小 (1)
在系统运行过程中每次消息压缩后,源通知服务中间件根据压缩前和压缩后的消息大小计算该消息的压缩比并保存,经过设定的统计时间后,计算统计到的压缩比的加权平均值;然后,对消息总大小阈值S进行更新,参见如下公式(2):
S=压缩比的加权平均值*网络最大传输单元大小 (2)
因此,消息总大小阈值S可以是在系统运行过程中不断修正的结果,使对于大小为S的消息压缩后为一个网络最大传输单元。
具体地,图5为本发明消息传送方法第二实施例中压缩过程的流程图,如图5所示,该压缩过程可以包括:
步骤301、源通知服务中间件检查某个消息有效负载列表的计时是否达到设定的时间周期T,或者对有效负载的统计是否达到消息总大小阈值S,如果满足任何一个条件,可以执行步骤302,否则继续执行步骤301。
步骤302、源通知服务中间件可以将接收到的属于该主题的消息从该消息有效负载列表中取出,重新开始计时并清零消息累计大小值。
步骤303、源通知服务中间件可以采用系统配置的压缩算法对取出的有效负载进行压缩,重新打包成基于主题的PUB/SUB通知服务中间件系统中规范的消息。
另外,由于同一个区域可能存在多个通知服务中间件,同一个区域内的多个通知服务中间件可以组成一个集群,相互之间保持通信。图6为本发明消息传送方法第二实施例中汇聚过程的信令流程图,如图6所示,该汇聚过程可以包括以下步骤:
步骤401、当源通知服务中间件对某个主题的消息有效负载列表计时满一个时间周期T时,如果消息有效负载列表中的有效负载的大小达不到消息总大小阈值S的一定比率,如小于S/2,则源通知服务中间件可以向本区域内的其他通知服务中间件发送某主题的收集通知,通知区域集群中的其它通知服务中间件把该主题的消息有效负载列表中包括的有效负载发送过来。
步骤402、其它通知服务中间件接收到收集通知后,如果查找到该主题对应的消息有效负载列表,执行步骤403,如果未查找到该主题对应的消息有效负载列表,则可以向源通知服务中间件返回收集失败的通知。
步骤403、其它通知服务中间件从查找到的该主题对应的消息有效负载列表中取出有效负载,然后将取出的有效负载发送给源通知服务中间件。
步骤404、其它通知服务中间件对该消息有效负载列表进行重新开始计时、清空列表的消息总大小等操作。
步骤405、源通知服务中间件收到从其它通知服务中间件的反馈后,将源通知服务中间件中属于该主题的有效负载从对应的消息有效负载列表中取出。
步骤406、源通知服务中间件将从该主题对应的消息有效负载列表中取出的有效负载,与收到的有效负载一起进行压缩,得到压缩消息。
步骤407、源通知服务中间件发送压缩消息,并将压缩消息保存到已发送消息列表。
如图7所示,为本发明消息传送方法第二实施例中压缩消息的示意图,采用压缩算法对某一个消息有效负载列表中的有效负载进行压缩得到压缩消息,压缩消息中可以包括主题(subject)、压缩消息的有效负载(compressed message payload)、超时时间(time out)、发送方信息(sender information)等参数,还可以生成该压缩消息的第一序列号(serial number)作为参数附加在压缩消息中,以便保存和处理确认消息,每个压缩消息的第一序列号可以是唯一的。源通知服务中间件向目标通知服务中间件发送压缩消息的同时,可以将该压缩消息保存到按主题分类的已发送消息列表中,以便超时后重发。已发送消息列表的保存方式可以是按主题分类并由主题指针指向的MAP结构,例如:主题_1对应的已发送消息列表的MAP中包括第一序列号_1对应的压缩消息_1、第一序列号_2对应的压缩消息_2等压缩消息,如图7中,压缩消息的第一序列号:第一序列号_1、第一序列号_2为关键字,压缩消息的内容:压缩消息_1、压缩消息_2为实际的值。
源通知服务中间件向目标通知服务中间件发送压缩消息后,等待该目标通知服务中间件的确认消息。源通知服务中间件接收到所有目标通知服务中间件对某个压缩消息的确认消息时,可以将这个压缩消息的第一序列号对应的压缩消息从已发送消息列表中删除,确定接收到某个压缩消息的确认消息的方法可以为:如果源通知服务中间件的已发送消息列表中保存的所有压缩消息的第一序列号中存在与确认消息中携带的第二序列号向匹配的序列号,则表明接收到匹配的第一序列号对应的压缩消息的确认消息。如果消息超时还没有收到某目标通知服务中间件的确认消息,则重新发送压缩消息,其中的第一序列号不变。
步骤205、源通知服务中间件通过目标通知服务中间件,将压缩消息路由到订阅了该主题的订阅者。
本实施例消息传送方法可以用于应用层的基于主题的PUB/SUB通知服务中间件系统,在通知服务中间件上增加缓存功能,根据主题对消息进行分类收集,然后压缩打包传输,可以对同一个主题的消息进行批量处理,减少了实际在通知服务中间件中传输的消息的数据量,从而减少了路由过程中对主题的匹配次数和路由交换此路,降低了路由负载;同时多个消息的有效负载在传输过程中共用一个消息头,减少了实际在通知服务中间件中传输的消息量,节约传输带宽资源;另外,对同一主题的多个消息的有效负载进行压缩打包,进一步节约了传输带宽资源,提高了通知服务中间件的消息吞吐量;在压缩消息中携带的第一序列号,方便消息传送的状态,对未成功传送的消息进行重传,提高消息传送的可靠性。
此外,设定消息被缓存在通知服务中间件的消息有效负载列表的时间周期,不仅可以收集多个消息的有效负载在一个消息内传送,而且可以确保消息按预计时间到达其它服务中间件。设定消息有效负载列表中收集的消息总大小阈值,可以在不增加消息数量的情况下,尽快的传送消息。同时考虑时间和空间两个维度,可以达到高效传输消息的目的。其中,消息总大小阈值可以通过系统动态调整,每次消息压缩后消息总大小阈值大小逼近网络最大传输单元的概率不断的提高,具有很好的稳定性和灵活性。在一个区域内联合所有的服务中间件,当某个服务中间件的某主题的消息总大小小于消息总大小阈值的一定比率时,收集本区域内所有服务中间件的属于该主题的消息的有效负载,然后压缩打包后一起传送,进一步节约了网络带宽资源,降低了通知服务中间件的负载。
图8为本发明消息传送方法第三实施例的流程图,如图8所示,该消息传送方法包括:
步骤501、接收源通知服务中间件发送的压缩消息,所述压缩消息包括主题;
步骤502、采用设定的解压算法对所述压缩消息进行解压,得到至少一个有效负载;
步骤503、将解压缩得到的各个所述有效负载重新封装为所述主题对应的各个消息后,将重新封装后消息的消息列表发送至订阅所述主题的订阅者,以使所述订阅者循环取出所述消息列表中的所有消息。
在基于主题的PUB/SUB通知服务中间件系统中,源通知服务中间件将某一主题的压缩消息发送至目标通知服务中间件后,目标通知服务中间件采用设定的解压算法对该压缩消息进行解压,得到各个有效负载;将解压缩得到的各个有效负载重新封装为该主题对应的各个消息后,将重新封装后消息的消息列表发送至订阅该主题的订阅者,订阅者可以循环取出该消息列表中的所有消息。如果目标通知服务中间件成功的向所有的订阅者传送了该主题对应的消息列表,则该还目标通知服务中间件可以向源通知服务中间件返回确认消息。其中,源通知服务中间件和目标通知服务中间件可以根据压缩消息中的第一序列号判断是否传送成功,具体方法可以参照上述方法实施例中的相关描述。
如图9所示,为本发明消息传送方法第三实施例中解压封装的示意图,源通知服务中间件将压缩消息发送给目标通知服务中间件,目标通知服务中间件是订阅了该主题的订阅者所在区域的通知服务中间件。目标通知服务中间件收到压缩消息后,根据配置的解压算法对压缩消息进行解压,得到压缩消息及其相关的超时时间、发送方信息、第一序列号等信息,同时根据原始消息格式将解压后的多个消息的有效负载及其相关信息重新封装成一个个对应的消息,同一主题的消息组成消息列表。目标通知服务中间件根据压缩消息的主题可判断重新封装后消息的类型,再根据目标通知服务中间件中保存的该主题的订阅者列表信息,将重新封装后消息的消息列表发送给订阅者。
如图10所示,为本发明消息传送方法第三实施例中订阅者读取过程的流程图,该订阅者读取过程包括:
步骤601、订阅者收到消息后,可以先判断是否是带列表的批量消息,如果是则执行步骤602,否则执行步骤603。
步骤602、订阅者循环取出消息列表中的消息并执行操作后,结束。
此外,在执行步骤602的过程中,订阅者还可以发送响应消息给目标通知服务中间件,目标通知服务中间件收到所有订阅者的响应消息后,可以发送确认消息给源通知服务中间件。如果某个订阅者超时无响应,则目标通知服务中间件可以重新发送消息列表。
步骤603、订阅者按单条消息的方法处理后,结束。
进一步地,该消息传送方法还可以包括重传的步骤,具体为:
若在设定时间内收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向源通知服务中间件发送确认消息,所述确认消息中携带的第二序列号;或
若在设定时间内未收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向未返回所述响应消息的订阅者重新发送所述消息列表。
本实施例对压缩消息进行解压,将得到的各个有效负载分别重新封装为消息后,将消息列表发送至订阅者,可以提高通知服务中间件的吞吐量,节约系统带宽。
图11为本发明消息传送方法第四实施例的完整信令流程图,如图11所示,该消息传送方法的完整过程可以包括:
步骤701、源通知服务中间件接收发布者发布的消息。
步骤702、源通知服务中间件判断该消息的实时属性,如果该消息的实时属性为非实时传送,则执行步骤703。
步骤703、源通知服务中间件统计该消息的主题对应的消息有效负载列表的计时时间和/或有效负载大小,当计时时间满足时间周期T和/或有效负载满足消息总大小阈值S,执行步骤704。
步骤704、源通知服务中间件采用压缩算法对该消息的主题对应的消息有效负载列表包括的有效负载进行压缩,得到压缩消息。
步骤705、源通知服务中间件向目标通知服务中间件发送压缩消息,并将该压缩消息保存到已发送消息列表中。
步骤706、目标通知服务中间件采用解压算法对压缩消息进行解压,将解压的到的各个有效负载分别重新封装为各个消息,得到该主题对应的消息列表。
步骤707、目标通知服务中间件将重新封装后消息的消息列表发送至订阅了该主题的订阅者。
步骤708、订阅者接收到消息列表后,循环读取消息列表。
步骤709、订阅者向目标通知服务中间件返回指示订阅者正确接收的响应消息。
步骤710、目标通知服务中间件收集响应消息。
步骤711、如果目标通知服务中间件接收到全部订阅者返回的正确接收的响应消息,则目标通知服务中间件向源通知服务中间件发送确认消息,否则,目标通知服务中间件向未返回响应消息的订阅者重新发送消息列表。
步骤712、源通知服务中间件如果接收到目标通知服务中间件返回确认消息,则从已发送消息列表中删除该确认消息对应的压缩消息。
本实施例消息传送方法可以用于应用层的基于主题的PUB/SUB通知服务中间件系统,根据主题对消息进行分类收集,然后压缩打包传输,可以对同一个主题的消息进行批量处理,减少了实际在通知服务中间件中传输的消息的数据量,从而减少了路由过程中对主题的匹配次数和路由交换此路,降低了路由负载;多个消息的有效负载在传输过程中共用一个消息头,减少了实际在通知服务中间件中传输的消息量,节约传输带宽资源;对同一主题的多个消息的有效负载进行压缩打包,进一步节约了传输带宽资源,提高了通知服务中间件的消息吞吐量。
图12为本发明通知服务中间件第一实施例的结构示意图,如图12所示,该通知服务中间件可以包括:
第一接收模块11,用于接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;
缓存模块13,用于若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;
压缩模块15,用于在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;
第一发送模块17,用于将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。
具体地,在基于主题的PUB/SUB通知服务中间件系统中,发布者在发布消息中携带该消息的有效负载、实时属性和主题,第一接收模块11可能接收到一个或一个以上某一主题的消息,若某一消息的实时属性为非实时传送,则缓存模块13可以将该消息的有效负载保存到该消息的主题对应的消息有效负载列表中;满足一定条件例如:经过一段时间或消息有效负载列表中的有效负载累积到一定大小时,压缩模块15可以采用系统中设置的压缩算法对该消息有效负载列表中包括的有效负载进行压缩,得到包括该主题的压缩消息;第一发送模块17可以将该压缩消息发送给目标通知服务中间件,通过目标通知服务中间件发送至该主题对应的订阅者,即订阅了该主题的订阅者,其中,目标通知服务中间件可以预先保存有订阅者列表信息。
本实施例可以用于应用层的基于主题的PUB/SUB通知服务中间件系统,缓存模块根据消息的实时属性将实时性要求不高的非实时传送的消息保存到消息有效负载列表后,压缩模块进行批量压缩,第一发送模块传送压缩消息,从而提高通知服务中间件的吞吐量,节约系统带宽。
图13为本发明通知服务中间件第二实施例的结构示意图,如图13所示,在图12为本发明通知服务中间件第一实施例的基础上,该通知服务中间件的压缩模块15可以包括以下子模块的任意一个或者多个:
周期压缩子模块21,用于对每个消息有效负载列表进行计时,若计时时间达到设定周期,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表;
阈值压缩子模块23,用于若所述消息有效负载列表中包括的有效负载的大小达到消息总大小阈值,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,清空所述消息有效负载列表;
收集压缩子模块25,用于对每个消息有效负载列表进行计时,若计时时间达到设定周期,且所述消息有效负载列表中包括的有效负载的大小未达到消息总大小阈值,则从本区域内其他通知服务中间件收集所述主题消息对应的有效负载保存到所述消息有效负载列表中,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表。
进一步地,收集压缩子模块25包括:
发送单元251,用于若所述消息有效负载列表中包括的有效负载的大小与所述消息总大小阈值的比率小于设定比,则向本区域内其他通知服务中间件发送所述主题对应的收集通知;
接收单元253,用于接收所述本区域内其他通知服务中间件根据所述收集通知返回的所述主题对应的有效负载;
压缩单元255,用于采用压缩算法对接收到的有效负载与源通知服务中间件的消息有效负载列表中包括的有效负载共同压缩,得到包括所述主题的压缩消息。
上述的周期压缩子模块21、阈值压缩子模块23、收集压缩子模块25及其各个单元,对某一主题的消息的有效负载进行压缩的具体方法,可以参照上述消息传送方法第一、第二、第四实施例中压缩过程的相关描述以及图5、图6、图7。
再进一步地,该通知服务中间件还可以包括:阈值更新模块18和/或重传处理模块19。
其中,阈值更新模块18,用于根据所述压缩算法的平均压缩比和网络最大传输单元大小,设定所述消息总大小阈值;在对接收到的每一个消息进行压缩后,根据压缩前和压缩后的消息大小计算每一次的压缩比;间隔设定的统计时间后,计算统计到的压缩比的加权平均值;根据所述加权平均值,更新所述消息总大小阈值;阈值更新模块更新消息总大小阈值的具体方法可以参照上述消息传送方法第一、第二、第四实施例中的相关描述以及公式(1)、(2)。
重传处理模块19,用于按照所述压缩消息中携带的第一序列号,将已发送的各个所述压缩消息保存在已发送消息列表中;若在设定时间内接收所述目标通知服务中间件返回的确认消息,且所述已发送消息列表中包括的第一序列号中存在与所述确认消息中携带的第二序列号相匹配的序列号,则所述第二序列号对应的压缩消息传送成功,将所述第二序列号对应的压缩消息从所述已发送消息列表中删除;若在设定时间内未接收所述目标通知服务中间件返回的确认消息,或所述已发送消息列表中包括的第一序列号中不存在与所述响应消息中携带的第二序列号相匹配的序列号,则重新发送所述已发送消息列表中超时的所述第一序列号对应的压缩消息。重传处理模块重新发送超时的压缩消息的具体方法可以参照上述消息传送方法第一、第二、第四实施例中的相关描述。
本实施例可以用于应用层的基于主题的PUB/SUB通知服务中间件系统,缓存模块根据主题对消息进行分类收集,压缩模块的各个子模块对消息的有效负载进行批量的压缩打包,然后第一发送模块传送压缩消息,可以对同一个主题的消息进行批量处理,减少了实际在通知服务中间件中传输的消息的数据量,从而减少了路由过程中对主题的匹配次数和路由交换此路,降低了路由负载;多个消息的有效负载在传输过程中共用一个消息头,减少了实际在通知服务中间件中传输的消息量,节约传输带宽资源;对同一主题的多个消息的有效负载进行压缩打包,进一步节约了传输带宽资源,提高了通知服务中间件的消息吞吐量。
图14为本发明通知服务中间件第三实施例的结构示意图,如图14所示,该通知服务中间件包括:
第二接收模块31,用于接收源通知服务中间件发送的压缩消息,所述压缩消息包括主题;
解压模块33,用于采用设定的解压算法对所述压缩消息进行解压,得到至少一个有效负载;
封装模块35,用于将解压缩得到的各个所述有效负载重新封装为所述主题对应的各个消息;
第二发送模块37,用于将重新封装后消息的消息列表发送至订阅所述主题的订阅者,以使所述订阅者循环取出所述消息列表中的所有消息。
进一步地,该通知服务中间件还可以包括:
重传处理模块39,用于若在设定时间内收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向源通知服务中间件发送确认消息,所述确认消息中携带的第二序列号;或若在设定时间内未收集到所有订阅者返回的指示正确订阅者接收的响应消息,则向未返回所述响应消息的订阅者重新发送所述消息列表。
具体地,本实施例中的通知服务中间件可以为目标通知服务中间件。在基于主题的PUB/SUB通知服务中间件系统中,源通知服务中间件将某一主题的压缩消息发送给目标通知服务中间件,目标通知服务中间件的第二接收模块31接收到该压缩消息后,解压模块33采用设定的解压算法对该压缩消息进行解压,得到各个有效负载;封装模块35将解压缩得到的各个有效负载重新封装为该主题对应的各个消息后,第二发送模块37将重新封装后消息的消息列表发送至订阅该主题的订阅者,订阅者可以循环取出该消息列表中的所有消息。如果目标通知服务中间件成功的向所有的订阅者传送了该主题对应的消息列表,则该还目标通知服务中间件的重传处理模块39可以向源通知服务中间件返回确认消息。其中,源通知服务中间件和目标通知服务中间件可以根据压缩消息中的第一序列号判断是否传送成功,具体方法可以参照上述消息传送方法第一、第二实施例中的相关描述。目标通知服务中间件对接收到的压缩消息进行解压、封装、发送的具体方法可以参照上述消息传送方法第三、第四实施例中的相关描述。
本实施例解压模块对压缩消息进行解压,封装模块将得到的各个有效负载分别重新封装为消息后,第二发送模块将消息列表发送至订阅者,可以提高通知服务中间件的吞吐量,节约系统带宽。
图15为本发明消息传送系统实施例的结构示意图,如图15所示,该消息传送系统包括:发布者41、订阅者43和通知服务中间件系统45,所述通知服务中间件系统包括至少一个通知服务中间件;
所述通知服务中间件为源通知服务中间件451或目标通知服务中间件453;
其中,源通知服务中间件451可以为上述通知服务中间件第一、第二实施例中任一结构的通知服务中间件;
目标通知服务中间件453可以为上述通知服务中间件第三实施例中的通知服务中间件;
发布者41,用于向源通知服务中间件451发送消息;
订阅者43,用于接收目标通知服务中间件453返回的该订阅者订阅的主题对应的消息。
具体地,在基于主题的PUB/SUB通知服务中间件系统中,源通知服务中间件451接收发布者41发布的消息后,判断该消息的实时属性。如果该消息的实时属性为非实时传送,源通知服务中间件451统计该消息的主题对应的消息有效负载列表的计时时间和/或有效负载大小,当计时时间满足时间周期和/或有效负载满足消息总大小阈值等条件时,源通知服务中间件451可以采用压缩算法对该消息的主题对应的消息有效负载列表包括的有效负载进行压缩,得到压缩消息。源通知服务中间件451将该主题的压缩消息发送给目标通知服务中间件453。目标通知服务中间件453采用设定的解压算法对该压缩消息进行解压,得到各个有效负载;将解压缩得到的各个有效负载重新封装为该主题对应的各个消息后,将重新封装后消息的消息列表发送至订阅该主题的订阅者43。订阅者43可以循环取出该消息列表中的所有消息。如果目标通知服务中间件成功的向所有的订阅者传送了该主题对应的消息列表,则该还目标通知服务中间件可以向源通知服务中间件返回确认消息。其中,源通知服务中间件和目标通知服务中间件可以根据压缩消息中的第一序列号判断是否传送成功,具体方法可以参照上述消息传送方法第一、第二实施例中的相关描述。本发明实施例中发布者41、订阅者43和通知服务中间件系统45完成消息传送的具体过程,可以参照上述消息传送方法第一、第二、第三、第四实施例中的相关描述。
本实施例可以用于应用层的基于主题的PUB/SUB通知服务中间件系统,通知服务中间件根据消息的实时属性将实时性要求不高的非实时传送的消息保存到消息有效负载列表后,进行批量压缩传送,提高了通知服务中间件的吞吐量,节约了系统带宽。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种消息传送方法,其特征在于,包括:
接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;
若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;
在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;
将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。
2.根据权利要求1所述的消息传送方法,其特征在于,所述在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息,包括:
对每个消息有效负载列表进行计时,若计时时间达到设定周期,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表;或
若所述消息有效负载列表中包括的有效负载的大小达到消息总大小阈值,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,清空所述消息有效负载列表;或
对每个消息有效负载列表进行计时,若计时时间达到设定周期,且所述消息有效负载列表中包括的有效负载的大小未达到消息总大小阈值,则从本区域内其他通知服务中间件收集所述主题消息对应的有效负载保存到所述消息有效负载列表中,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表。
3.根据权利要求2所述的消息传送方法,其特征在于,所述消息有效负载列表中包括的有效负载的大小未达到消息总大小阈值,则从本区域内其他通知服务中间件收集所述主题消息对应的有效负载保存到所述消息有效负载列表中,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息,包括:
若所述消息有效负载列表中包括的有效负载的大小与所述消息总大小阈值的比率小于设定比,则向本区域内其他通知服务中间件发送所述主题对应的收集通知;
接收所述本区域内其他通知服务中间件根据所述收集通知返回的所述主题对应的有效负载;
采用压缩算法对接收到的有效负载与源通知服务中间件的消息有效负载列表中包括的有效负载共同压缩,得到包括所述主题的压缩消息。
4.根据权利要求1-3任一所述的消息传送方法,其特征在于,还包括:
根据所述压缩算法的平均压缩比和网络最大传输单元大小,设定所述消息总大小阈值;
在对接收到的每一个消息进行压缩后,根据压缩前和压缩后的消息大小计算每一次的压缩比;
间隔设定的统计时间后,计算统计到的压缩比的加权平均值;
根据所述加权平均值,更新所述消息总大小阈值。
5.根据权利要求1-3任一所述的消息传送方法,其特征在于,还包括:
按照所述压缩消息中携带的第一序列号,将已发送的各个所述压缩消息保存在已发送消息列表中;
若在设定时间内接收所述目标通知服务中间件返回的确认消息,且所述已发送消息列表中包括的第一序列号中存在与所述确认消息中携带的第二序列号相匹配的序列号,则所述第二序列号对应的压缩消息传送成功,将所述第二序列号对应的压缩消息从所述已发送消息列表中删除;
若在设定时间内未接收所述目标通知服务中间件返回的确认消息,或所述已发送消息列表中包括的第一序列号中不存在与所述确认消息中携带的第二序列号相匹配的序列号,则重新发送所述已发送消息列表中超时的所述第一序列号对应的压缩消息。
6.一种消息传送方法,其特征在于,包括:
接收源通知服务中间件发送的压缩消息,所述压缩消息包括主题;
采用设定的解压算法对所述压缩消息进行解压,得到至少一个有效负载;
将解压缩得到的各个所述有效负载重新封装为所述主题对应的各个消息后,将重新封装后消息的消息列表发送至订阅所述主题的订阅者,以使所述订阅者循环取出所述消息列表中的所有消息。
7.根据权利要求6所述的消息传送方法,其特征在于,还包括:
若在设定时间内收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向源通知服务中间件发送确认消息,所述确认消息中携带的第二序列号;或
若在设定时间内未收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向未返回所述响应消息的订阅者重新发送所述消息列表。
8.一种通知服务中间件,其特征在于,包括:
第一接收模块,用于接收发布者发送的至少一条消息,所述消息中包括该消息的有效负载、实时属性和主题;
缓存模块,用于若所述消息的实时属性为非实时传送,则将所述消息的有效负载保存到所述消息的主题对应的消息有效负载列表中;
压缩模块,用于在满足预定策略时,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息;
第一发送模块,用于将所述压缩消息通过目标通知服务中间件发送至所述主题对应的订阅者。
9.根据权利要求8所述的通知服务中间件,其特征在于,所述压缩模块包括以下子模块的任意一个或者多个:
周期压缩子模块,用于对每个消息有效负载列表进行计时,若计时时间达到设定周期,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表;
阈值压缩子模块,用于若所述消息有效负载列表中包括的有效负载的大小达到消息总大小阈值,则采用压缩算法对所述消息有效负载列表中的有效负载进行压缩,得到包括所述主题的压缩消息,清空所述消息有效负载列表;
收集压缩子模块,用于对每个消息有效负载列表进行计时,若计时时间达到设定周期,且所述消息有效负载列表中包括的有效负载的大小未达到消息总大小阈值,则从本区域内其他通知服务中间件收集所述主题消息对应的有效负载保存到所述消息有效负载列表中,采用压缩算法对所述消息有效负载列表中包括的有效负载进行压缩,得到包括所述主题的压缩消息,重新开始计时并清空所述消息有效负载列表。
10.根据权利要求9所述的通知服务中间件,其特征在于,所述收集压缩子模块包括:
发送单元,用于若所述消息有效负载列表中包括的有效负载的大小与所述消息总大小阈值的比率小于设定比,则向本区域内其他通知服务中间件发送所述主题对应的收集通知;
接收单元,用于接收所述本区域内其他通知服务中间件根据所述收集通知返回的所述主题对应的有效负载;
压缩单元,用于采用压缩算法对接收到的有效负载与源通知服务中间件的消息有效负载列表中包括的有效负载共同压缩,得到包括所述主题的压缩消息。
11.根据权利要求8-10任一所述的通知服务中间件,其特征在于,还包括:
阈值更新模块,用于根据所述压缩算法的平均压缩比和网络最大传输单元大小,设定所述消息总大小阈值;在对接收到的每一个消息进行压缩后,根据压缩前和压缩后的消息大小计算每一次的压缩比;间隔设定的统计时间后,计算统计到的压缩比的加权平均值;根据所述加权平均值,更新所述消息总大小阈值;和/或
重传处理模块,用于按照所述压缩消息中携带的第一序列号,将已发送的各个所述压缩消息保存在已发送消息列表中;若在设定时间内接收所述目标通知服务中间件返回的确认消息,且所述已发送消息列表中包括的第一序列号中存在与所述确认消息中携带的第二序列号相匹配的序列号,则所述第二序列号对应的压缩消息传送成功,将所述第二序列号对应的压缩消息从所述已发送消息列表中删除;若在设定时间内未接收所述目标通知服务中间件返回的确认消息,或所述已发送消息列表中包括的第一序列号中不存在与所述确认消息中携带的第二序列号相匹配的序列号,则重新发送所述已发送消息列表中超时的所述第一序列号对应的压缩消息。
12.一种通知服务中间件,其特征在于,包括:
第二接收模块,用于接收源通知服务中间件发送的压缩消息,所述压缩消息包括主题;
解压模块,用于采用设定的解压算法对所述压缩消息进行解压,得到至少一个有效负载;
封装模块,用于将解压缩得到的各个所述有效负载重新封装为所述主题对应的各个消息;
第二发送模块,用于将重新封装后消息的消息列表发送至订阅所述主题的订阅者,以使所述订阅者循环取出所述消息列表中的所有消息。
13.根据权利要求12所述的通知服务中间件,其特征在于,还包括:
重传处理模块,用于若在设定时间内收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向源通知服务中间件发送确认消息,所述确认消息中携带的第二序列号;或若在设定时间内未收集到所有订阅者返回的指示订阅者正确接收的响应消息,则向未返回所述响应消息的订阅者重新发送所述消息列表。
14.一种消息传送系统,其特征在于,包括:发布者、订阅者和通知服务中间件系统,所述通知服务中间件系统包括至少一个通知服务中间件;
所述通知服务中间件为源通知服务中间件或目标通知服务中间件;
所述源通知服务中间件为如权利要求8-11任一所述的通知服务中间件;
所述目标通知服务中间件为如权利要求12或13所述的通知服务中间件;
所述发布者,用于向所述源通知服务中间件发送消息;
所述订阅者,用于接收所述目标通知服务中间件返回的该订阅者订阅的主题对应的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010502301 CN102143198B (zh) | 2010-09-30 | 2010-09-30 | 消息传送方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010502301 CN102143198B (zh) | 2010-09-30 | 2010-09-30 | 消息传送方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102143198A true CN102143198A (zh) | 2011-08-03 |
CN102143198B CN102143198B (zh) | 2013-08-07 |
Family
ID=44410419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010502301 Expired - Fee Related CN102143198B (zh) | 2010-09-30 | 2010-09-30 | 消息传送方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102143198B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523119A (zh) * | 2011-12-16 | 2012-06-27 | 广东东研网络科技有限公司 | 基于snmp协议的epon网管系统数据传输方法 |
CN103532822A (zh) * | 2012-07-02 | 2014-01-22 | 北京神州泰岳软件股份有限公司 | 消息投递的管理方法、服务器和系统 |
CN103631605A (zh) * | 2013-12-18 | 2014-03-12 | 清华大学 | 信息发布方法及装置 |
CN103713899A (zh) * | 2013-12-19 | 2014-04-09 | 珠海世纪鼎利通信科技股份有限公司 | 一种面向对象中基于消息实现对象联系的方法及系统 |
CN103927218A (zh) * | 2014-04-30 | 2014-07-16 | 广州唯品会网络技术有限公司 | 事件分发方法及系统 |
CN104202302A (zh) * | 2014-08-08 | 2014-12-10 | 广州华多网络科技有限公司 | 一种发送信息配置文件的方法及装置 |
CN104954497A (zh) * | 2015-07-03 | 2015-09-30 | 浪潮(北京)电子信息产业有限公司 | 一种云存储系统中数据传输方法和系统 |
GB2529174A (en) * | 2014-08-12 | 2016-02-17 | Ibm | Batch compression management of messages |
CN107819831A (zh) * | 2017-10-23 | 2018-03-20 | 丹露成都网络技术有限公司 | 一种基于metaq及mns的通用消息系统 |
CN108282500A (zh) * | 2017-01-05 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 消息发布方法、装置以及电子设备 |
CN108390854A (zh) * | 2018-01-10 | 2018-08-10 | 北京思特奇信息技术股份有限公司 | 一种dcc消息传输方法和系统 |
CN109361694A (zh) * | 2018-11-22 | 2019-02-19 | 北京未尔锐创科技有限公司 | 一种网络通信方法 |
CN109656726A (zh) * | 2018-11-28 | 2019-04-19 | 中国船舶重工集团公司第七〇九研究所 | 一种适用于数据中心的工业信息交互系统及方法 |
CN109726004A (zh) * | 2017-10-27 | 2019-05-07 | 中移(苏州)软件技术有限公司 | 一种数据处理方法及装置 |
CN109951261A (zh) * | 2019-03-20 | 2019-06-28 | 江苏满运软件科技有限公司 | 中间件消息传输补偿方法、装置、电子设备、存储介质 |
CN111741041A (zh) * | 2019-07-10 | 2020-10-02 | 北京京东尚科信息技术有限公司 | 消息处理方法及其装置、电子设备及计算机可读介质 |
CN111954031A (zh) * | 2019-05-14 | 2020-11-17 | 西安光启未来技术研究院 | 一种动态调整视频流抽帧速率的方法及系统 |
CN112667476A (zh) * | 2020-12-30 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于任务的消息过滤方法、装置、设备及存储介质 |
CN114900555A (zh) * | 2021-12-14 | 2022-08-12 | 合肥哈工轩辕智能科技有限公司 | 基于无损压缩算法的数据分发方法及装置 |
CN114979178A (zh) * | 2022-05-12 | 2022-08-30 | 中国人民解放军陆军装甲兵学院 | 一种基于消息队列的消息流向控制平台及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040254851A1 (en) * | 2003-06-16 | 2004-12-16 | Kabushiki Kaisha Toshiba | Electronic merchandise distribution apparatus, electronic merchandise receiving terminal, and electronic merchandise distribution method |
CN101527654A (zh) * | 2009-04-20 | 2009-09-09 | 中兴通讯股份有限公司 | 一种网管系统中的数据传输方法及系统 |
-
2010
- 2010-09-30 CN CN 201010502301 patent/CN102143198B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040254851A1 (en) * | 2003-06-16 | 2004-12-16 | Kabushiki Kaisha Toshiba | Electronic merchandise distribution apparatus, electronic merchandise receiving terminal, and electronic merchandise distribution method |
CN101527654A (zh) * | 2009-04-20 | 2009-09-09 | 中兴通讯股份有限公司 | 一种网管系统中的数据传输方法及系统 |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523119B (zh) * | 2011-12-16 | 2015-01-21 | 广东东研网络科技股份有限公司 | 基于snmp协议的epon网管系统数据传输方法 |
CN102523119A (zh) * | 2011-12-16 | 2012-06-27 | 广东东研网络科技有限公司 | 基于snmp协议的epon网管系统数据传输方法 |
CN103532822B (zh) * | 2012-07-02 | 2016-12-21 | 北京神州泰岳软件股份有限公司 | 消息投递的管理方法、服务器和系统 |
CN103532822A (zh) * | 2012-07-02 | 2014-01-22 | 北京神州泰岳软件股份有限公司 | 消息投递的管理方法、服务器和系统 |
CN103631605A (zh) * | 2013-12-18 | 2014-03-12 | 清华大学 | 信息发布方法及装置 |
CN103713899A (zh) * | 2013-12-19 | 2014-04-09 | 珠海世纪鼎利通信科技股份有限公司 | 一种面向对象中基于消息实现对象联系的方法及系统 |
CN103927218A (zh) * | 2014-04-30 | 2014-07-16 | 广州唯品会网络技术有限公司 | 事件分发方法及系统 |
CN103927218B (zh) * | 2014-04-30 | 2017-07-04 | 广州唯品会网络技术有限公司 | 事件分发方法及系统 |
CN104202302A (zh) * | 2014-08-08 | 2014-12-10 | 广州华多网络科技有限公司 | 一种发送信息配置文件的方法及装置 |
GB2529174A (en) * | 2014-08-12 | 2016-02-17 | Ibm | Batch compression management of messages |
US10056918B2 (en) | 2014-08-12 | 2018-08-21 | International Business Machines Corporation | Batch compression management of messages |
CN104954497B (zh) * | 2015-07-03 | 2018-09-14 | 浪潮(北京)电子信息产业有限公司 | 一种云存储系统中数据传输方法和系统 |
CN104954497A (zh) * | 2015-07-03 | 2015-09-30 | 浪潮(北京)电子信息产业有限公司 | 一种云存储系统中数据传输方法和系统 |
CN108282500A (zh) * | 2017-01-05 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 消息发布方法、装置以及电子设备 |
CN107819831A (zh) * | 2017-10-23 | 2018-03-20 | 丹露成都网络技术有限公司 | 一种基于metaq及mns的通用消息系统 |
CN107819831B (zh) * | 2017-10-23 | 2020-09-01 | 丹露成都网络技术有限公司 | 一种基于metaq及mns的通用消息系统 |
CN109726004A (zh) * | 2017-10-27 | 2019-05-07 | 中移(苏州)软件技术有限公司 | 一种数据处理方法及装置 |
CN108390854A (zh) * | 2018-01-10 | 2018-08-10 | 北京思特奇信息技术股份有限公司 | 一种dcc消息传输方法和系统 |
CN109361694A (zh) * | 2018-11-22 | 2019-02-19 | 北京未尔锐创科技有限公司 | 一种网络通信方法 |
CN109361694B (zh) * | 2018-11-22 | 2021-11-30 | 北京未尔锐创科技有限公司 | 一种网络通信方法 |
CN109656726A (zh) * | 2018-11-28 | 2019-04-19 | 中国船舶重工集团公司第七〇九研究所 | 一种适用于数据中心的工业信息交互系统及方法 |
CN109951261B (zh) * | 2019-03-20 | 2021-09-28 | 江苏满运软件科技有限公司 | 中间件消息传输补偿方法、装置、电子设备、存储介质 |
CN109951261A (zh) * | 2019-03-20 | 2019-06-28 | 江苏满运软件科技有限公司 | 中间件消息传输补偿方法、装置、电子设备、存储介质 |
CN111954031A (zh) * | 2019-05-14 | 2020-11-17 | 西安光启未来技术研究院 | 一种动态调整视频流抽帧速率的方法及系统 |
CN111954031B (zh) * | 2019-05-14 | 2024-04-30 | 西安光启智能技术有限公司 | 一种动态调整视频流抽帧速率的方法及系统 |
CN111741041A (zh) * | 2019-07-10 | 2020-10-02 | 北京京东尚科信息技术有限公司 | 消息处理方法及其装置、电子设备及计算机可读介质 |
CN111741041B (zh) * | 2019-07-10 | 2023-05-12 | 北京京东尚科信息技术有限公司 | 消息处理方法及其装置、电子设备及计算机可读介质 |
CN112667476A (zh) * | 2020-12-30 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于任务的消息过滤方法、装置、设备及存储介质 |
CN112667476B (zh) * | 2020-12-30 | 2023-02-14 | 平安普惠企业管理有限公司 | 基于任务的消息过滤方法、装置、设备及存储介质 |
CN114900555A (zh) * | 2021-12-14 | 2022-08-12 | 合肥哈工轩辕智能科技有限公司 | 基于无损压缩算法的数据分发方法及装置 |
CN114979178A (zh) * | 2022-05-12 | 2022-08-30 | 中国人民解放军陆军装甲兵学院 | 一种基于消息队列的消息流向控制平台及方法 |
CN114979178B (zh) * | 2022-05-12 | 2023-11-10 | 中国人民解放军陆军装甲兵学院 | 一种基于消息队列的消息流向控制平台及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102143198B (zh) | 2013-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102143198B (zh) | 消息传送方法、装置和系统 | |
CN111740808B (zh) | 一种数据传输方法及装置 | |
CN104092717B (zh) | 消息处理方法及系统、消息目的端设备 | |
CN101179564B (zh) | 基于链路层自动请求重传的tcp分组头部压缩方法及其系统 | |
CN109462631B (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN107659515A (zh) | 报文处理方法、装置、报文处理芯片及服务器 | |
CN105141603A (zh) | 通信数据传输方法及系统 | |
CN110099086A (zh) | 一种基于融合传输系统的数据传输方法 | |
CN101212401B (zh) | 面向网格的可配置数据传输方法及系统 | |
CN103945282A (zh) | 文件读取方法和装置 | |
CN111970092B (zh) | 一种支持可靠性调节的多协议冗余网络异步通信方法 | |
CN113517956A (zh) | 一种清空缓存的方法及装置 | |
CN104283800A (zh) | 网关装置、通信系统以及流量控制方法 | |
CN108614820B (zh) | 实现流式源数据解析的方法和装置 | |
CN104168613A (zh) | 一种移动云计算环境中发生切换时的传输方法及装置 | |
CN114978427B (zh) | 数据处理方法、装置、程序产品、计算机设备和介质 | |
CN103647622A (zh) | 一种实现跨机房数据传输的方法、装置和系统 | |
CN110830386A (zh) | 报文保序的方法、装置和系统 | |
US20190222872A1 (en) | Playout buffering in a live content distribution system | |
CN116668415A (zh) | 流媒体数据处理方法及系统 | |
CN1848976A (zh) | 一种短消息重发方法及短消息重发系统 | |
CN108243091B (zh) | 一种信息共享装置和信息共享方法 | |
CN110865891B (zh) | 一种异步消息编排方法和装置 | |
CN106028373A (zh) | 基于云服务数据特征的移动互联网数据交换系统及方法 | |
CN102573021A (zh) | 对无线传感器网络消息进行处理的方法和网关 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130807 Termination date: 20190930 |
|
CF01 | Termination of patent right due to non-payment of annual fee |