《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于內容的發布訂閱系統的一種快速匹配算法
基于內容的發布訂閱系統的一種快速匹配算法
來源:微型機與應用2012年第2期
陳 娛,劉健波
(四川大學 計算機學院,四川 成都610065)
摘要: 目前基于內容的發布/訂閱系統得到了廣泛的應用,而事件和訂閱的匹配算法是其中的一個關鍵問題。提出了一種高效的匹配算法,首先根據謂詞類型和名稱的不同建立若干訂閱樹,建立一個索引結構管理這些樹。匹配時,根據事件的類型和名稱在對應的樹中進行搜索。實驗證明該算法具有較好的匹配性能。
Abstract:
Key words :

摘  要: 目前基于內容的發布/訂閱系統得到了廣泛的應用,而事件和訂閱的匹配算法是其中的一個關鍵問題。提出了一種高效的匹配算法,首先根據謂詞類型和名稱的不同建立若干訂閱樹,建立一個索引結構管理這些樹。匹配時,根據事件的類型和名稱在對應的樹中進行搜索。實驗證明該算法具有較好的匹配性能。
關鍵詞: 發布/訂閱;匹配算法;多維索引

    發布/訂閱系統是一種用于信息交互的中間件系統,它將信息的發布者與訂閱者聯系在一起。發布者只負責發布信息給中間件,訂閱者也只向中間件訂閱自己感興趣的信息,信息具體的發布和傳送則由發布/訂閱系統負責,這樣大大降低了系統的耦合性,使通信更加靈活,符合分布式系統的需求,所以在分布式系統中得到了廣泛的應用。
    在基于內容的發布/訂閱系統中,信息由事件來表示,訂閱者可以通過訂閱事件來獲取信息。一個事件可以表示為一些屬性的集合,而訂閱則可以表示為一些謂詞的集合。訂閱者可以通過指定其感興趣的謂詞來靈活地訂閱事件。相對于基于主題的發布/訂閱系統,基于內容的發布/訂閱系統中訂閱的表達能力得到了很大的提高,但是同時系統中的訂閱數目也大大增加,匹配的復雜度大大提高,必須有一個高效的算法來實現訂閱和事件的快速匹配[1]。匹配算法的基本思想是盡量優化訂閱結構,減少匹配時訂閱條件中重復部分的判斷,提高匹配效率。
1 相關研究
    目前相關的研究已經提出了很多比較有代表性的算法[2-6]。Aguilera等提出了基于搜索樹的算法[4],這種方法建立一棵搜索樹,每個非葉子節點表示一個對訂閱條件的測試,每條邊代表測試結果,每個葉子節點表示一個訂閱條件。當匹配一個事件時,如果按照樹的某一路徑可以從樹根到達一個葉子節點,說明該葉子節點代表的訂閱與這個事件相匹配。這種方法中相同的訂閱條件只需要測試一次,但是節點間的耦合性較高,相應地,維護樹的代價也比較高。
    計數法的思想是測試所有謂詞,建立一個表保存謂詞和訂閱的映射關系,即謂詞被哪些訂閱滿足。匹配時,遍歷這個表找出滿足一個訂閱的謂詞數目,將之與這個訂閱包含的謂詞數目進行比較,如果相等,則說明事件與訂閱相匹配。計數法雖然避免了一個謂詞被多次測試,但是它總會對訂閱中所有的謂詞進行測試,而實際上當一個謂詞無法匹配時,其他的測試都不需要繼續進行。
2 匹配算法
    本文提出的方法借鑒了基于搜索樹的方法,學習了其中的優點,并針對其中存在的缺點進行了改進。搜索樹的方法將所有謂詞添加到一棵樹中,樹的深度和耦合度比較大,不利于訂閱樹的維護。所以本文方法中修改了構造訂閱樹的方法,按照謂詞類型和名稱的不同創建若干訂閱樹,將不同的謂詞放到不同的樹中,減少了耦合度。為了便于管理這些搜索樹,建立了一個索引結構,根據謂詞類型和名稱的不同可以快速找到對應的訂閱樹。
