主权项 |
一种基于谓词区分和关联的快速订阅与匹配方法,其特征在于步骤如下:步骤1、事件的订购处理:在初始化时由于尚没有订购,谓词集合和订购列表均为空,接口列表也只是对应当前接口;当接收到新的订购后,需要对谓词表、接口列表和订购列表分别进行更新,分为以下4步:1)新的订购到来时,抽取订购的属性,按照偏序的关系插入到先决集合中;2)分解订购条件,根据每一条订购条件的类型分别建立该属性的哈希列表或区间树;3)根据订购条件数目确定订购的属性值,订购的初始计数器值为0;4)将订购映射到每一属性对应的哈希列表或区间树中;步骤2、事件的匹配,步骤如下:1)事件到来时,首先抽取事件的属性,在先决集中查找该属性集的位置,如果该属性集有子结点,匹配策略为:每处理完一个属性的谓词,便对匹配桶中的所有订购执行计数器自增操作,然后检测匹配桶中的订购是否已达到要求,属性值与计数器值相等;如果该属性集没有子结点或者先决集中不存在该属性集,匹配策略为:处理完一个属性的谓词后,该属性集的订购没有子订购,直接对匹配桶的存在的订阅进行下一个属性的谓词的检测,在匹配桶中淘汰不符合条件的订阅,直到事件的所有属性全部检测完毕,最后匹配桶中剩余的订阅就是符合条件的订阅;2)分解事件的谓词,先在哈希列表中找到对应该谓词属性的列表,在该列表中找到该谓词的值的条目,将该条目对应的所有订购加入到匹配桶中;然后在区间森林中找到对应该谓词属性的区间树,在该区间树中定位到该值对应的节点,将该节点所对应的所有订购加入到匹配桶中;3)如果符合发布要求,则向该订购发布该事件;由于匹配桶的集合特性,当试图加入桶中已存在的订购时,会加入失败,因此之前加入的同一条订购会再次执行计数器自增操作;4)当事件的所有谓词处理完成时,对匹配桶的所有订购进行重置计数器操作并将匹配桶清空以备下一次使用。 |