一种动态发布订阅方法及装置

文档序号:31152404发布日期:2022-08-17 06:34阅读:68来源:国知局
一种动态发布订阅方法及装置

1.本发明涉及计算机技术领域,更具体的涉及一种动态发布订阅方法及装置。


背景技术:

2.在高空台虚拟样机资源动态交互中,整个虚拟环境的信息量非常大,交互节点间关联关系复杂,随着试验过程的推进,各节点间频繁变更交互(订阅)关系。不仅会影响系统的实时性,而且会制约着整个系统的可扩展性,可能造成系统拥塞和网络瓶颈,形成系统失真进而严重影响系统的实用性。
3.匹配算法可以以一种高效的方法找到所有与给定事件相匹配的订阅,是基于内容的发布/订阅系统所研究的关键问题之一。匹配算法设计的目标主要包含匹配的空间效率、时间效率以及订阅维护的效率等几个方面,在这几个方面中,最重要的应该是匹配算法的时间效率。一个匹配系统的性能高低主要取决于匹配算法的效率,因此如何提升算法的匹配效率成为现今众多研究者急切解决的问题。
4.在现有的事件匹配算法中,h-tree通过利用订阅中索引属性上指定的区域约束的中间值将订阅均匀的映射到不同的桶中来构建一个哈希表,在匹配的过程中只与具有较高匹配可能的订阅进行匹配;rein采用由多个桶链构成的索引结构,桶链的个数为事件中属性个数的两倍,在匹配的过程中使用反向查找策略,通过标记所有与事件不匹配的订阅,从而得到匹配成功的订阅;dmm通过将事件与订阅映射到多维空间来构建搜索树,以此缩短匹配时间;陈继明等人提出了基于内容的快速事件匹配方法(ceem,content-based effective event matching algorithm),该方法采用以谓词表为核心的数据结构,对谓词族进行了划分,对每个谓词族用排序或者散列表的方式进行了索引,不需要构造静态的匹配网络,可以实现动态的更新订购信息,加快了事件匹配的效率;hema引入订阅列表和谓词表,将含有相同属性与相同比较操作的谓词按有序序列存入谓词表的一行,并通过指针将谓词表中属于同一订阅的谓词链接起来,订阅列表不仅存储了所有加入谓词表的订阅编号而且还存储了订阅在谓词表中首个谓词的位置,订阅列表和谓词表的引入,使得匹配过程能够按照一定的谓词顺序进行。
5.上述方法中,rein方法虽然不受订阅选择度的影响,但是当事件中的属性少于订阅中的属性时,算法的效率明显降低;dmm方法中必须将多维空间分割多次,在构建树结构时需要消耗很长时间;ceem方法中对等值谓词和区间谓词未做区分,匹配时会产生大量不必要的遍历,同时还会因匹配桶结构过于庞大而导致谓词组织结构修改异常困难,从而影响了效率。
6.综上所述,现有的事件匹配算法因匹配桶结构过于庞大而导致匹配效率低的问题。


技术实现要素:

