[发明专利]用于发布订阅系统的实现历史事件订阅的缓存方法有效
申请号: | 201410075650.2 | 申请日: | 2014-03-04 |
公开(公告)号: | CN103888517B | 公开(公告)日: | 2017-01-18 |
发明(设计)人: | 曹健;于润胜;徐钱元;许文星 | 申请(专利权)人: | 上海交通大学 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 上海汉声知识产权代理有限公司31236 | 代理人: | 胡晶 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 发布 订阅 系统 实现 历史事件 缓存 方法 | ||
技术领域
本发明涉及发布订阅系统技术,具体涉及一种实现历史事件订阅的缓存方法。
背景技术
发布订阅系统包含一个分布式的通信网络,即事件代理网络,和一系列相互通信的端点,即订阅者和发布者。订阅者和发布者之间通过事件代理网络互联,采用一种异步的发布-订阅方式来完成数据交换。订阅者通过声明一个过滤条件表达式提交订阅,当发布者发布了一条符合其订阅条件的事件,该事件即经由代理网络路由到订阅者。在时间上,内容的订阅与发布是异步的,而在空间上,订阅者与发布者也不必关心对方位于何处,因此发布订阅系统实现了通信双方在空间、时间和控制流上完全解耦。
在传统的发布订阅系统中,事件通知能够确保最终到达每个感兴趣的订阅者,但前提是每个订阅者都处于在线状态且各自的订阅被整个系统所知。这一前提条件对于动态网络环境来说则是一大限制,因为客户端往往会频繁地加入或离开网络,新加入的订阅者可能会请求一个在其加入网络之前所发布的事件。在传统的发布订阅系统中,这种请求是得不到响应的,因而如何利用事件缓存机制以使新用户能够获知历史事件就成为了发布订阅系统需要解决的一大问题。
发明内容
为了克服现有技术中存在的订阅者无法订阅历史事件的缺陷,本发明提供一种实现历史事件订阅的缓存方法。本发明具体的技术方案如下:
一种用于发布订阅系统的实现历史事件订阅的缓存方法,包括如下步骤:
路由表扩充步骤:在各代理节点的路由表中增设缓存路由信息,所述缓存路由信息用于提供能够定位到缓存点的路由信息;
事件处理步骤:当某一代理节点发出一事件时,通过哈希函数进行计算,得到一缓存点参考值;为所述事件附加一消息头,所述消息头中记录了缓存点信息以及订阅路径信息;所述缓存点信息中包括所述缓存点参考值;
事件发布步骤:根据所述消息头中记录的订阅路径信息,将所述事件向对应的订阅节点进行发布;对于发布路径中的每个代理节点,根据所述缓存点参考值判断当前代理节点是否作为缓存点并进行缓存,同时,当前代理节点同步更新对应于所述事件的缓存路由信息;
缓存订阅步骤:某一代理节点发出一缓存请求,所述缓存请求中包含订阅条件;将所述订阅条件与当前代理节点的路由表中预存的过滤条件进行匹配,确定缓存事件;所述缓存事件是指,与订阅条件匹配成功的过滤条件对应的事件;
缓存获取步骤:若当前代理节点的路由表中包含所述缓存事件对应的缓存路由信息,则直接根据该缓存路由信息找到所述缓存事件对应的缓存点,
将缓存请求转发到缓存点,获取缓存;若当前代理节点的路由表中不包含所述缓存事件对应的缓存路由信息,则根据所述缓存事件对应的订阅路由信息,将缓存请求发送到下一个代理节点,回转执行缓存获取步骤。
作为优化方案,所述哈希函数如公式(1)所示:
该哈希函数的定义域为事件e的取值范围(a,b),值域为[0,MAX_HOP];其中MAX_HOP是事件分发路径上的代理节点到其根节点的最大距离。
计算得到的缓存点参考值为一整数值。
作为优化方案,根据所述缓存点参考值判断当前代理节点是否作为缓存点并进行缓存具体为:
当前代理节点收到事件后先将所述缓存点参考值t减1,然后根据缓存点参考值进行判断,若t=0,则将当前代理节点做为缓存点。
作为优化方案,所述路由表扩充步骤具体为:
在各代理节点的路由表中增加cache_nexthops字段,使得所述路由表的结构为:
<filter|sub_nexthops|cache_nexthops>
其中,filter是指过滤条件,sub_nexthops记录了与filter匹配成功的事件向订阅节点方向转发的下一跳代理,cache_nexthops记录了与filter匹配成功的缓存请求向缓存点方向转发的下一跳代理。
作为优化方案,所述事件发布步骤中,对于事件在发布过程中的当前代理节点,其缓存路由信息的更新方法具体为:
若当前代理节点在缓存点的后方,则将缓存路由信息中的下一跳设置为前驱的代理节点;
若当前代理节点正好为缓存点,则将缓存路由信息中的下一跳设置为当前代理节点自身;
若当前代理节点在缓存点的前方,则将缓存路由信息中的下一跳设置为后继的代理节点。
作为优化方案,所述缓存获取步骤中,将缓存请求转发到缓存点获取缓存的方法具体为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410075650.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种气密阀
- 下一篇:一种单频多路径效应探测与缓解方法