支持消息持久化的发布订阅方法

文档序号:7855050阅读:155来源:国知局
专利名称:支持消息持久化的发布订阅方法
技术领域
本发明涉及网络领域,尤其涉及一种支持消息持久化的发布订阅方法。
背景技术
随着Internet技术的广泛应用和移动计算,普适计算以及 互联网技术的快速发展,现在的分布式系统可能包含了成千上万的结点,并且这些结点可能分布在各个不同的地理位置,拥有不同的行为。这些限制使得分布式系统需要更加灵活的通信模型,以适应这种动态性和扩展性。发布/订阅系统以其松耦合和异步通信的特性逐渐成为了设计分布式系统的一种重要的架构,并且被认为是能解决现今Internet众多挑战的最有前景的网络架构之一。发布/订阅系统包含一组需要进行通信的客户端(Client)和位于客户端之间解率禹其通信的通知服务(Notification Service)。客户端可以分为订阅者(Subscriber)和发布者(Publisher),订阅者向消息服务提交他们的兴趣(Interest),当发布者产生了匹配某兴趣的事件时,订阅者将得到通知。由事件代理(Broker)组成的发布/订阅网络负责完成通知服务,他们收集订阅(Subscription)并负责将事件(Event)路由给相应的订阅者。在这整个过程中,发布者和订阅者之间不需要知道彼此的地址信息,从而提供了通信双方空间上的解耦。目前,在大部分发布/订阅系统中,只要订阅者订阅了兴趣并且始终在线,消息都会确保到达对其感兴趣的订阅者手中。然而,在一些动态的环境中,客户端很可能会动态地加入和退出系统。可能出现的一种情况是,用户所感兴趣的消息产生于用户连接到系统之前。在传统的发布订阅系统中,系统都是假设在信息发布时,所有用户的订阅信息都已存在于网络之中,从而用户无法获取到满足其兴趣的历史的消息。因此,使得消息能持久的存在于系统之中,从而能使消息的发布者和订阅者之间在时间上解耦,是一项富有挑战且意义重大的任务。

发明内容
本发明的目的在于提供一种支持消息持久化的发布订阅方法,以解决现有发布/订阅系统中用户无法获得历史消息的技术问题。为达到上述目的,本发明提供一种支持消息持久化的发布订阅方法,包括以下步骤步骤一发布者产生广告消息,通知整个网络即将发布的消息的主题;并将广告信息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表;步骤二 订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并且,在订阅路由的过程中,每个结点生成基于订阅内容的路
由表;步骤三发布者发布的消息,根据基于订阅内容的路由表,路由到对该消息感兴趣的订阅者,并且,消息在沿着投递路径路由的过程中,缓存于投递路径上的某个代理结点中,并标识该消息为已缓存;步骤四订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,并沿着投递路径查找满足订阅条件的历史消息;步骤五查询到已存储的历史消息,将该历史消息沿着相反路径返回给订阅者。依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,步骤三中将消息缓存于某个代理结点中的操作具体包括查看该消息是否被缓存过,并且查看当前代理结点的存储空间;若该消息没有被存储过,且当前代理点存储空间未满,则将消息复制一个副本缓存于该代理结点中。依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,将消息缓存于某个代理结点中的操作引入冗余机制,具体为当一个消息到达代理时,查看该消息是否被缓存过,并查看当前代理结点的存储空间,若该消息已被存储过,但该代理结点仍有存储空 间,则将该消息复制并存储于该代理的复本队列中。依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,代理结点的存储空间组织为一个先进先出的复本队列。依照本发明较佳实施例所述的支持消息持久化的发布订阅方法,还包括步骤六当投递路径上的存储容量全部用完时,开启清理操作,清理掉路径中相对较老的消息。综合以上,可以看出,本发明的支持消息持久化的发布订阅方法引入了缓存机制,利用消息投递路径中所有代理结点的存储能力,将消息缓存于代理结点之中,在需要时可以快速可靠得获取历史消息。并且,缓存消息时还引入了冗余的机制,有效减少了订阅者恢复历史消息时的平均等待时间。因此,与现有技术相比,本发明有效解决了发布/订阅系统中用户无法获得历史消息的技术问题,并且,具有查询速度快、可靠性高的优点。


