发明名称 发布订阅系统中基于属性流行度的事件匹配方法
摘要 本发明公开了一种发布订阅系统中基于属性流行度的事件匹配方法,目的是解决基于结构化对等网络的发布订阅系统的事件匹配问题。技术方案是先根据应用的历史数据获得发布订阅系统中各个属性的流行度,并把流行度超过k的属性赋给属性集合MPAS;接着根据MPAS确定订阅存储所需要的汇聚节点,进行订阅注册,最后根据MPAS确定事件发布所需要的汇聚节点,进行事件发布。本发明从事件和订阅两个角度考虑匹配问题,充分利用系统中属性流行度的信息,是一种通用性强,带宽开销小、负载均衡的事件匹配方法。
申请公布号 CN101945134A 申请公布日期 2011.01.12
申请号 CN201010287353.6 申请日期 2010.09.20
申请人 中国人民解放军国防科学技术大学 发明人 王戟;张圣栋;沈锐;沈思淇
分类号 H04L29/08(2006.01)I;H04L12/18(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 1.一种发布订阅系统中基于属性流行度的事件匹配方法,其特征在于包括以下步骤:第一步,根据应用的历史数据,获得发布订阅系统中各个属性的流行度,并把流行度超过<i>k</i>的属性赋给属性集合<i>MPAS</i>,<i>k</i>为50%;第二步,订阅者根据<i>MPAS</i>确定订阅存储所需要的汇聚节点,进行订阅注册,方法是:步骤2.1如果订阅的发送集合<img file="2010102873536100001DEST_PATH_IMAGE002.GIF" wi="22" he="22" />中只有一个元素<i>T,</i>执行步骤2.1.1,如果<img file="144477DEST_PATH_IMAGE002.GIF" wi="22" he="22" />中元素个数超过一个,执行步骤2.1.2;<img file="192068DEST_PATH_IMAGE002.GIF" wi="22" he="22" />= {<i>T</i>|<img file="2010102873536100001DEST_PATH_IMAGE004.GIF" wi="25" he="22" /><img file="2010102873536100001DEST_PATH_IMAGE006.GIF" wi="20" he="20" /><i>T</i> &amp; <i>T </i>}<img file="564143DEST_PATH_IMAGE006.GIF" wi="20" he="20" /><img file="697184DEST_PATH_IMAGE004.GIF" wi="25" he="22" /><img file="2010102873536100001DEST_PATH_IMAGE008.GIF" wi="21" he="17" /><i>MPAS</i>},<img file="812908DEST_PATH_IMAGE004.GIF" wi="25" he="22" />为订阅<i>s</i>的属性集合;步骤2.1.1定义名字<i>key</i> = <i>Hash</i>(<i>T</i>),再调用DHTs的查询函数lookup(<i>key</i>),找到负责<i>key</i>的汇聚节点,然后把订阅消息<i>sub</i>直接发送给负责<i>key</i>的汇聚节点;<i>sub</i> 是一个二元组,由订阅<i>s</i>和<i>s</i>的订阅者节点名字<i>sID</i>组成,表示为(<i>s,sID</i>);转步骤2.2;步骤2.1.2,先定义名字集合<i>KeySet</i>,对<img file="652688DEST_PATH_IMAGE002.GIF" wi="22" he="22" />中的每一个元素<i>T</i>计算哈希值,并把哈希值加入到<i>KeySet</i>中,即<i>KeySet</i> = {<i>Hash</i>(<i>T</i>)|<i>T</i>∈<img file="195665DEST_PATH_IMAGE002.GIF" wi="22" he="22" />},然后订阅者采用组播方法将<i>sub</i>发送给负责<i>KeySet</i>中每个名字的汇聚节点;步骤2.2 每一个收到<i>sub</i>的汇聚节点存储<i>sub</i>;第三步,发布者根据<i>MPAS</i>确定事件发布所需要的汇聚节点,进行事件发布,方法是:步骤3.1 若事件的发送集合<img file="2010102873536100001DEST_PATH_IMAGE010.GIF" wi="21" he="22" />中只含有一个元素<i>T</i>,执行步骤3.1.1,若<img file="550423DEST_PATH_IMAGE010.GIF" wi="21" he="22" />中元素超过一个,执行3.1.2;<img file="407520DEST_PATH_IMAGE010.GIF" wi="21" he="22" />= {<i>T</i>|<i>T </i><img file="164124DEST_PATH_IMAGE006.GIF" wi="20" he="20" /><img file="2010102873536100001DEST_PATH_IMAGE012.GIF" wi="25" he="22" />&amp; <i>T </i><img file="2010102873536100001DEST_PATH_IMAGE014.GIF" wi="20" he="20" /><img file="878002DEST_PATH_IMAGE012.GIF" wi="25" he="22" /><img file="2010102873536100001DEST_PATH_IMAGE016.GIF" wi="21" he="17" /><i>MPAS</i>},<img file="985635DEST_PATH_IMAGE012.GIF" wi="25" he="22" />是事件<i>e</i>的属性集合;步骤3.1.1调用底层DHTs的函数lookup(<i>Hash</i> (<i>T</i>)),找到负责<i>Hash</i> (<i>T</i>)的汇聚节点,然后把事件<i>e</i>直接发送给负责<i>Hash</i> (<i>T</i>)的汇聚节点;转步骤3.2;步骤3.1.2定义名字集合<i>KeySet</i> = {<i> Hash</i> (<i>T</i>)|<i>T</i>∈<img file="380844DEST_PATH_IMAGE010.GIF" wi="21" he="22" />},然后采用组播方法将事件<i>e</i>发送给负责<i>KeySet</i>中每个名字的汇聚节点;步骤3.2 每一个收到事件<i>e</i>的汇聚节点把<i>e</i>和存储于本地的订阅消息中的订阅进行匹配操作,产生匹配事件<i>e</i>的订阅者列表<i>SubscriberList</i>,即对于每一个存储的订阅消息<i>sub</i> = (<i>s</i>,<i>sID</i>),如果<i>s</i>匹配<i>e</i>,则把<i>sID</i>加入到<i>SubscriberList</i>;步骤3.3 每一个收到事件<i>e</i>的汇聚节点把事件<i>e</i>转发给订阅者,如果<i>SubscriberList</i>只含有一个元素<i>sID</i>,执行步骤3.3.1,如果<i>SubscriberList</i>含有多个元素,执行步骤3.3.2;步骤3.3.1调用route(<i>e</i>, <i>sID</i>)把事件<i>e</i>转发给订阅者<i>sID</i>,route()为DHTs标准的路由方法;结束;步骤3.3.2采用组播方法把事件<i>e</i>转发给<i>SubscriberList</i>中的每一个订阅者,结束。
地址 410073 湖南省长沙市开福区德雅路109号