2.1 訂閱模型和事件模型
    在基于內容的發布/訂閱系統中,為了能讓訂閱者快速、準確地指定所需信息,訂閱者要通過一定的訂閱模型來訂閱信息,發布者也要通過一定的事件模型來發布數據,所以在提出匹配算法之前,首先定義如下的訂閱模型和事件模型:
    (1)事件
    事件包含了一些發布者發布的數據,可以定義為一些屬性的集合。屬性是最小的數據,可以表示為一個數據類型、屬性名稱和屬性值組成的三元組,即 Attribute:=。屬性的數據類型定義有數值類型和字符串型。事件可以表示為{A1,A2,…,An},即Event:=∪Attribute。
    例如事件E1={(int,x,10),(string,s,“teacher”)}包含兩個屬性A1=(int,x,10)和A2=(string,s,“teacher”)。
    (2)訂閱
    一個訂閱表示了一個訂閱者所感興趣的數據,可以定義為一些謂詞的集合。謂詞是對一個屬性的測試結果,可以表示為一個數據類型、屬性名稱、測試操作符和匹配值組成的四元組,即Predicate:=(type,name,operator,value)。謂詞的測試操作符(operator)對應的數值型定義有=、>、<、>=、<=和!=,對應字符串型定義有=、!=和*=(包含)。訂閱可以表示為{P1,P2,…,Pn},即Subscription:=∪Predicate。
    例如訂閱S1={(int,x,>,10),(string,s,!=,“student”)},包含兩個謂詞P1=(int,x,>,10)和P2=(string,s,=,“student”)。
    定義1. 屬性a(typea,namea,valuea)與謂詞p(typep,namep,operatorp,valuep)匹配,則要滿足(typea=typep)∧(namea=namep)∧(operatorp(valuea,valuep)=true)。
    定義2. 事件e與訂閱s匹配,則對于s中的每個謂詞p,e中至少存在一個屬性a與p匹配。
    定義3. 謂詞p1與謂詞p2間存在覆蓋關系,則對任意一個屬性a,如果它和p2匹配,則它也一定和p1匹配。
    定義4. 謂詞p1與謂詞p2沖突,則當p1成立時,p2一定不成立。
2.2 訂閱樹的構造
    在構造訂閱樹之前,增加一個對訂閱集合預處理的步驟。這是因為在一個訂閱中可能存在著沖突和重復的謂詞,在訂閱和匹配開始前就進行處理可以付出最小的代價。進行預處理時要遍歷所有訂閱,對于謂詞存在沖突的訂閱,由于一定不存在事件能與之匹配,所以不需要將之添加到訂閱樹中;對于謂詞間存在覆蓋關系的訂閱,只保留最大的謂詞,這樣可以減少訂閱中謂詞的重復。
    接下來根據上一步經過預處理的訂閱集合來創建若干訂閱樹,將類型和名稱相同的謂詞生成的節點添加到一棵訂閱樹中。訂閱樹中的每個節點存儲了一個謂詞和包含這個謂詞的訂閱的集合。為了便于在訂閱樹中進行匹配,分別以謂詞的類型、名稱和操作符為鍵建立一個多級索引結構來管理所有的訂閱樹,如圖1所示,將指向每棵訂閱樹根節點的指針對應存儲在索引結構中,這樣當需要匹配一個事件的屬性時就能根據屬性的類型和名稱進行快速定位。

    構建訂閱樹時要考慮到謂詞間的覆蓋關系,讓父節點的謂詞覆蓋子節點的謂詞,這樣進行事件匹配時,如果父節點的謂詞與事件的對應屬性不匹配,則屬性與子節點的謂詞也一定不匹配,加快了匹配的速度。
    在訂閱樹中增加節點時,先通過索引結構找到對應的樹,然后在樹中查找這樣一個節點:這個節點覆蓋了新增加的節點,而它的子節點都不覆蓋新節點,然后將新節點插入到這個節點和它的子節點之間,新節點的訂閱集合也要添加相應的訂閱者。
    在訂閱樹中刪除節點時,先通過索引結構找到對應的樹,從根節點遍歷樹,如果找到一個節點被要刪除的節點覆蓋,則將對應的訂閱者從以這個節點為根的樹中的所有節點的訂閱集合中刪除,如果刪除后某個節點的訂閱集合為空,則刪除該節點。
    下面給出了構建訂閱樹的算法偽代碼:
    ADD-SUBSCRIPTION (sub)
      for each predicate Pi in sub
        do find root node of the corresponding tree by the
