CN102891797A - 支持消息持久化的发布订阅方法 - Google Patents
支持消息持久化的发布订阅方法 Download PDFInfo
- Publication number
- CN102891797A CN102891797A CN2012102259986A CN201210225998A CN102891797A CN 102891797 A CN102891797 A CN 102891797A CN 2012102259986 A CN2012102259986 A CN 2012102259986A CN 201210225998 A CN201210225998 A CN 201210225998A CN 102891797 A CN102891797 A CN 102891797A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- behalf
- subscription
- subscriber
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种发布订阅方法,发布者产生广告消息,并将广告消息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表;订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并在每个结点生成基于订阅内容的路由表;发布者发布的消息,根据基于订阅内容的路由表,路由到订阅者,并且,在路由过程中,将消息缓存于投递路径上的某个代理结点并标识已缓存;订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,沿着投递路径查找满足订阅条件的历史消息,将查询到的历史消息沿着相反路径返回给订阅者。本发明解决了发布/订阅系统中用户无法获得历史消息的问题,且查询快速可靠。
Description
技术领域
本发明涉及网络领域,尤其涉及一种支持消息持久化的发布订阅方法。
背景技术
随着Internet技术的广泛应用和移动计算,普适计算以及互联网技术的快速发展,现在的分布式系统可能包含了成千上万的结点,并且这些结点可能分布在各个不同的地理位置,拥有不同的行为。这些限制使得分布式系统需要更加灵活的通信模型,以适应这种动态性和扩展性。发布/订阅系统以其松耦合和异步通信的特性逐渐成为了设计分布式系统的一种重要的架构,并且被认为是能解决现今Internet众多挑战的最有前景的网络架构之一。
发布/订阅系统包含一组需要进行通信的客户端(Client)和位于客户端之间解耦其通信的通知服务(Notification Service)。客户端可以分为订阅者(Subscriber)和发布者(Publisher),订阅者向消息服务提交他们的兴趣(Interest),当发布者产生了匹配某兴趣的事件时,订阅者将得到通知。由事件代理(Broker)组成的发布/订阅网络负责完成通知服务,他们收集订阅(Subscription)并负责将事件(Event)路由给相应的订阅者。在这整个过程中,发布者和订阅者之间不需要知道彼此的地址信息,从而提供了通信双方空间上的解耦。
目前,在大部分发布/订阅系统中,只要订阅者订阅了兴趣并且始终在线,消息都会确保到达对其感兴趣的订阅者手中。然而,在一些动态的环境中,客户端很可能会动态地加入和退出系统。可能出现的一种情况是,用户所感兴趣的消息产生于用户连接到系统之前。在传统的发布订阅系统中,系统都是假设在信息发布时,所有用户的订阅信息都已存在于网络之中,从而用户无法获取到满足其兴趣的历史的消息。因此,使得消息能持久的存在于系统之中,从而能使消息的发布者和订阅者之间在时间上解耦,是一项富有挑战且意义重大的任务。
发明内容
本发明的目的在于提供一种支持消息持久化的发布订阅方法,以解决现有发布/订阅系统中用户无法获得历史消息的技术问题。
为达到上述目的,本发明提供一种支持消息持久化的发布订阅方法,包括以下步骤:
步骤一:发布者产生广告消息,通知整个网络即将发布的消息的主题;并将广告信息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表;
步骤二:订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并且,在订阅路由的过程中,每个结点生成基于订阅内容的路由表;
步骤三:发布者发布的消息,根据基于订阅内容的路由表,路由到对该消息感兴趣的订阅者,并且,消息在沿着投递路径路由的过程中,缓存于投递路径上的某个代理结点中,并标识该消息为已缓存;
步骤四:订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,并沿着投递路径查找满足订阅条件的历史消息;
步骤五:查询到已存储的历史消息,将该历史消息沿着相反路径返回给订阅者。
依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,步骤三中将消息缓存于某个代理结点中的操作具体包括:查看该消息是否被缓存过,并且查看当前代理结点的存储空间;若该消息没有被存储过,且当前代理点存储空间未满,则将消息复制一个副本缓存于该代理结点中。
依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,将消息缓存于某个代理结点中的操作引入冗余机制,具体为:当一个消息到达代理时,查看该消息是否被缓存过,并查看当前代理结点的存储空间,若该消息已被存储过,但该代理结点仍有存储空间,则将该消息复制并存储于该代理的复本队列中。
依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,代理结点的存储空间组织为一个先进先出的复本队列。
依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,还包括:
步骤六:当投递路径上的存储容量全部用完时,开启清理操作,清理掉路径中相对较老的消息。
综合以上,可以看出,本发明的支持消息持久化的发布订阅方法引入了缓存机制,利用消息投递路径中所有代理结点的存储能力,将消息缓存于代理结点之中,在需要时可以快速可靠得获取历史消息。并且,缓存消息时还引入了冗余的机制,有效减少了订阅者恢复历史消息时的平均等待时间。因此,与现有技术相比,本发明有效解决了发布/订阅系统中用户无法获得历史消息的技术问题,并且,具有查询速度快、可靠性高的优点。
附图说明
图1为本发明支持消息持久化的发布订阅方法的流程原理图;
图2为本发明实施例的支持消息持久化的发布订阅方法应用的网络系统结构图。
具体实施方式
下面结合附图和具体实施例,进一步阐述本发明。以下的实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明记载的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。
本方明方法实现了在传统发布订阅系统的基础上加入订阅历史消息的功能。发布/订阅系统主要由代理结点组成,代理结点负责事件的匹配和转发。通常,这些代理结点也具有一定的存储能力。当发布者产生的消息沿着投递路径路由到订阅者的过程中,我们将根据某种策略将事件缓存于投递路径上;当新加入系统的订阅者对历史消息感兴趣时,订阅者可以产生针对历史消息的订阅;对历史消息的订阅,将首先被路由到消息源头,并最终遍历相应的投递路径,以恢复所有缓存的历史消息。
请参阅图1,一种支持消息持久化的发布订阅方法,包括以下步骤:
S11:发布者产生广告消息,通知整个网络即将发布的消息的主并将广告信息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表。
S12:订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并且,在订阅路由的过程中,每个结点生成基于订阅内容的路由表。
S13:发布者发布的消息,根据基于订阅内容的路由表,路由到对该消息感兴趣的订阅者,并且,消息在沿着投递路径路由的过程中,缓存于投递路径上的某个代理结点中,并标识该消息为已缓存;
将消息缓存于某个代理结点中的操作具体包括:查看该消息是否被缓存过,并且查看当前代理结点的存储空间;若该消息没有被存储过,且当前代理点存储空间未满,则将消息复制一个副本缓存于该代理结点中。
本发明将消息缓存于某个代理结点中的操作还引入冗余机制,具体为:当一个消息到达代理时,查看该消息是否被缓存过,并查看当前代理结点的存储空间,若该消息已被存储过,但该代理结点仍有存储空间,则将该消息复制并存储于该代理的复本队列中。
S14:订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,并沿着投递路径查找满足订阅条件的历史消息;
S15:查询到已存储的历史消息,将该历史消息沿着相反路径返回给订阅者。
S16:当投递路径上的存储容量全部用完时,开启清理操作,清理掉路径中相对较老的消息。
以下结合图2,对本发明的支持消息持久化的发布订阅方法的应用过程进行具体说明。
如图2所示,其为本发明实施例的支持消息持久化的发布订阅方法应用的网络系统结构图。应用本发明方法的网络结构由代理节点(Broker)、发布者(Publisher)和订阅者(Subscriber)组成,本系统使用了结合广告机制的内容路由协议。
首先,发布者会产生广告消息,告诉整个网络它将发布的消息的主题。这些广告信息被转发到整个网络,在每个结点生成一个基于广告主题的路由表。然后,订阅者产生的订阅将根据基于广告主题的路由表形成的路径,最终路由到相关主题的发布者。同时,订阅在路由的过程中,每个结点也会形成基于订阅内容的路由表。最终,发布者发布的消息,将会根据基于订阅内容的路由表,最终路由到对该消息感兴趣的订阅者手中。
在消息沿着投递路径路由的过程中,消息将缓存于投递路径上的某个代理结点中,并标识该消息为已缓存。例如,如图1所示,假设发布者产生消息,记作e,e的内容满足订阅者S1的订阅兴趣,从而根据基于订阅内容的路由表形成了一条从P1到S1的投递路径(如深色结点所示)当消息e路由至某个代理结点时,如果e没有被缓存过,并且当前代理结点存储空间未满,则e将复制一个副本缓存于该代理中。
当投递路径上的存储容量全部用完时,系统将开启一次清理操作,清理掉路径中相对较老的消息。例如,当消息e投递至B5时,如果e中的标识显示为未缓存,并且B5的存储空间已满,则B5将产生一个清理请求。清理请求将沿着消息投递相反的方向遍历投递路径,并且根据在清理请求中设定的阈值删除路径中过老的历史消息。
另外,本系统还加入了一种冗余的机制,当某个代理结点存储空间未满时,它的剩余空间将会被组织成一个先进先出的复本队列。当一个消息到达代理时,如果该消息已被存储过,但该代理仍有存储空间时,该消息将会复制并存储于该代理的复本队列中。从而使得消息能在系统中有一定的复本数量,提高历史消息恢复时的平均等待时间。
本发明实现了一种支持订阅历史消息的功能。当新的订阅者接入发布订阅系统时,它可以发出针对历史消息的订阅,该订阅首先路由至相应主题的发布者,再沿着投递路径查找并恢复满足订阅条件的历史消息。例如,如图1所示,假设S3为新加入的订阅者,它的订阅兴趣与S1的订阅兴趣相同。S3可以发出一个针对历史消息的订阅,记作s,该订阅首先根据基于广告主题的路由表路由到该主题消息的源头B1。然后再根据s的订阅兴趣和基于订阅内容的路由表,沿着投递路径(如深色结点所示)查询历史消息。在查询的过程中,一旦遇到满足s的已存储的历史消息,就将该历史消息沿着相反路径最终返回给S3。
以上所述,仅是本发明的较佳实施实例而已,并非对本发明做任何形式上的限制,任何未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施实例所作的任何简单修改、等同变化与修饰,均属于本发明技术方案的范围。
Claims (5)
1.一种支持消息持久化的发布订阅方法,其特征在于,包括以下步骤:
步骤一:发布者产生广告消息,通知整个网络即将发布的消息的主题并将广告信息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表;
步骤二:订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并且,在订阅路由的过程中,每个结点生成基于订阅内容的路由表;
步骤三:发布者发布的消息,根据基于订阅内容的路由表,路由到对该消息感兴趣的订阅者,并且,消息在沿着投递路径路由的过程中,缓存于投递路径上的某个代理结点中,并标识该消息为已缓存;
步骤四:订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,并沿着投递路径查找满足订阅条件的历史消息;
步骤五:查询到已存储的历史消息,将该历史消息沿着相反路径返回给订阅者。
2.如权利要求1所述的支持消息持久化的发布订阅方法,其特征在于,步骤三中将消息缓存于某个代理结点中的操作具体包括:查看该消息是否被缓存过,并且查看当前代理结点的存储空间;若该消息没有被存储过,且当前代理点存储空间未满,则将消息复制一个副本缓存于该代理结点中。
3.如权利要求2所述的支持消息持久化的发布订阅方法,其特征在于,将消息缓存于某个代理结点中的操作引入冗余机制,具体为:当一个消息到达代理时,查看该消息是否被缓存过,并查看当前代理结点的存储空间,若该消息已被存储过,但该代理结点仍有存储空间,则将该消息复制并存储于该代理的复本队列中。
4.如权利要求2所述的支持消息持久化的发布订阅方法,其特征在于,所述代理结点的存储空间组织为一个先进先出的复本队列。
5.如权利要求1所述的支持消息持久化的发布订阅方法,其特征在于,还包括:
步骤六:当投递路径上的存储容量全部用完时,开启清理操作,清理掉路径中相对较老的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102259986A CN102891797A (zh) | 2012-07-02 | 2012-07-02 | 支持消息持久化的发布订阅方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102259986A CN102891797A (zh) | 2012-07-02 | 2012-07-02 | 支持消息持久化的发布订阅方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102891797A true CN102891797A (zh) | 2013-01-23 |
Family
ID=47535171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102259986A Pending CN102891797A (zh) | 2012-07-02 | 2012-07-02 | 支持消息持久化的发布订阅方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102891797A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888517A (zh) * | 2014-03-04 | 2014-06-25 | 上海交通大学 | 用于发布订阅系统的实现历史事件订阅的缓存方法 |
CN106790402A (zh) * | 2016-11-29 | 2017-05-31 | 郑州云海信息技术有限公司 | 信息化体系结构中间件数据并行分发方法及系统 |
WO2017128713A1 (zh) * | 2016-01-29 | 2017-08-03 | 中兴通讯股份有限公司 | 订阅消息的发布方法及装置 |
CN109597694A (zh) * | 2018-09-29 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 消息投递限流方法和装置、电子设备 |
CN110740182A (zh) * | 2019-10-21 | 2020-01-31 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种基于dds技术的动态数据通信方法及设备 |
CN111213342A (zh) * | 2017-10-16 | 2020-05-29 | 西门子交通有限公司 | 铁路自动化网络和在铁路自动化网络中传输消息的方法 |
CN113162970A (zh) * | 2021-01-27 | 2021-07-23 | 中央财经大学 | 基于发布/订阅模型的消息路由方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170522A (zh) * | 2007-12-03 | 2008-04-30 | 华为技术有限公司 | 一种发布历史事件的方法及系统 |
CN102447650A (zh) * | 2010-10-25 | 2012-05-09 | 微软公司 | 带复制的一致消息收发 |
-
2012
- 2012-07-02 CN CN2012102259986A patent/CN102891797A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170522A (zh) * | 2007-12-03 | 2008-04-30 | 华为技术有限公司 | 一种发布历史事件的方法及系统 |
CN102447650A (zh) * | 2010-10-25 | 2012-05-09 | 微软公司 | 带复制的一致消息收发 |
Non-Patent Citations (1)
Title |
---|
V. SOURLAS等: ""Caching in content-based publish/subscribe systems"", 《PROC. 28TH IEEE CONFERENCE ON GLOBAL TELECOMMUNICATIONS》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888517A (zh) * | 2014-03-04 | 2014-06-25 | 上海交通大学 | 用于发布订阅系统的实现历史事件订阅的缓存方法 |
CN103888517B (zh) * | 2014-03-04 | 2017-01-18 | 上海交通大学 | 用于发布订阅系统的实现历史事件订阅的缓存方法 |
WO2017128713A1 (zh) * | 2016-01-29 | 2017-08-03 | 中兴通讯股份有限公司 | 订阅消息的发布方法及装置 |
CN106790402A (zh) * | 2016-11-29 | 2017-05-31 | 郑州云海信息技术有限公司 | 信息化体系结构中间件数据并行分发方法及系统 |
CN106790402B (zh) * | 2016-11-29 | 2020-10-23 | 苏州浪潮智能科技有限公司 | 信息化体系结构中间件数据并行分发方法及系统 |
CN111213342A (zh) * | 2017-10-16 | 2020-05-29 | 西门子交通有限公司 | 铁路自动化网络和在铁路自动化网络中传输消息的方法 |
US12030535B2 (en) | 2017-10-16 | 2024-07-09 | Siemens Mobility GmbH | Railway automation network and method for transmitting messages in a railway automation network |
CN109597694A (zh) * | 2018-09-29 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 消息投递限流方法和装置、电子设备 |
CN109597694B (zh) * | 2018-09-29 | 2023-03-28 | 创新先进技术有限公司 | 消息投递限流方法和装置、电子设备 |
CN110740182A (zh) * | 2019-10-21 | 2020-01-31 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种基于dds技术的动态数据通信方法及设备 |
CN110740182B (zh) * | 2019-10-21 | 2022-05-06 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种基于dds技术的动态数据通信方法及设备 |
CN113162970A (zh) * | 2021-01-27 | 2021-07-23 | 中央财经大学 | 基于发布/订阅模型的消息路由方法、装置、设备及介质 |
CN113162970B (zh) * | 2021-01-27 | 2023-08-22 | 中央财经大学 | 基于发布/订阅模型的消息路由方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102891797A (zh) | 支持消息持久化的发布订阅方法 | |
Carzaniga et al. | Content-based publish/subscribe networking and information-centric networking | |
Chen et al. | Leveraging social networks for P2P content-based file sharing in disconnected MANETs | |
CN103095724B (zh) | 一种内容中心网络多个兴趣包压缩发送及处理的方法 | |
CN101656765B (zh) | 身份位置分离网络的名址映射系统及数据传输方法 | |
US20180270145A1 (en) | Node connection method and distributed computing system | |
US20080195597A1 (en) | Searching in peer-to-peer networks | |
US9246859B2 (en) | Peer-to-peer collaboration of publishers in a publish-subscription environment | |
US20070101021A1 (en) | Recovering a blade in scalable software blade architecture | |
CN101764855A (zh) | 一种提供域名解析服务的方法、装置及系统 | |
US9565266B2 (en) | Broker facilitated peer-to-peer publisher collaboration in a publish-subscription environment | |
JP4459999B2 (ja) | 投票を活用した無停止サービスシステム及びそのシステムにおける情報更新及び提供方法 | |
CN103179161B (zh) | 一种内容获取方法、装置及网络系统 | |
Salehi et al. | Highly-available content-based publish/subscribe via gossiping | |
CN105989065B (zh) | 一种闪拍数据处理方法及系统 | |
Feng et al. | A popularity-based cache consistency mechanism for information-centric networking | |
CN103825916A (zh) | 一种资源下载方法及系统 | |
Yin et al. | DUP: Dynamic-tree based update propagation in peer-to-peer networks | |
CN104123296A (zh) | 一种生成消息索引以便向接收者呈现消息的方法及装置 | |
Tiwari et al. | Dynamic Web caching: For robustness, low latency & disconnection handling | |
Jin et al. | Content routing and lookup schemes using global bloom filter for content-delivery-as-a-service | |
Tran et al. | Decentralized online social network using peer-to-peer technology | |
KR20140069143A (ko) | 트랜잭셔널 미들웨어 머신 환경에서 여러 가지 서로 다른 메시지 큐들을 지원하기 위한 시스템 및 방법 | |
US8560685B1 (en) | Probabilistic data storage owner election and replication protocol | |
Selim et al. | A replication oriented approach to event based middleware over structured peer to peer networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130123 |