图I为本发明支持消息持久化的发布订阅方法的流程原理图;图2为本发明实施例的支持消息持久化的发布订阅方法应用的网络系统结构图。
具体实施例方式下面结合附图和具体实施例,进一步阐述本发明。以下的实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明记载的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。本方明方法实现了在传统发布订阅系统的基础上加入订阅历史消息的功能。发布/订阅系统主要由代理结点组成,代理结点负责事件的匹配和转发。通常,这些代理结点也具有一定的存储能力。当发布者产生的消息沿着投递路径路由到订阅者的过程中,我们将根据某种策略将事件缓存于投递路径上;当新加入系统的订阅者对历史消息感兴趣时,订阅者可以产生针对历史消息的订阅;对历史消息的订阅,将首先被路由到消息源头,并最终遍历相应的投递路径,以恢复所有缓存的历史消息。
请参阅图1,一种支持消息持久化的发布订阅方法,包括以下步骤Sll :发布者产生广告消息,通知整个网络即将发布的消息的主并将广告信息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表。S12:订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并且,在订阅路由的过程中,每个结点生成基于订阅内容的路由表。S13:发布者发布的消息,根据基于订阅内容的路由表,路由到对该消息感兴趣的订阅者,并且,消息在沿着投递路径路由的过程中,缓存于投递路径上的某个代理结点中,并标识该消息为已缓存;将消息缓存于某个代理结点中的操作具体包括查看该消息是否被缓存过,并且查看当前代理结点的存储空间;若该消息没有被存储过,且当前代理点存储空间未满,则将·消息复制一个副本缓存于该代理结点中。本发明将消息缓存于某个代理结点中的操作还引入冗余机制,具体为当一个消息到达代理时,查看该消息是否被缓存过,并查看当前代理结点的存储空间,若该消息已被存储过,但该代理结点仍有存储空间,则将该消息复制并存储于该代理的复本队列中。S14:订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,并沿着投递路径查找满足订阅条件的历史消息;S15:查询到已存储的历史消息,将该历史消息沿着相反路径返回给订阅者。S16:当投递路径上的存储容量全部用完时,开启清理操作,清理掉路径中相对较老的消息。以下结合图2,对本发明的支持消息持久化的发布订阅方法的应用过程进行具体说明。如图2所示,其为本发明实施例的支持消息持久化的发布订阅方法应用的网络系统结构图。应用本发明方法的网络结构由代理节点(Broker )、发布者(PubI i sher )和订阅者(Subscriber)组成,本系统使用了结合广告机制的内容路由协议。首先,发布者会产生广告消息,告诉整个网络它将发布的消息的主题。这些广告信息被转发到整个网络,在每个结点生成一个基于广告主题的路由表。然后,订阅者产生的订阅将根据基于广告主题的路由表形成的路径,最终路由到相关主题的发布者。同时,订阅在路由的过程中,每个结点也会形成基于订阅内容的路由表。最终,发布者发布的消息,将会根据基于订阅内容的路由表,最终路由到对该消息感兴趣的订阅者手中。在消息沿着投递路径路由的过程中,消息将缓存于投递路径上的某个代理结点中,并标识该消息为已缓存。例如,如图I所示,假设发布者产生消息,记作e,e的内容满足订阅者SI的订阅兴趣,从而根据基于订阅内容的路由表形成了一条从Pl到SI的投递路径(如深色结点所示)当消息e路由至某个代理结点时,如果e没有被缓存过,并且当前代理结点存储空间未满,则e将复制一个副本缓存于该代理中。当投递路径上的存储容量全部用完时,系统将开启一次清理操作,清理掉路径中相对较老的消息。例如,当消息e投递至B5时,如果e中的标识显示为未缓存,并且B5的存储空间已满,则B5将产生一个清理请求。清理请求将沿着消息投递相反的方向遍历投递路径,并且根据在清理请求中设定的阈值删除路径中过老的历史消息。
另外,本系统还加入了一种冗余的机制,当某个代理结点存储空间未满时,它的剩余空间将会被组织成一个先进先出的复本队列。当一个消息到达代理时,如果该消息已被存储过,但该代理仍有存储空间时,该消息将会复制并存储于该代理的复本队列中。从而使得消息能在系统中有一定的复本数量,提高历史消息恢复时的平均等待时间。本发明实现了一种支持订阅历史消息的功能。当新的订阅者接入发布订阅系统时,它可以发出针对历史消息的订阅,该订阅首先路由至相应主题的发布者,再沿着投递路径查找并恢复满足订阅条件的历史消息。例如,如图I所示,假设S3为新加入的订阅者,它的订阅兴趣与SI的订阅兴趣相同。S3可以发出一个针对历史消息的订阅,记作S,该订阅首先根据基于广告主题的路由表路由到该主题消息的源头BI。然后再根据s的订阅兴趣和基于订阅内容的路由表,沿着投递路径(如深色结点所示)查询历史消息。在查询的过程中,一旦遇到满足s的已存储的历史消息,就将该历史消息沿着相反路径最终返回给S3。以上所述,仅是本发明的较佳实施实例而已,并非对本发明做任何形式上的限制,任何未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施实例所作的任何简 单修改、等同变化与修饰,均属于本发明技术方案的范围。
权利要求
1.一种支持消息持久化的发布订阅方法,其特征在于,包括以下步骤 步骤一发布者产生广告消息,通知整个网络即将发布的消息的主题并将广告信息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表; 步骤二 订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并且,在订阅路由的过程中,每个结点生成基于订阅内容的路由表; 步骤三发布者发布的消息,根据基于订阅内容的路由表,路由到对该消息感兴趣的订阅者,并且,消息在沿着投递路径路由的过程中,缓存于投递路径上的某个代理结点中,并标识该消息为已缓存; 步骤四订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,并沿着投递路径查找满足订阅条件的历史消息;·· 步骤五查询到已存储的历史消息,将该历史消息沿着相反路径返回给订阅者。
2.如权利要求I所述的支持消息持久化的发布订阅方法,其特征在于,步骤三中将消息缓存于某个代理结点中的操作具体包括查看该消息是否被缓存过,并且查看当前代理结点的存储空间;若该消息没有被存储过,且当前代理点存储空间未满,则将消息复制一个 副本缓存于该代理结点中。
3.如权利要求2所述的支持消息持久化的发布订阅方法,其特征在于,将消息缓存于某个代理结点中的操作引入冗余机制,具体为当一个消息到达代理时,查看该消息是否被缓存过,并查看当前代理结点的存储空间,若该消息已被存储过,但该代理结点仍有存储空间,则将该消息复制并存储于该代理的复本队列中。
4.如权利要求2所述的支持消息持久化的发布订阅方法,其特征在于,所述代理结点的存储空间组织为一个先进先出的复本队列。
5.如权利要求I所述的支持消息持久化的发布订阅方法,其特征在于,还包括 步骤六当投递路径上的存储容量全部用完时,开启清理操作,清理掉路径中相对较老的消息。
全文摘要
一种发布订阅方法,发布者产生广告消息,并将广告消息转发到整个网络,在每个代理结点生成一个基于广告主题的路由表;订阅者产生订阅消息,根据基于广告主题的路由表生成的路径,将订阅消息路由到相关主题的发布者;并在每个结点生成基于订阅内容的路由表;发布者发布的消息,根据基于订阅内容的路由表,路由到订阅者,并且,在路由过程中,将消息缓存于投递路径上的某个代理结点并标识已缓存;订阅者发出历史消息订阅,订阅根据基于广告主题的路由表路由至相应主题的发布者,沿着投递路径查找满足订阅条件的历史消息,将查询到的历史消息沿着相反路径返回给订阅者。本发明解决了发布/订阅系统中用户无法获得历史消息的问题,且查询快速可靠。
文档编号H04L12/701GK102891797SQ201210225998
公开日2013年1月23日 申请日期2012年7月2日 优先权日2012年7月2日
发明者曹健, 谭鸿杰, 钱诗友, 曹艳, 叶莹莹, 于润胜, 于晨, 李明禄 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1