type and name of Pi
            if the tree doesn’t exist
               create a new tree
            ADD-PREDICATE (rooti,Pi)
    ADD-PREDICATE (node, p)
      if the predicate of node covers p
      for each child of node childi
        do if the predicate of childi covers p
            then ADD-PREDICATE (childi, p)
            else if p covers the predicate of childi
                then insert p between node and childi
            else save p as a child of node
2.3 事件匹配
    由于訂閱樹的構造方法的改變,事件匹配的方法也有所不同,采用了先找出所有不匹配的訂閱,然后得到匹配的訂閱方法。匹配一個事件時,先對所有謂詞進行測試,對事件中的每個屬性,依次查找類型和名稱對應的訂閱樹。如果找到了相應的訂閱樹,則用這個屬性測試訂閱樹中所有的節點。在測試的過程中,如果一個節點測試失敗,則記錄下這個節點的訂閱者和以這個節點為根的子樹中所有節點的訂閱者。測試完成后,在訂閱集合中剔除所有不匹配的訂閱,就能找出所有與當前事件匹配的訂閱。
3 實驗分析
    實驗采用的計算機采用雙核Core2、主頻為1.6 GHz的CPU,2 GB的DDR2內存,Windows XP系統,算法的實現采用Visual Studio 2008平臺,C++語言。編寫了一個訂閱產生器和事件產生器來產生實驗樣本,每個實驗結果為10次運行的平均值。每個訂閱的形式如(numeric1>10,numeric2 !=8,string1 *=“student”),每個事件的形式如(int1=12,int3=200,string2=“teacher”)。
    實驗一 測試訂閱數量對匹配速度的影響。首先向系統中添加訂閱,訂閱數目變化范圍為1 000~10 000個,每個訂閱包含5~10個謂詞;然后隨機生成一個事件,這個事件包含的屬性個數為20,測試匹配這個事件所需的時間。實驗結果如圖2所示。

    實驗二 測試事件屬性個數對匹配速度的影響。向系統中添加5 000個訂閱,每個訂閱包含5~10個謂詞,隨機生成事件,事件的屬性個數變化范圍為5~20個,測試匹配事件所需的時間。實驗結果如圖3所示。


    從上面的實驗結果可以看出,本文提出的算法在匹配效率上相對于計數法和基于匹配樹的算法有了較大的提高。當事件的屬性個數相同而系統訂閱數不斷增加時,和系統中訂閱數目相同而事件包含的屬性個數不斷增長時,這種算法明顯表現出了它的高效性。
    近年來基于內容的發布/訂閱系統逐漸獲得了越來越廣泛的應用。本文針對基于內容的發布/訂閱系統中的事件與訂閱的匹配,提出了一種匹配算法。這種算法利用一個多級索引結構來管理不同類型和名稱謂詞,提高了謂詞的匹配速度,而且充分考慮了謂詞間的覆蓋關系,減少了匹配次數。最后通過實驗證明了這種算法的正確性和高效性。未來可以對算法的覆蓋關系、訂閱樹的結構等進行更一步的改進。