7.本发明实施例提供一种动态发布订阅方法及装置,用以解决现有的事件匹配算法
因匹配桶结构过于庞大而导致匹配效率低的问题。
8.本发明实施例提供一种动态发布订阅的方法,包括:
9.当监听到待接收订阅时,获取所述待接收订阅包括的第一条件,将所述第一条件与订阅条件列表中存储的多个第m个订阅对应的第二条件进行匹配;m为大于0的正整数;
10.若所述第一条件与任意一个所述第二条件至少存在一个不同内容,将所述第一条件对应的所述待接收订阅存储至订阅条件列表中,并按照所述订阅条件列表的顺序将多个所述待接收订阅命名为第n个订阅,n为大于m的正整数;
11.订阅条件列表当前对应的偏序状态为已存状态,按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类,根据分类结果更新包括偏序r树和索引结构的偏序关系。
12.优选地,所述第一条件至少包括字符串条件、数值范围条件和整数条件中的任意一个;
13.所述若所述第一条件与任意一个所述第二条件至少存在一个不同内容,具体包括:
14.所述第一条件包括的字符串条件与所述第二条件包括的字符串条件不一致;和/或
15.所述第一条件包括的数值范围条件与所述第二条件包括的数值范围条件不一致;和/或
16.所述第一条件包括的整数条件与所述第二条件包括的整数条件不一致。
17.优选地,所述将所述第一条件与订阅条件列表中存储的多个第二条件进行匹配之前,还包括:
18.若所述订阅条件列表为空,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并将存储至所述订阅条件列表中的多个所述待接收订阅命名为第n个订阅;
19.所述订阅条件列表当前对应的偏序状态为空状态,根据多个待接收订阅包括的第一条件的内容和偏序关系,对多个所述待接收订阅进行分类:将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中;和/或将包括数值范围条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第n个订阅对应的树信息添加到偏序r树的根目录中;和/或将包括整数条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第m个订阅对应的树信息添加到偏序r树的根目录中;
20.将分类结果写入偏序状态,存储至所述订阅条件列表中的多个所述待接收订阅命名为第m个订阅,所述订阅条件列表当前对应的偏序状态更新为已存状态。
21.优选地,所述按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类,具体包括:
22.将第n个订阅包括的第一条件的内容与已存状态对应的偏序关系进行对比:
23.若第n个订阅包括的第一条件,其数值范围条件与偏序r树已经存在的多个第m个订阅存在重叠,将第n个订阅对应的索引信息添加到索引结构中;或若第n个订阅包括的第一条件中,其数值范围条件与偏序r树已经存在的多个第m个订阅未存在重叠,将第n个订阅对应的树信息添加到偏序r树的根目录中;或若第n个订阅包括的第一条件中,其数值范围
条件被偏序r树已经存在的任意一个第m个订阅完全覆盖,将第n个订阅对应的树信息添加到完全覆盖第n个订阅的第m个订阅的目录下;
24.将包括整数条件的第n个订阅对应的索引信息添加到索引结构中;
25.将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中。
26.优选地,所述根据分类结果更新包括偏序r树和索引结构的偏序关系之后,还包括:
27.当收到请求事件时,在包括偏序r树和索引结构的偏序关系中查找所述事件,若所述事件包括的请求条件完全满足,则发布所述事件。
28.本发明实施例还提供一种动态发布订阅的装置,包括:
29.匹配单元,用于当监听到待接收订阅时,获取所述待接收订阅包括的第一条件,将所述第一条件与订阅条件列表中存储的多个第m个订阅对应的第二条件进行匹配;m为大于0的正整数;
30.存储单元,用于若所述第一条件与任意一个所述第二条件至少存在一个不同内容,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并按照所述订阅条件列表的顺序将多个所述待接收订阅命名为第n个订阅,n为大于m的正整数;
31.更新单元,用于订阅条件列表当前对应的偏序状态为已存状态,按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类,根据分类结果更新包括偏序r树和索引结构的偏序关系。
32.优选地,所述第一条件至少包括字符串条件、数值范围条件和整数条件中的任意一个;
33.所述存储单元,具体用于:
34.所述第一条件包括的字符串条件与所述第二条件包括的字符串条件不一致;和/或
35.所述第一条件包括的数值范围条件与所述第二条件包括的数值范围条件不一致;和/或
36.所述第一条件包括的整数条件与所述第二条件包括的整数条件不一致;
37.优选地,所述匹配单元还用于:
38.若所述订阅条件列表为空,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并将存储至所述订阅条件列表中的多个所述待接收订阅命名为第n个订阅;
39.所述订阅条件列表当前对应的偏序状态为空状态,根据多个待接收订阅包括的第一条件的内容和偏序关系,对多个所述待接收订阅进行分类:将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中;和/或将包括数值范围条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第n个订阅对应的树信息添加到偏序r树的根目录中;和/或将包括整数条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第m个订阅对应的树信息添加到偏序r树的根目录中;
40.将分类结果写入偏序状态,存储至所述订阅条件列表中的多个所述待接收订阅命名为第m个订阅,所述订阅条件列表当前对应的偏序状态更新为已存状态。
41.优选地,所述更新单元具体用于:
42.将第n个订阅包括的第一条件的内容与已存状态对应的偏序关系进行对比:
43.若第n个订阅包括的第一条件,其数值范围条件与偏序r树已经存在的多个第m个订阅存在重叠,将第n个订阅对应的索引信息添加到索引结构中;或若第n个订阅包括的第一条件中,其数值范围条件与偏序r树已经存在的多个第m个订阅未存在重叠,将第n个订阅对应的树信息添加到偏序r树的根目录中;或若第n个订阅包括的第一条件中,其数值范围条件被偏序r树已经存在的任意一个第m个订阅完全覆盖,将第n个订阅对应的树信息添加到完全覆盖第n个订阅的第m个订阅的目录下;
44.将包括整数条件的第n个订阅对应的索引信息添加到索引结构中;
45.将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中。
46.优选地,所述更新单元还用于:
47.当收到请求事件时,在包括偏序r树和索引结构的偏序关系中查找所述事件,若所述事件包括的请求条件完全满足,则发布所述事件。
48.本发明实施例一种动态发布订阅的方法及装置,该方法包括:当监听到待接收订阅时,获取所述待接收订阅包括的第一条件,将所述第一条件与订阅条件列表中存储的多个第m个订阅对应的第二条件进行匹配;m为大于0的正整数;若所述第一条件与任意一个所述第二条件至少存在一个不同内容,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并按照所述订阅条件列表的顺序将多个所述待接收订阅命名为第n个订阅,n为大于m的正整数;订阅条件列表当前对应的偏序状态为已存状态,按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类,根据分类结果更新包括偏序r树和索引结构的偏序关系。该方法是基于内容的发布订阅方法,旨在解决虚拟环境信息量庞大、交互节点间关联关系复杂的高空台虚拟样机资源动态交互问题。随着高空台虚拟样机试验过程的推进,各节点间频繁变更交互关系,以往的方法仅通过一种结构存储来存储基于内容的订阅条件具有很高的时间复杂度,特别是内容中的区间值逐渐增多,单一的树结构被要求频繁的更新所造成系统实时性降低、拥塞和网络瓶颈的问题,严重影响系统的实用性。因此,该方法通过复合的存储结构:偏序r树和索引结构,分类存储不同的订阅条件,更容易查找和定位订阅条件,提高了发布端的运行效率。同时,偏序r树按照订阅条件的偏序关系,通过多个r树存储区间结构,解决了存储结构动态更新复杂度高的问题。
附图说明
49.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
50.图1为本发明实施例提供的一种动态发布订阅的方法流程示意图;
51.图2为本发明实施例提供的订阅条件列表基本结构示意图;
52.图3为本发明实施例提供的待接收订阅存储至订阅条件列表结构示意图;
53.图4为本发明实施例提供的构建和更新偏序r树和索引结构流程示意图;
54.图5为本发明实施例提供的偏序r树、索引结构示意图;
55.图6为本发明实施例一提供的初始构建的偏序r树和索引结构示意图;
56.图7为本发明实施例一提供更新的偏序r树和索引结构示意图;
57.图8为本发明实施例提供的一种动态发布订阅的装置结构示意图。
具体实施方式
58.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.图1示例性的示出了本发明实施例提供的一种动态发布订阅的方法流程示意图,如图1所示,该方法主要包括以下步骤:
60.步骤101,当监听到待接收订阅时,获取所述待接收订阅包括的第一条件,将所述第一条件与订阅条件列表中存储的多个第m个订阅对应的第二条件进行匹配;m为大于0的正整数;
61.步骤102,若所述第一条件与任意一个所述第二条件至少存在一个不同内容,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并按照所述订阅条件列表的顺序将多个所述待接收订阅命名为第n个订阅,n为大于m的正整数;
62.步骤103,订阅条件列表当前对应的偏序状态为已存状态,按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类,根据分类结果更新包括偏序r树和索引结构的偏序关系。
63.需要说明的是,本发明实施例提供的发布订阅的方法,其执行主体为事件代理,具体地,订阅端与发布端中间通过事件代理进行条件匹配和通知发布端执行发布任务。
64.在步骤101之前,事件代理监听到新的订阅,即监听到有待接收订阅之前,需要确认订阅条件列表的初始状态。具体地,若订阅条件列表的结构与图2提供的订阅条件列表基本结构一致,则可以确定订阅条件列表为空。需要说明的是,本发明实施例提供的订阅条件列表,其列表容量可以根据订阅数量动态变更。
65.进一步地,当订阅条件列表为空时,若事件代理监听到多个待接收订阅时,由于订阅条件列表为空,则可以根据多个待接收订阅对应的时间戳顺序将多个待接收订阅依次存储至订阅条件列表中,并将存储至订阅条件列表中的多个待接收订阅命名为第n个订阅。
66.在本发明实施例中,由于存储值订阅条件列表中的待接收订阅还需要按照偏序结构进行分类,为了对存储值订阅条件列表中的待接收订阅和已经按照偏序结构进行分类的待接收订阅进行区分,将存储值订阅条件列表中但暂时未按照偏序结构进行分类的待接收订阅依次命名为第n个订阅,将订阅条件列表中已经按照偏序结构进行分类的待接收订阅依次命名为第m个订阅,m为大于零的正整数,n为大于m的正整数。
67.进一步地,当订阅条件列表为空时,其当前对应的偏序状态为空状态,需要根据存储至订阅条件列表的多个待接收订阅包括的第一条件的内容与偏序关系,对多个待接收订阅进行分类。
68.在介绍对多个待接收订阅进行分类之前,先介绍待接收订阅包括的第一条件,在本发明实施例中,第一条件至少包括字符串条件、数值范围条件和整数条件中的任意一个,比如,第一条件可以只包括字符串条件,可以只包括数值范围条件,可以只包括整数条件,可以包括字符串条件和数值范围条件,可以包括字符串条件和整数条件,可以包括数值范围条件和整数条件,也可以包括字符串条件、数值范围条件和整数条件。
69.多个待接收订阅进行分类,具体包括以下几种情况:
70.将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中。
71.将包括数值范围条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第n个订阅对应的树信息添加到偏序r树的根目录中。
72.将包括整数条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第m个订阅对应的树信息添加到偏序r树的根目录中。
73.进一步地,将上述对多个待接收订阅地分类结果写入与订阅条件列表对应的偏序状态中,订阅条件列表当前对应的偏序状态更新为已存状态;再者,将存储至订阅条件列表中的多个待接收订阅命名从第n个订阅更新为第m个订阅。
74.需要说明的是,本发明实施例中还包括有缓冲区容器中(container buffer),具体地,当事件代理陆续监听到多个待接收订阅时,在这个时间段监听到的所有待接收订阅都会保存到缓冲区容器中。由于订阅条件列表初始时为空,缓冲区容器会根据多个待接收订阅的时间戳顺序依次将多个待接收订阅转发到订阅条件列表中。
75.在步骤101中,当事件代理监听到多个待接收订阅时,将上述多个待接收订阅保存至缓冲区容器中,当事件代理确定订阅条件列表不为空时,则需要检查缓冲区容器中下一个即将转发至订阅条件列表的待接收订阅是否存储在订阅条件列表中,若订阅条件列表中存在该待接收订阅时,则订阅条件列表拒绝接收该待接收订阅,同时,缓冲区容器也会将该待接收订阅删除;若订阅条件列表中不存在该待接收订阅时,则缓冲区容器将该待接收订阅发送至订阅条件列表进行转存。
76.如图3所示,当事件代理陆续监听到多个待接收订阅时,在这个时间段监听到的所有待接收订阅都会保存到缓冲区容器中。由于订阅条件列表初始时为空,缓冲区容器会根据多个待接收订阅的时间戳顺序依次将多个待接收订阅转发到订阅条件列表中;而当订阅条件列表不为空时,则需要检查缓冲区容器中下一个转发至订阅条件列表中的待接收订阅是否已经存储至订阅条件列表中,若订阅条件列表中不存在该待接收订阅时,可以将缓冲区容器中的该待接收订阅转存至订阅条件列表,若订阅条件列表中存在该待接收订阅时,订阅条件列表拒绝接收该待接收订阅,同时缓冲区容器也删除该待接收订阅。
77.需要说明的时,本发明实施例中,通过对待接收订阅包括的第一条件与订阅条件列表中的第二条件进行匹配,若第一条件与任意一个第二条件至少存在一个不同内容,则可以确定订阅条件列表中不存在与第一条件对应的待接收订阅。
78.具体地,包括以下几种情况:
79.1)若第一条件包括的字符串条件与第二条件包括的字符串条件不一致时,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅;
80.2)若第一条件包括的数值范围条件与第二条件包括的数值范围条件不一致,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅;
81.3)若第一条件包括的整数条件与第二条件包括的整数条件不一致,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅;
82.4)若第一条件包括的字符串条件与第二条件包括的字符串条件不一致,第一条件包括的数值范围条件与第二条件包括的数值范围条件不一致,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅;
83.5)若第一条件包括的字符串条件与第二条件包括的字符串条件不一致,第一条件包括的整数条件与第二条件包括的整数条件不一致,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅;
84.6)若第一条件包括的数值范围条件与第二条件包括的数值范围条件不一致,第一条件包括的整数条件与第二条件包括的整数条件不一致,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅;
85.7)若第一条件包括的字符串条件与第二条件包括的字符串条件不一致,第一条件包括的数值范围条件与第二条件包括的数值范围条件不一致,第一条件包括的整数条件与第二条件包括的整数条件不一致,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅。
86.需要说明的是,在实际应用中,存储至订阅条件列表中的第m个订阅所包括的第二条件的内容与待接收订阅包括的第一条件的内容一致,在此将第m个订阅包括的条件称为第二条件,将待接收订阅包括的条件称为第一条件,只是为了在介绍待接收订阅与订阅条件列表进行匹配时,能够区分而采用的区别称谓。
87.在步骤102中,当确定第一条件与任意一个第二条件至少存在一个不同内容时,可以确定订阅条件列表中不存在与第一条件对应的待接收订阅,则可以将与第一条件对应的待接收订阅存储至订阅条件列表中。
88.进一步地,与第一条件对应的待接收订阅按照订阅条件列表的顺序存储至订阅条件列表中,并按照订阅条件列表的顺序将与第一条件对应的待接收订阅命名为第n个订阅。需要说明的是,当事件代理监听到多个待接收订阅时,需要对上述多个待接收订阅包括的第一条件分别与订阅条件列表中包括的第二条件进行匹配,若事件代理监听到的多个待接收订阅中有多个第一条件与第二条件匹配不成功,则可以将上述多个待接收订阅依次存储至订阅条件列表中,同时,按照订阅条件列表的顺序将多个第一条件分别对应的待接收订阅命名为第n个订阅。
89.在实际应用中,订阅条件列表的动态更新功能中,构造偏序r树存储偏序结构的订阅条件可以实现存储结构的动态更新,提高订阅的匹配效率,从而实现高空台虚拟样机资源动态交互。
90.如图4所示,在更新偏序r树和索引结构前,需要检查二者的存储状态,即“已存在订阅”和“空状态”两个状态。“空状态”即结构内无内容,表示事件代理的初始状态或订阅失效,因此,需要对订阅条件列表的所有订阅进行分类,按照偏序的类别进行相应的建模。若是“已存状态”,则在偏序r树已存在的订阅的基础上对订阅条件列表更新的订阅进行分类,将非偏序的订阅和等值订阅转发至索引结构,具有偏序的订阅用于更新偏序r树。
91.以下在步骤103中详细介绍当订阅条件列表当前对应的偏序状态为已存状态时,对偏序r树和索引结构进行更新的过程。
92.具体地,当订阅条件列表当前对应的偏序状态为已存状态时,若订阅条件列表中存储有多个第n个订阅,则需要按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类。
93.需要说明的是,由于此时订阅条件列表当前对应的偏序状态未已存状态,即订阅条件列表中包括的多个第n个订阅。因此,可以根据每个第n个订阅包括的第一条件的内容与已存状态对应的偏序关系进行一一对比,具体包括以下几种情况:
94.1)将包括整数条件的第n个订阅所对应的索引信息添加到索引结构中。
95.2)将包括字符串条件的第n个订阅所对应的索引信息添加到索引结构中。
96.3)对包括数值范围条件的第n个订阅与偏序r树进行对比,根据对比结果确定包括数值范围条件的第n个订阅是否需要添加到偏序r树中:
97.3-1)若第n个订阅包括的第一条件,其数值范围条件与偏序r树已经存在的多个第m个订阅存在重叠,将第n个订阅对应的索引信息添加到索引结构中。
98.3-2)第n个订阅包括的第一条件中,其数值范围条件与偏序r树已经存在的多个第m个订阅未存在重叠,将第n个订阅对应的树信息添加到偏序r树的根目录中。
99.3-3)第n个订阅包括的第一条件中,其数值范围条件被偏序r树已经存在的任意一个第m个订阅完全覆盖,将第n个订阅对应的树信息添加到完全覆盖第n个订阅的第m个订阅的目录下。
100.以下结合图5为例,介绍偏序r树和索引结构进行更新的过程,如图5所示,suber1和suber2是订阅条件列表中已存在的多个第m个订阅,suber3至suber6是刚存入订阅条件列表的4个第n个订阅。此时,订阅条件列表对应的偏序状态为已存状态,其中,偏序r树包括两个根节点r1和r2,这两个根节点是suber1和suber2中的偏序条件。当订阅条件列表存储多个第n个订阅之后,可以根据每个第n个订阅包括的第一条件的内容与已存状态对应的偏序关系进行一一对比,根据对比结果,对偏序状态包括的偏序r树和索引结构进行更新。图5中,suber3和suber5中满足偏序的条件根据r1和r2的偏序关系被存入对应的节点中,不满足偏序的条件转发至索引结构中存储。在实际应用中,为保证偏序r树能充分利用偏序关系存储订阅条件,需要在偏序r树的插入和删除操作的基础上进行修改,规定若有更大区域的订阅条件与已存在的偏序条件重叠,将较小的重叠区域删除并转发至索引中存储。
101.需要说明的是,上述提到的第n个订阅对应的索引信息和第n个订阅对应的树信息,其索引信息可以与订阅条件列表中包括的多个第m个订阅的编号相对应,其树信息可以也可以与订阅条件列表中包括的多个第m个订阅的编号相对应;比如,图5中的索引信息分别为v1,v2和v3,这里的v1对应suber1,v2对应suber2,v3对应suber3;图5中的树信息分别为r1,r2,r3和r5,这里的r1对应suber1,r2对应suber2,r3对应suber3,r5对应suber5。
102.在本发明实施例中,对第n个订阅对应的索引信息和树信息的具体形式不做限定,索引信息和树信息只要与订阅条件列表中的每个第m个订阅之间保持唯一的对应关系即可。
103.当完成对偏序r树和索引结构更新之后,可以进行订阅匹配,具体地,当事件代理接收到请求事件时,可以在包括偏序r树和索引结构的偏序关系中查找接收到的事件,即将接收到的事件所包括的数值范围条件与偏序关系中偏序r树进行匹配,然后将接收到的事件所包括的字符串条件与偏序关系中的索引结构进行匹配;最后将前面匹配得到的多个第
m个订阅包括的第二条件取交集,若交集为空,则确定接收到的事件匹配失败;若存在交集,则可以确定接收到的事件满足订阅条件,将接收到的事件发布给产生交集时所对应的第m个订阅。
104.需要说明的是,上述将接收到的事件所包括的数值范围条件与偏序关系中偏序r树进行匹配时,这里只是以数值范围条件为例进行介绍,并不是说只能选择数值范围条件进行匹配。在实际应用中,若接收到的事件所包括的内容为整数条件时,可以将事件包括的整数条件与偏序关系中偏序r树进行匹配;若接收到的事件所包括的内容为整数条件和数值范围条件时,可以将事件包括的整数条件和数值范围条件与偏序关系中偏序r树进行匹配;若接收到的事件所包括的内容为数值范围条件时,可以将事件包括的数值范围条件与偏序关系中偏序r树进行匹配。
105.为了更详细接收本发明实施例提供的发布订阅的方法,以下结合图6和图7来介绍发布订阅的方法。
106.1)事件代理初始时,订阅条件列表存在如表1所示的多个第n个订阅,订阅条件列表当前对应的偏序状态为空状态,即偏序关系包括的偏序r树和索引结构都不存在订阅。3个第n个订阅中,字符串条件c、d和e为等值条件,可以划分为非偏序类,将c、d和e添加到索引结构中,同时,将每个字符串条件对应的第n个订阅对应的索引信息添加到索引结构中,比如,字符串条件c对应的第n个订阅为suber1,suber1对应的索引信息为v1,因此,如图6所示,将v1添加到与c对应的索引结构中。
107.进一步地,3个第n个订阅中,suber3包括的数值范围条件和suber1、suber2包括的数值范围条件均无部分重叠关系,即满足条件{ω|a∩b=ω,ω≠a,ω≠b},所以suber3与suber1、suber2之间不存在ω区域;再者,suber1和suber2也无部分重叠的关系,因为即suber2完全包含suber1,则suber1与suber2之间也不存在ω区域。如图6所示,由于suber1、suber2和suber3对应的树信息分别为r1、r2和r3,因此可以按照r1、r2和r3地偏序关系组织为偏序r树,将r2和r3添加到偏序r树的根目录中,因为r2完全保护r1,所以将r1添加到r2的目录下。
108.当将3个第n个订阅的分类结果写入偏序状态之后,将存储至订阅条件列表中的3个待接收订阅命名为第m个订阅。
109.需要说明的是,条件{ω|a∩b=ω,ω≠a,ω≠b}中,ω表示部分重叠的区域,其中a和b分别表示区间订阅条件的范围,如表1中的suber1,条件1和条件2共同组成一个平面上的矩形,见图5中的r1;表1中的suber3,其区间条件所组成图5中的矩形r3;若a代表r1,b代表r3,则a与b的交集是r3,根据公式描述,不存在区域ω。
110.表1订阅条件列表存储3第n个订阅
[0111][0112][0113]
表2订阅条件列表接收5个第n个订阅
[0114][0115]
2)订阅条件列表收到如表2所示的5第n个订阅,以下介绍偏序r树和索引结构的更新过程:
[0116]
订阅条件列表收到如表2所示的5个第n个订阅时,此时订阅条件列表当前对应的偏序状态为已存状态,将依据偏序r树和索引结构的订阅条件的偏序关系对以上5个第n个订阅进行分类。如图7所示,由于suber4和suber6划分的偏序类r4和r6与树内已存在的订阅重叠,其区域面积大小又不足以修改偏序r树的根节点,所以将r4和r6重新划分为非偏序类并组织为索引结构,如图7中的a和b。由于r5的区域完全被r3覆盖,r7完全覆盖r8,并且r7与已存在的区域未重叠,满足偏序关系,因此,r5,r7和r8是一个偏序类,将其存入树结构中,r3的指针指向r5,r7指向r8,将r7作为一个根节点存入po-r tree中。最后,将所有的等值字符串划分为非偏序类存入索引结构。
[0117]
需要说明的是,在图7中,r4与r1、r2,r6与r3、r5皆存在ω区域。ω区域会导致匹配效率底下,当偏序r树存在ω区域,则必须修改树的结构,以确保r树不存在ω区域。
[0118]
3)条件匹配,事件代理接收到请求事件时,比如接收到的事情为a={a=5,b=15,e=

copy

,f=

require

}。首先,通过偏序r树可快速定位在r3和r5区域。接着,在索引结构里检索等值字符串,由于地址被缓冲区维护,即可快速定位到e和f,通过地址找到磁盘相应的区块,在内容比对后,得到匹配结果:e

v5和f

v5。最后,将{r3,e

v5,f

v5}和{r5,e

v5,f

v5}分别与subber3和subber5求交集,其结果为{subber5}。由于仅满足subber5的发布要求,因此,将接收到的事件发布给该订阅。
[0119]
基于同一发明构思,本发明实施例提供了一种动态发布订阅的装置,由于该装置解决技术问题的原理与一种动态发布订阅的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
[0120]
如图8所示,该装置主要包括匹配单元801,存储单元802和更新单元803。
[0121]
匹配单元801,用于当监听到待接收订阅时,获取所述待接收订阅包括的第一条件,将所述第一条件与订阅条件列表中存储的多个第m个订阅对应的第二条件进行匹配;m为大于0的正整数;
[0122]
存储单元802,用于若所述第一条件与任意一个所述第二条件至少存在一个不同内容,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并按照所述订阅条件列表的顺序将多个所述待接收订阅命名为第n个订阅,n为大于m的正整数;
[0123]
更新单元803,用于订阅条件列表当前对应的偏序状态为已存状态,按照已存状态对应的偏序关系和存储至订阅条件列表中每个第n个订阅包括的第一条件的内容,对每个第n个订阅进行分类,根据分类结果更新包括偏序r树和索引结构的偏序关系。
[0124]
优选地,所述第一条件至少包括字符串条件、数值范围条件和整数条件中的任意一个;
[0125]
所述存储单元802,具体用于:
[0126]
所述第一条件包括的字符串条件与所述第二条件包括的字符串条件不一致;和/或
[0127]
所述第一条件包括的数值范围条件与所述第二条件包括的数值范围条件不一致;和/或
[0128]
所述第一条件包括的整数条件与所述第二条件包括的整数条件不一致。
[0129]
优选地,所述匹配单元801还用于:
[0130]
若所述订阅条件列表为空,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并将存储至所述订阅条件列表中的多个所述待接收订阅命名为第m个订阅;
[0131]
若所述订阅条件列表为空,根据多个所述待接收订阅对应的时间戳顺序将多个所述待接收订阅依次存储至订阅条件列表中,并将存储至所述订阅条件列表中的多个所述待接收订阅命名为第n个订阅;
[0132]
所述订阅条件列表当前对应的偏序状态为空状态,根据多个待接收订阅包括的第一条件的内容和偏序关系,对多个所述待接收订阅进行分类:将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中;和/或将包括数值范围条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第n个订阅对应的树信息添加到偏序r树的根目录中;和/或将包括整数条件且满足{ω|a∩b=ω,ω≠a,ω≠b}的第m个订阅对应的树信息添加到偏序r树的根目录中;
[0133]
将分类结果写入偏序状态,存储至所述订阅条件列表中的多个所述待接收订阅命名为第m个订阅,所述订阅条件列表当前对应的偏序状态更新为已存状态。
[0134]
优选地,所述更新单元803具体用于:
[0135]
将第n个订阅包括的第一条件的内容与已存状态对应的偏序关系进行对比:
[0136]
若第n个订阅包括的第一条件,其数值范围条件与偏序r树已经存在的多个第m个订阅存在重叠,将第n个订阅对应的索引信息添加到索引结构中;或若第n个订阅包括的第一条件中,其数值范围条件与偏序r树已经存在的多个第m个订阅未存在重叠,将第n个订阅对应的树信息添加到偏序r树的根目录中;或若第n个订阅包括的第一条件中,其数值范围条件被偏序r树已经存在的任意一个第m个订阅完全覆盖,将第n个订阅对应的树信息添加到完全覆盖第n个订阅的第m个订阅的目录下;
[0137]
将包括整数条件的第n个订阅对应的索引信息添加到索引结构中;
[0138]
将包括字符串条件的第n个订阅对应的索引信息添加到索引结构中。
[0139]
优选地,所述更新单元803还用于:
[0140]
当收到请求事件时,在包括偏序r树和索引结构的偏序关系中查找所述事件,若所述事件包括的请求条件完全满足,则发布所述事件。
[0141]
应当理解,以上一种动态发布订阅的装置包括的单元仅为根据该设备装置实现的功能进行的逻辑划分,实际应用中,可以进行上述单元的叠加或拆分。并且该实施例提供的一种动态发布订阅的装置所实现的功能与上述实施例提供的一种动态发布订阅的方法一
一对应,对于该装置所实现的更为详细的处理流程,在上述方法实施例一中已做详细描述,此处不再详细描述。
[0142]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0143]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1