參考文獻
[1] 馬建剛,黃濤.面向大規模分布式計算發布訂閱系統核心技術[J].軟件學報,2006,17(1):134-147.
[2] KALE S,HAZAN E,CAO F,et al.Analysis and algorithms for content-based event matching[C].In proceedings of  ICDCS Workshops,2005:363-369.
[3] FABRET F,LLIRBAT F,PEREIRA J,et al.Efficient  matching for content-based publish/subscribe systems[C].  In Proceedings of the Nineteenth ACM Symposium on Operating Systems Principles,2003,37(5):29-43.
[4] AGUILERA M K,STORM R E,STURMAN D C,et al.  Matching events in a content-based subscription system[C]. In proceedings of the 18th ACM Symposium on Principles of Distributed Computing,1999:53-61.
[5] 齊鳳亮,金蓓弘.發布/訂閱系統中的原子訂閱管理和匹配[J].軟件學報,2009,36(12):111-114.
[6] 薛濤,馮博琴.基于內容的發布訂閱系統中快速匹配算法的研究[J].小型微型計算機系統,2006,27(3):529-535.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          9色精品在线| 亚洲精品乱码| 国产精品久久久久久久久久ktv| 国产尤物精品| 国产美女搞久久| 一区二区三区在线观看欧美| 中日韩视频在线观看| 性欧美大战久久久久久久久| 国产欧美一区二区三区在线老狼| 国产精品一区二区久激情瑜伽| 久久午夜精品| 国产日韩欧美视频在线| 亚洲第一色中文字幕| 亚洲精品免费一二三区| 一区二区三区四区五区在线| 欧美四级在线| 亚洲另类黄色| 欧美不卡在线| 在线日本成人| 国产亚洲欧美日韩日本| 国产精品美女久久久久久久| 欧美va天堂va视频va在线| 欧美www视频在线观看| 国产精品日韩一区二区三区| 国产一区二区视频在线观看| 亚洲专区欧美专区| 看欧美日韩国产| 亚洲女性喷水在线观看一区| 国产精品久久久999| 国产日韩欧美在线播放不卡| 欧美午夜一区| 亚洲激精日韩激精欧美精品| 国产亚洲a∨片在线观看| 在线精品在线| 亚洲国产成人精品久久久国产成人一区| 欧美激情日韩| 亚洲永久免费精品| 欧美高清免费| 国产日韩一区二区三区在线播放| 国产精品综合久久久| 狠狠操狠狠色综合网| 怡红院精品视频在线观看极品| 国产精品一区二区女厕厕| 国产精品免费福利| 在线视频欧美日韩| 亚洲理论电影网| 国产一区二区三区久久精品| 国产欧美精品日韩区二区麻豆天美| 日韩午夜一区| 亚洲精品免费一二三区| 亚洲影院色在线观看免费| 亚洲砖区区免费| 亚洲一区二区免费在线| 黄色亚洲大片免费在线观看| 亚洲国产精品t66y| 国产欧美日韩一区二区三区在线观看| 国产亚洲精品aa午夜观看| 欧美午夜片在线免费观看| 午夜在线观看免费一区| 亚洲一级片在线观看| 美女视频一区免费观看| 在线亚洲+欧美+日本专区| 亚洲人成亚洲人成在线观看| 免费91麻豆精品国产自产在线观看| 欧美日韩免费观看一区=区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 另类综合日韩欧美亚洲| 亚洲欧美国产精品桃花| 欧美日韩国产成人在线91| 韩日午夜在线资源一区二区| 亚洲性色视频| 精品av久久久久电影| 国产人成一区二区三区影院| 黄色一区二区在线| 久久久久成人精品免费播放动漫| 在线一区二区视频| 亚洲黄色一区二区三区| 亚洲日本中文字幕| 欧美日韩美女在线观看| 国产精品专区一| 国产综合久久久久影院| 亚洲第一天堂无码专区| 亚洲免费综合| 欧美成人a∨高清免费观看| 久久精品一本久久99精品| 小黄鸭视频精品导航| 国产精品自在线| 欧美日本亚洲韩国国产| 国产精品一区二区男女羞羞无遮挡| 国产精品www网站| 韩国三级电影久久久久久| 亚洲精品黄网在线观看| 亚洲黄色有码视频| 亚洲网站啪啪| 久热综合在线亚洲精品| 国产精品高潮呻吟久久| 久久久久88色偷偷免费| 午夜精品久久久久久久男人的天堂| 欧美日韩高清区| 国产精品有限公司| 亚洲网站在线观看| 国产精品一区二区你懂得| 国产亚洲aⅴaaaaaa毛片| 欧美电影电视剧在线观看| 国内久久精品| 欧美日韩精品一二三区| 欧美成人一区二区三区在线观看| 欧美高清视频在线播放| 亚洲影院色在线观看免费| 欧美激情一区二区三区不卡| 欧美不卡视频一区| 黄色日韩网站视频| 国产精品久久久久天堂| 国产精品亚洲视频| 亚洲午夜羞羞片| 国内精品久久久久久影视8| 欧美在线观看一二区| 欧美综合国产精品久久丁香| 亚洲国产精品999| 国产精品区一区| 99av国产精品欲麻豆| 亚洲第一视频| 欧美少妇一区二区| 欧美三级日韩三级国产三级| 亚洲小说春色综合另类电影| 欧美理论在线| 国产视频一区在线观看| 欧美国产日韩精品| 亚洲国产精品999| 久久人人精品| 欧美aa国产视频| 亚洲一区二区黄色| 在线精品福利| 久久婷婷成人综合色| 一区二区三区 在线观看视频| 亚洲综合欧美日韩| 国产日韩欧美日韩大片| 久久青青草原一区二区| 欧美 日韩 国产 一区| 亚洲经典三级| 好看的av在线不卡观看| 亚洲精品一区久久久久久| 国产精品尤物福利片在线观看| 亚洲欧洲精品成人久久奇米网| 久久久久一区二区三区| 在线播放视频一区| 一本久久知道综合久久| 久久全球大尺度高清视频| 国产精品毛片一区二区三区| 日韩视频专区| 1769国内精品视频在线播放| 亚洲美女免费视频| 99精品视频一区二区三区| 麻豆精品视频| 欧美日韩在线亚洲一区蜜芽| 欧美激情性爽国产精品17p| 蜜臀a∨国产成人精品| 亚洲国产日韩欧美在线99| 欧美在线视频一区二区| 麻豆精品一区二区av白丝在线| 国产伦精品一区二区三区视频孕妇| 亚洲国产视频直播| 毛片基地黄久久久久久天堂| 亚洲美女精品成人在线视频| 一区二区三区在线视频播放| 国产精品午夜在线观看| 国产精品久久久久久亚洲调教| 亚洲欧美日韩精品久久久| 久久久久成人精品| 亚洲麻豆国产自偷在线| 国产综合视频| 亚洲国产毛片完整版| 国产一区二区黄色| 国产日韩在线一区| 欧美一级淫片aaaaaaa视频| 91久久精品国产91性色tv| 在线观看成人一级片| 欧美视频导航| 国产伦精品一区二区三区高清版| 一本色道久久综合亚洲精品不卡| 一区二区三区视频在线看| 久久一区二区三区国产精品| 国产精品高清网站| 久久精品91久久香蕉加勒比| 免费欧美日韩国产三级电影| 欧美一区二区在线免费播放| 国产精品v欧美精品v日韩精品| 欧美另类高清视频在线| 国内精品久久久久影院薰衣草| 欧美一区二区高清在线观看| 久久都是精品| 亚洲一区中文字幕在线观看| 欧美性大战久久久久久久蜜臀| 在线激情影院一区| 国产午夜久久久久| 国产精品午夜av在线| 亚洲人成啪啪网站| 亚洲精品一区在线观看香蕉| 国产亚洲欧美在线| 欧美高清自拍一区| 久久久久青草大香线综合精品| 在线观看国产一区二区| 欧美一区二区三区视频在线| 欧美多人爱爱视频网站| 亚洲大胆人体视频| 国产一区二区久久精品| 性久久久久久久久| 另类国产ts人妖高潮视频| 亚洲欧洲av一区二区| 欧美日韩精品免费观看视频| 亚洲精品日韩久久| 一区二区三区视频在线看| 亚洲成色精品| 欧美精品在线观看| 国产精品久久久久999| 亚洲一级影院| 快射av在线播放一区| 亚洲国产成人av| 欧美激情精品久久久六区热门| 亚洲网友自拍| 国产精品视频网址| 欧美激情久久久| 亚洲精品在线电影| 欧美高清视频在线观看| 欧美日韩精品在线播放| 国产精品久久久久免费a∨大胸| 欧美在线视频免费播放| 国产精品久久国产精品99gif| 日韩一级大片| 国产日韩在线一区| 亚洲第一二三四五区| 久久久亚洲高清| 一区二区精品在线| 欧美午夜激情视频| 亚洲国产综合91精品麻豆| 亚洲第一成人在线| 欧美色综合天天久久综合精品| 一区二区三区免费网站| 亚洲一二区在线| 亚洲欧洲精品成人久久奇米网| 国产午夜精品视频| 欧美激情精品久久久久久黑人| 久久国产免费| 国产精品久久久久久久久果冻传媒| 性刺激综合网| 久久婷婷国产综合尤物精品| 久久精品道一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲在线观看视频网站| 亚洲高清精品中出| 一区久久精品| 欧美美女bbbb| 亚洲男人的天堂在线| 亚洲电影激情视频网站| 男女激情视频一区| 久久国产天堂福利天堂| 亚洲午夜未删减在线观看| 欧美三级网页| 美女精品一区| 亚洲欧美日韩成人高清在线一区| 国产精品国产三级国产aⅴ入口| 欧美日韩免费高清一区色橹橹| 国产偷国产偷精品高清尤物| 国产精品黄色在线观看| 亚洲视屏在线播放| 国产免费观看久久黄| 国产日韩在线播放| 依依成人综合视频| 亚洲一区二区在| 国产精品每日更新在线播放网址| 91久久线看在观草草青青| 久久综合九色欧美综合狠狠| 国产午夜精品视频免费不卡69堂| 久久夜色精品国产噜噜av| 亚洲男人天堂2024| 伊人成人在线视频| 欧美一区二区性| 亚洲女女做受ⅹxx高潮| 欧美一区二区性| 国产一区二区三区四区hd| 欧美激情第五页| 1024成人网色www| 国内成人自拍视频| 欧美日韩另类在线| 国产精品亚洲欧美| 欧美三区在线视频| 久久精彩免费视频| 亚洲理伦在线| 夜夜嗨av一区二区三区免费区| 在线观看中文字幕亚洲| 欧美一乱一性一交一视频| 亚洲午夜久久久久久久久电影网| 国产精品一区免费观看| 欧美激情第8页| 国产无一区二区| 快播亚洲色图| 韩国一区二区三区在线观看| 精品成人国产在线观看男人呻吟| 亚洲你懂的在线视频| 嫩草伊人久久精品少妇av杨幂| 欧美日韩情趣电影| 欧美aa在线视频| 久久综合成人精品亚洲另类欧美| 欧美日韩在线视频首页| 国产精品日韩高清| 久久影院亚洲| 国产欧美一区二区精品忘忧草| 国产日韩精品久久| 亚洲国产高清一区| 在线观看91精品国产入口| 夜夜嗨av一区二区三区网站四季av| 国产欧美日韩在线观看| 亚洲精品美女久久7777777| 在线亚洲观看| 夜夜夜久久久| 国产欧美精品一区二区三区介绍| 欧美日韩免费一区二区三区| 久久裸体视频| 国产欧美短视频| 日韩午夜免费| 亚洲欧美精品一区| 欧美日韩亚洲一区在线观看| 欧美日韩免费在线观看| 黑人中文字幕一区二区三区| 久久精品一区二区三区四区| 欧美成人情趣视频| 欧美黑人多人双交| 欧美精品一区二区三区高清aⅴ|