一種基于內(nèi)容的混合路由方法及其裝置制造方法
【專利摘要】本發(fā)明公開了一種基于內(nèi)容的混合路由方法及其裝置,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),通過訂閱路由表和路標路由表的混合路由將事件P發(fā)送至相匹配的訂閱方,該方法包括:路標路由表建立步驟、訂閱路由表建立步驟和路由表匹配步驟;路標路由表建立步驟為通過在網(wǎng)絡中代理結(jié)點Bi發(fā)布用于建立路標路由表的廣播消息,建立代理結(jié)點Bi之間的路徑的路標路由表;訂閱路由表建立步驟為通過訂閱方發(fā)布訂閱S,代理結(jié)點Bi根據(jù)訂閱S建立訂閱路由表;路由表匹配步驟為依據(jù)訂閱路由表,在發(fā)布方的代理結(jié)點基于內(nèi)容匹配發(fā)布事件P,在中介網(wǎng)絡中將事件P依據(jù)路標路由表逐跳基于路標路由到訂閱方的代理結(jié)點,并在訂閱方的代理結(jié)點依據(jù)訂閱路由表,基于內(nèi)容匹配接收事件P。
【專利說明】一種基于內(nèi)容的混合路由方法及其裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明基于發(fā)布/訂閱中間件系統(tǒng),特別涉及到發(fā)布/訂閱系統(tǒng)中基于內(nèi)容的匹配和路由領(lǐng)域。
【背景技術(shù)】
[0002]發(fā)布/訂閱是一種由消息內(nèi)容驅(qū)動的通信機制。發(fā)布方(Publisher)、訂閱方(Subscriber)和中介網(wǎng)絡是構(gòu)成發(fā)布/訂閱系統(tǒng)的三個部分。訂閱方只需要通過提交訂閱來描述信息消費的興趣,而中介網(wǎng)絡中的代理結(jié)點則對發(fā)布的信息與訂閱之間在頻道、主題乃至內(nèi)容上的匹配關(guān)系進行計算,并根據(jù)匹配結(jié)果進行選擇性路由,一步步將事件信息分發(fā)給感興趣的訂閱方,如此周而復始,實現(xiàn)一個事件驅(qū)動的、松耦合的分布式環(huán)境。由于這些特點,發(fā)布/訂閱已經(jīng)成為構(gòu)建大規(guī)模分布式系統(tǒng)的消息通信范型之一。
[0003]目前,有三種基本的發(fā)布/訂閱系統(tǒng)的實現(xiàn)方式:基于頻道模式、基于主題模式和基于內(nèi)容模式。在基于頻道或主題的發(fā)布/訂閱系統(tǒng)中,訂閱被劃分為相應的頻道或主題,訂閱方按照頻道或主題來進行訂閱。消息在進行分發(fā)時需要按照頻道或主題進行劃分,然后在目標結(jié)點再次進行匹配,以確認消息的內(nèi)容是否滿足訂閱方的興趣。這樣消息在中間結(jié)點匹配和路由的速度固然很快,但卻可能將訂閱方并不感興趣的消息發(fā)送到目標結(jié)點,造成冗余消息的傳輸開銷?;趦?nèi)容的發(fā)布/訂閱系統(tǒng)則更為靈活和高效,訂閱方可以在事件的內(nèi)容上指定約束條件更細粒度地表達他們的興趣,避免了冗余消息的獲取,提高了網(wǎng)絡的利用率。
[0004]在大規(guī)模的發(fā)布/訂閱系統(tǒng)中,由于匹配和路由計算給事件代理帶來了巨大的計算和通信負載,因此匹配和路由方法是發(fā)布/訂閱系統(tǒng)的核心問題。下面將介紹發(fā)布/訂閱系統(tǒng)中基于內(nèi)容的匹配和路由。
[0005]1.基于內(nèi)容的匹配:
[0006]在基于內(nèi)容的發(fā)布/訂閱系統(tǒng)中,訂閱方給出的訂閱被存儲在其經(jīng)過的路徑上,作為基于內(nèi)容尋址的依據(jù)?;趦?nèi)容的匹配方法負責高效地找到與給定事件相匹配的訂閱條件。
[0007]“屬性-值”對(Attribute-Value Pair)模型是最常用的支持內(nèi)容匹配和過濾的模型,包括事件模型和過濾器模型兩個部分。事件由屬性/值對(a,val)的集合構(gòu)成,過濾器則是由邏輯謂詞連接的屬性/值對(a,op,val)集合組成。訂閱是最常見的一種過濾器。屬性-值對(ai,vali)與謂詞約束(aj,op,valj)相匹配,當且僅當屬性名稱ai和aj相同,且op對屬性值vali和val j操作(vali,op, val j)結(jié)果為True。事件e與訂閱s相匹配,當且僅當s中的每一個謂詞在e中都存在與之匹配的屬性-值對。例如,[class, movie],[price,60], [location, Beijing]表示發(fā)布方發(fā)布了一條位于北京且票價為60元的電影事件,而如果[class, eq, move], [price, <, 100], [location, eq, Beijing]是某一用戶發(fā)布的過濾條件,則事件和該過濾條件是相匹配的。
[0008]無論如何對屬性-值對匹配方法進行優(yōu)化,基于內(nèi)容的匹配方法和訂閱數(shù)目以及訂閱中屬性-值對的數(shù)目均有關(guān)。目前發(fā)布/訂閱系統(tǒng)中事件匹配技術(shù)將單條事件匹配時間控制在毫秒級別。然而隨著系統(tǒng)參與者數(shù)量的顯著增加,必然要求系統(tǒng)具有處理海量消息的能力,內(nèi)容發(fā)布/訂閱系統(tǒng)的匹配和路由能力面臨著巨大的挑戰(zhàn)。
[0009]基于內(nèi)容的路由:
[0010]發(fā)布/訂閱系統(tǒng)的路由即在代理網(wǎng)絡中根據(jù)事件的內(nèi)容進行過濾,尋找恰當?shù)氖录鞑ヂ窂?,并將過濾后的事件轉(zhuǎn)發(fā)給感興趣的訂閱方,且滿足開銷、效率可靠及安全的約束。傳統(tǒng)的網(wǎng)絡路由是按目的地址進行尋址,而基于內(nèi)容的發(fā)布/訂閱系統(tǒng)則是以事件的內(nèi)容作為尋址和路由的依據(jù),事件的內(nèi)容中隱含了路由的目的地。
[0011]基于內(nèi)容的路由方法按照路由的準確性可以分為非精確型和精確型兩大類。非精確型路由方法采用洪泛的方式把事件廣播給所有的消費者,該方案雖然能夠避免匹配計算開銷,卻會導致大量的垃圾消息。精確型路由方法只把事件發(fā)給有匹配的訂閱條件的訂閱方,旨在降低各事件代理之間的消息轉(zhuǎn)發(fā)數(shù)量,但同時也增加了維護訂閱路由表的成本和事件匹配開銷等。逆向路徑轉(zhuǎn)發(fā)是一種被廣泛采用的精確型基于內(nèi)容的路由方法。
[0012]逆向路徑轉(zhuǎn)發(fā)的具體過程如圖1所示,該模型首先將所有訂閱(比如圖中的SI和S2)洪泛到整個網(wǎng)絡中,收到訂閱的代理結(jié)點在自己的路由表中記錄{S,U},其中S為訂閱代表的過濾條件,U為訂閱的上一站。當新的事件產(chǎn)生后,每個接收到事件的代理結(jié)點將檢查自己的路由表中是否存在與事件匹配的訂閱S,如果存在,將事件轉(zhuǎn)發(fā)給訂閱S的上一站U。如此迭代,事件將一步步轉(zhuǎn)發(fā)到訂閱方所連接的代理結(jié)點,并由該代理結(jié)點將信息發(fā)送給訂閱方。
[0013]如圖1所示,精確型基于內(nèi)容的路由方法的優(yōu)勢在于能夠最大程度的通過過濾條件去除不相關(guān)的事件消息,減少網(wǎng)絡中傳遞的消息數(shù)量,但是這種方案同時要求每個結(jié)點都記錄所有的訂閱消息,并且需要在每個結(jié)點都執(zhí)行匹配計算。因此方法具有極大的存儲和計算開銷,不適合大規(guī)模的應用系統(tǒng)。
[0014]從前文可以看出,內(nèi)容發(fā)布/訂閱技術(shù)核心的匹配方法和路由方法的開銷都不容忽視。由于發(fā)布/訂閱技術(shù)采用訂閱作為事件的過濾器,因此所有的訂閱都需要保留在對應的結(jié)點中,即使采用廣告方式來減少訂閱的數(shù)目,一旦訂閱數(shù)目巨大,必然導致巨大的路由表項,而基于內(nèi)容的匹配方式,必然導致消息的傳輸時延。因此在OMG的數(shù)據(jù)分發(fā)服務DDS (Data-Distribution Service)中,發(fā)布/訂閱系統(tǒng)仍然執(zhí)行基于渠道的方式,只是在消息到達訂閱方所在SHB (Subscribe Host Broker,訂閱方代理結(jié)點)時,才進行基于內(nèi)容的匹配,從而模擬內(nèi)容發(fā)布/訂閱協(xié)議,但是這種方式會導致大量的垃圾消息。
【發(fā)明內(nèi)容】
[0015]本發(fā)明所要解決的技術(shù)問題在于提供一種內(nèi)容發(fā)布/訂閱系統(tǒng)中的混合路由方法,可以有效避免現(xiàn)有方法中事件必須在每個結(jié)點進行基于內(nèi)容匹配的問題,有效提高了基于內(nèi)容發(fā)布/訂閱系統(tǒng)中事件路由的效率。
[0016]為實現(xiàn)上述目的,本發(fā)明提供了一種基于內(nèi)容的混合路由方法,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),其特征在于,通過訂閱路由表和路標路由表的混合路由將事件P發(fā)送至相匹配的訂閱方,所述方法,包括:
[0017]路標路由表建立步驟:用于通過在網(wǎng)絡中代理結(jié)點Bi發(fā)布用于建立所述路標路由表的廣播消息,建立所述代理結(jié)點Bi之間的路徑的路標路由表;
[0018]訂閱路由表建立步驟:用于通過所述訂閱方發(fā)布所述訂閱S,所述代理結(jié)點Bi根據(jù)所述訂閱S建立訂閱路由表;
[0019]路由表匹配步驟:用于依據(jù)所述訂閱路由表,在所述發(fā)布方的代理結(jié)點PHB基于內(nèi)容匹配發(fā)布所述事件P,在所述中介網(wǎng)絡中將所述事件P依據(jù)所述路標路由表逐跳基于路標路由到所述訂閱方的代理結(jié)點SHB,并在所述訂閱方的代理結(jié)點SHB依據(jù)所述訂閱路由表,基于內(nèi)容匹配接收所述事件P。
[0020]上述基于內(nèi)容的混合路由方法,其特征在于,所述代理結(jié)點Bi的路標路由表的結(jié)構(gòu)為二元組< Bj,NextHopij >的集合,其中Bj e B且i關(guān)j,B為所述代理結(jié)點集合,B= {BI, B2......Bn},NextHopij為從Bi到達Bj路徑中Bi的下一跳。
[0021]上述基于內(nèi)容的混合路由方法,其特征在于,所述發(fā)布方的代理結(jié)點PHB為所述發(fā)布方發(fā)布所述事件P后,所述事件P到達的第一個代理結(jié)點。
[0022]上述基于內(nèi)容的混合路由方法,其特征在于,所述訂閱方的代理結(jié)點SHB為訂閱方發(fā)布所述訂閱S后,所述訂閱S到達的第一個代理結(jié)點。
[0023]上述基于內(nèi)容的混合路由方法,其特征在于,所述廣播消息由二元組< Root,LastHop >構(gòu)成,Root為發(fā)布所述廣播消息的所述代理結(jié)點Bi的ID, LastHop為發(fā)布所述廣播消息的代理結(jié)點Bi到達接收所述廣播消息代理結(jié)點Bj的路徑中Bi的上一跳的ID。
[0024]上述基于內(nèi)容的混合路由方法,其特征在于,所述訂閱路由表建立步驟,還包括:
[0025]訂閱轉(zhuǎn)換步驟:所述訂閱S被轉(zhuǎn)變?yōu)槎M結(jié)構(gòu)< S,SHB⑶ >,其中SHB⑶為所述訂閱方代理結(jié)點的ID。
[0026]上述基于內(nèi)容的混合路由方法,其特征在于,所述路由表匹配步驟,還包括:
[0027]發(fā)布方代理結(jié)點事件匹配步驟:當所述事件P到達所述PHB時,根據(jù)所述訂閱路由表將所述事件P與所述訂閱S進行內(nèi)容匹配,將所述事件P形成事件二元組< P,$Z >,所述$2為所述SHB⑶的集合;
[0028]中介網(wǎng)絡路標路由步驟:當中介網(wǎng)絡所述代理結(jié)點Bi接收到所述事件二元組< P,$Z >,查詢所述路標路由表,根據(jù)查詢結(jié)果,將所述事件二元組< P,$Z >生成新的事件二元組< P,$z* >,并將所述< P,$Z* >發(fā)送到中介網(wǎng)絡所述代理結(jié)點Bi的下一跳,其中所述$Z*為所述$Z的子集合;
[0029]訂閱方代理結(jié)點事件匹配步驟:當所述< P,$2*>到達所述SHB后,基于所述訂閱路由表,進行所述事件P與所述訂閱S基于內(nèi)容的匹配,將事件P發(fā)送給所述訂閱方。
[0030]本發(fā)明還提供一種基于內(nèi)容的混合路由裝置采用所述基于內(nèi)容的混合路由方法,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),其特征在于,通過訂閱路由表和路標路由表的混合路由將事件P發(fā)送至相匹配的訂閱方,所述基于內(nèi)容的混合路由裝置,包括:
[0031]路標路由表建立模塊:用于通過在網(wǎng)絡中代理結(jié)點Bi發(fā)布用于建立所述路標路由表廣播消息,建立所述代理結(jié)點Bi之間的路徑的路標路由表;
[0032]訂閱路由表建立模塊:用于通過所述訂閱方發(fā)布所述訂閱S,所述代理結(jié)點Bi根據(jù)所述訂閱S建立訂閱路由表;
[0033]路由表匹配模塊:用于依據(jù)所述訂閱路由表,在所述發(fā)布方的代理結(jié)點PHB基于內(nèi)容匹配發(fā)布所述事件P,在所述中介網(wǎng)絡中將所述事件P依據(jù)所述路標路由表逐跳基于路標路由到所述訂閱方的代理結(jié)點SHB,并在所述訂閱方的代理結(jié)點SHB依據(jù)所述訂閱路由表,基于內(nèi)容匹配接收所述事件P。
[0034]上述基于內(nèi)容的混合路由裝置,其特征在于,所述代理結(jié)點Bi的路標路由表的結(jié)構(gòu)為二元組< Bj,NextHopij >的集合,其中Bj e B且i關(guān)j,B為所述代理結(jié)點集合,B= {BI, B2......Bn},NextHopij為從Bi到達Bj路徑中Bi的下一跳。
[0035]上述基于內(nèi)容的混合路由裝置,其特征在于,所述發(fā)布方的代理結(jié)點為所述發(fā)布方發(fā)布所述事件P后,所述事件P到達的第一個代理結(jié)點。
[0036]上述基于內(nèi)容的混合路由裝置,其特征在于,所述訂閱方的代理結(jié)點為訂閱方發(fā)布所述訂閱S后,所述訂閱S到達的第一個代理結(jié)點。
[0037]上述基于內(nèi)容的混合路由裝置,其特征在于,所述廣播消息由二元組< Root,LastHop >構(gòu)成,Root為發(fā)布所述廣播消息的所述代理結(jié)點Bi的ID, LastHop為發(fā)布所述廣播消息的代理結(jié)點Bi到達接收所述廣播消息代理結(jié)點Bj的路徑中Bi的上一跳的ID。
[0038]上述基于內(nèi)容的混合路由裝置,其特征在于,所述訂閱路由表建立模塊,還包括:
[0039]訂閱轉(zhuǎn)換模塊:所述訂閱S被轉(zhuǎn)變?yōu)槎M結(jié)構(gòu)< S,SHB (S) >,其中SHB (,S)為所述訂閱方代理結(jié)點的ID。
[0040]上述基于內(nèi)容的混合路由裝置,其特征在于,所述路由表匹配模塊,還包括:
[0041]發(fā)布方代理結(jié)點事件匹配模塊:當所述事件P到達所述PHB時,根據(jù)所述訂閱路由表將所述事件P與所述訂閱S進行內(nèi)容匹配,將所述事件P形成事件二元組< P,$z >,所述$2為所述SHB⑶的集合;
[0042]中介網(wǎng)絡路標路由模塊:當中介網(wǎng)絡所述代理結(jié)點Bi接收到所述事件二元組
<P,$Z >,查詢所述路標路由表,根據(jù)查詢結(jié)果,將所述事件二元組< P,$Z >生成新的事件二元組< P,$z* >,并將所述< P,$Z* >發(fā)送到中介網(wǎng)絡所述代理結(jié)點Bi的下一跳,其中所述$Z*為所述$Z的子集合;
[0043]訂閱方代理結(jié)點事件匹配模塊:當所述<?,$2*>到達所述SHB后,基于所述訂閱路由表,進行所述事件P與所述訂閱S基于內(nèi)容的匹配,將事件P發(fā)送給所述訂閱方。
[0044]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于,本發(fā)明改變了基于內(nèi)容發(fā)布/訂閱事件路由過程中路由表,將匹配由與訂閱數(shù)目相關(guān)變?yōu)榕c代理結(jié)點數(shù)目相關(guān),準確的說,事件只在PHB和SHB與訂閱路由表進行基于內(nèi)容的匹配,在普通結(jié)點只用和路標路由表進行匹配即可。由于一般情況下,訂閱數(shù)目遠遠超過系統(tǒng)中代理結(jié)點的數(shù)目,因此在本發(fā)明下事件的匹配和路由效率得以大大增加。具體而言,本發(fā)明有以下特點:
[0045]系統(tǒng)吞吐量高。系統(tǒng)吞吐量指結(jié)點每秒能夠處理事件的能力。由于本發(fā)明中事件在結(jié)點中匹配時間小,因此系統(tǒng)吞吐率會大大提高。
[0046]事件傳輸時間短。由于本發(fā)明中事件的匹配和路由效率大大提高,因此事件從發(fā)布方傳輸?shù)接嗛喎降氖录蟠鬁p小。
[0047]支持大規(guī)模系統(tǒng)。訂閱數(shù)目越大,路標路由表相對于訂閱路由表的優(yōu)勢就越大,因此本發(fā)明能夠支持更大規(guī)模的系統(tǒng)。
【專利附圖】
【附圖說明】[0048]圖1為現(xiàn)有技術(shù)的基于訂閱的路由表建立不意圖;[0049]圖2為本發(fā)明的路標路由表的建立過程示意圖;
[0050]圖3為本發(fā)明的結(jié)點7路標路由表不意圖;
[0051]圖4為本發(fā)明的基于內(nèi)容的混合路由方法的流程示意圖;
[0052]圖5為本發(fā)明實施例的發(fā)布/訂閱系統(tǒng)結(jié)構(gòu)示意圖;
[0053]圖6為本發(fā)明的基于內(nèi)容的混合路由裝置的結(jié)構(gòu)示意圖。
[0054]其中,附圖標記:
[0055]I路標路由表建立模塊2訂閱路由表建立模塊
[0056]3路標路由表匹配模塊
[0057]21訂閱轉(zhuǎn)換模塊
[0058]31發(fā)布方代理結(jié)點事件匹配模塊 32中介網(wǎng)絡路標路由模塊
[0059]33訂閱方代理結(jié)點事件匹配模塊
[0060]SI~S3、S31~S33、S21:本發(fā)明各實施例的施行步驟
【具體實施方式】
[0061]以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。
[0062]下面結(jié)合附圖和【具體實施方式】,對本發(fā)明做進一步的說明。
[0063]本發(fā)明所要解決的技術(shù)問題是提供本發(fā)明提供了一種快速的基于內(nèi)容的發(fā)布/訂閱路由方法及系統(tǒng),解決了現(xiàn)有技術(shù)中事件必須在路徑中的每個結(jié)點上進行基于內(nèi)容匹配的問題。該發(fā)明以多倫多大學開源的內(nèi)容發(fā)布/訂閱系統(tǒng)PADRES為基礎(chǔ),在原有系統(tǒng)之上進行擴展,使其能夠以更高的效率支持基于內(nèi)容的發(fā)布/訂閱事件路由。本發(fā)明的關(guān)鍵點在于通過路標路由表將中介網(wǎng)絡中事件P與訂閱S的逐跳匹配轉(zhuǎn)化為對路標路由表的查詢。
[0064]首先介紹一下系統(tǒng)中的結(jié)點的術(shù)語名稱。
[0065]發(fā)布方代理結(jié)點PHB(Publisher Host Broker):發(fā)布方所在的代理結(jié)點,即發(fā)布方發(fā)布事件后事件到達的第一個代理結(jié)點。
[0066]訂閱方代理結(jié)點SHB (Subscriber Host Broker):訂閱方所在的代理結(jié)點,即訂閱方發(fā)布訂閱后訂閱到達的第一個代理結(jié)點。
[0067]普通結(jié)點:除PHB和SHB外的結(jié)點稱為普通結(jié)點。
[0068]需要注意的是,這三類結(jié)點是邏輯上的劃分,在真實的系統(tǒng)中,任何一個代理結(jié)點都可以同時兼具三者的角色。比如說同時與訂閱方A和發(fā)布方B相連的代理結(jié)點就即可以是SHB也可以是PHB。
[0069]下面我們將對發(fā)明提出的方法進行介紹。和原有的逆向路徑轉(zhuǎn)發(fā)方法相比,本發(fā)明提出的方法在結(jié)點中存儲的路由表、訂閱結(jié)構(gòu)以及事件結(jié)構(gòu)上有所改變。
[0070]結(jié)點中路由表
[0071]在逆向路徑轉(zhuǎn)發(fā)方法中,訂閱S每轉(zhuǎn)發(fā)到一個代理結(jié)點,就會被存儲以作為事件基于內(nèi)容尋址的依據(jù)。代理結(jié)點中的路由表項為{S,U},其中U代表訂閱的上一站。我們稱這一路由表為訂閱路由表。訂閱路由表的作用在于確定訂閱的上一跳結(jié)點。
[0072]本發(fā)明提出的方法在保留訂閱路由表的基礎(chǔ)上,在每個結(jié)點新增加了路標路由表。當前系統(tǒng)中代理結(jié)點集合B= {BI,B2......Bn},則路標路由表的定義如下:
[0073]路標路由表:結(jié)點Bi中,路標路由表表項為二元組< Bj,NextHopij >的集合,其中Bj e B且i古J7NextHopij為以Bi為根的結(jié)點樹中Bj的父結(jié)點,即從Bi到Bj路徑中Bi的下一跳。
[0074]下面將介紹在系統(tǒng)構(gòu)建路標路由表的方法。每當新的代理結(jié)點加入發(fā)布訂閱系統(tǒng)時,新的代理結(jié)點將廣播一條消息來申明自己的存在。這樣,即形成了一個以新結(jié)點為根的廣播樹。廣播消息由一個二元組組成,即< Root, LastHop >, Root為新的代理結(jié)點的ID,LastHop為廣播消息上一跳的ID。收到消息的結(jié)點將< Root,LastHop >插入路由表中,更新廣播消息中的LastHop,然后反向向Root結(jié)點發(fā)送一條消息。
[0075]如圖2和圖3所不,反映了在系統(tǒng)中加入結(jié)點7后路標路由表的變化。如圖2所示的即為在系統(tǒng)中加入結(jié)點7后其他結(jié)點新增的路標路由表項,如圖3所示的即為結(jié)點7自身的路標路由表項。
[0076]路標路由表是避免事件在路徑中每個結(jié)點逐次進行基于內(nèi)容匹配的關(guān)鍵。
[0077]2.訂閱結(jié)構(gòu)
[0078]如果采用訂閱作為首層過濾器,那么和逆向路徑方法相同,本發(fā)明中的訂閱仍然需要洪范到網(wǎng)絡,并在各結(jié)點的訂閱路由表中記錄。不同之處在于,當訂閱S發(fā)送至其SHB結(jié)點時,會將SHB的ID號加入到訂閱信息中,此時訂閱變?yōu)橐粋€二元組< S,SHB (S) >。也就是說,各結(jié)點訂閱路由表中記錄的訂閱內(nèi)容中包含了其SHB的ID號。
[0079]事件結(jié)構(gòu)
[0080]本發(fā)明中,當PHB收到新的事件P時,P和PHB中訂閱路由表中的訂閱進行匹配,如果訂閱S和事件P匹配,則將SHB⑶加入到集合$Z中。最后,將集合$2加入到事件P的內(nèi)容中,此時事件變?yōu)橐粋€二元組< P,$Z >。
[0081]如圖4所示,本發(fā)明提供的一種基于內(nèi)容的混合路由方法,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),通過訂閱路由表和路標路由表的混合路由將事件P發(fā)送至相匹配的訂閱方,具體步驟包括:
[0082]路標路由表建立步驟S1:用于通過在網(wǎng)絡中代理結(jié)點Bi發(fā)布用于建立所述路標路由表的廣播消息,建立所述代理結(jié)點Bi之間的路徑的路標路由表;
[0083]每當新的代理結(jié)點加入發(fā)布訂閱系統(tǒng)時,新的代理結(jié)點將廣播一條消息來申明自己的存在。這樣,即形成了一個以新結(jié)點為根的廣播樹。廣播消息由一個二元組組成,即
<Root, LastHop >,Root為發(fā)布廣播消息的代理結(jié)點Bi的ID,LastHop為發(fā)布廣播消息的代理結(jié)點Bi到達接收廣播消息代理結(jié)點Bj的路徑中Bi的上一跳的ID。收到消息的結(jié)點Bj將< Root, LastHop >插入路由表中,更新廣播消息中的LastHop,然后反向向Root結(jié)點(Bi結(jié)點)發(fā)送一條消息。
[0084]訂閱路由表建立步驟S2:用于通過訂閱方發(fā)布訂閱S,代理結(jié)點Bi根據(jù)訂閱S建立訂閱路由表;
[0085]如果采用訂閱為首層過濾器,訂閱仍然需要洪泛到網(wǎng)絡中的所有結(jié)點處,并且插入到各結(jié)點的訂閱路由表之中。發(fā)布訂閱系統(tǒng)很重要的特點是松耦合,所以訂閱者不知道獲得的內(nèi)容是誰發(fā)布的,發(fā)布者也不知道信息發(fā)布給了誰,所以需要在中介網(wǎng)絡的入口和出口,即PHB和SHB進行基于內(nèi)容的匹配。[0086]路由表匹配步驟S3:用于依據(jù)訂閱路由表,在發(fā)布方的代理結(jié)點基于內(nèi)容匹配發(fā)布事件P,在中介網(wǎng)絡中將事件P依據(jù)路標路由表逐跳基于路標路由到訂閱方的代理結(jié)點,并在訂閱方的代理結(jié)點依據(jù)訂閱路由表,基于內(nèi)容匹配接收事件P。
[0087]其中,訂閱路由表建立步驟S2,還包括:
[0088]訂閱轉(zhuǎn)換步驟S21:所述訂閱S被轉(zhuǎn)變?yōu)槎M結(jié)構(gòu)< S,SHB (S) >,其中SHB(S)為訂閱方代理結(jié)點的ID。
[0089]與逆向路徑轉(zhuǎn)發(fā)方法不同的是,當訂閱S發(fā)送至其SHB結(jié)點時,如前所述,其結(jié)構(gòu)將變?yōu)槎M< S,SHB (S) >。
[0090]其中,路由表匹配步驟S3,還包括:
[0091]發(fā)布方代理結(jié)點事件匹配步驟S31:當事件P到達PHB時,根據(jù)訂閱路由表將事件P與訂閱S進行內(nèi)容匹配,將事件P形成事件二元組< P,$Z >,$Z為SHB(S)的集合;
[0092]當新事件P到達PHB時,仍要和PHB訂閱路由表中存儲的訂閱進行基于內(nèi)容的匹配。不同的是,如事件結(jié)構(gòu)一節(jié)所述,此時事件變?yōu)橐粋€二元組<p,$z>。如前所述,其中$冗為SHB(S)的集合。
[0093]中介網(wǎng)絡路標路由步驟S32:當中介網(wǎng)絡代理結(jié)點Bi接收到事件二元組< P,$Z>,查詢路標路由表,根據(jù)查詢結(jié)果,將事件二元組< P,$z >生成新的事件二元組< P,$Z*>,并將< P,$z* >發(fā)送到中介網(wǎng)絡代理結(jié)點Bi的下一跳,其中$Z*為$Z的子集合;
[0094]我們采用結(jié)點中的路標路由表將事件從PHB路由到SHB。當結(jié)點B接收到事件<?,$Z >時,將對$Z進行分裂。對$2中的所有的元素SHBi,根據(jù)查詢路標路由表NextHop (B, SHBi)結(jié)果的不同,我們將其劃分到不同的集合中。對于劃分每個集合$Z*,假定Q是事件P在$Z*中的查詢結(jié)果,則P將產(chǎn)生一個新的副本,并將< P,$Z* >發(fā)送至Q。
[0095]例如,在圖2中,結(jié)點3收到事件{P,$Z},其中$Z={5,6,7},則結(jié)點3將分離出事件{P,{5,6}}發(fā)送給結(jié)點4,將事件{P,{7}}發(fā)送給結(jié)點7。
[0096]訂閱方代理結(jié)點事件匹配步驟S33:當< P,$Z* >到達SHB后,基于訂閱路由表,進行事件P與訂閱S基于內(nèi)容的匹配,將事件P發(fā)送給訂閱方。
[0097]事件能夠順利發(fā)往所有匹配訂閱所在的SHB后,只需與SHB中訂閱路由表進行一次基于內(nèi)容的匹配,就能夠確定所匹配訂閱的上一站U,即訂閱的發(fā)布方,從而將事件發(fā)往滿足條件的訂閱方。
[0098]如附圖5所示,為本發(fā)明的較佳實施例,以下結(jié)合圖5具體實施例對本發(fā)明作詳細的說明。
[0099] 圖5展示的是發(fā)布/訂閱系統(tǒng)的結(jié)構(gòu)圖。可以看到,整個中介網(wǎng)絡有7個結(jié)點,其中結(jié)點I和一個發(fā)布方相連接,結(jié)點4、5、6分別和一個訂閱方相連接。
[0100]首先,和結(jié)點4、5、6相連接的訂閱方分別發(fā)布各自的訂閱,在結(jié)點4、5、6,這些訂閱分別記錄下SHB的ID號然后洪泛至網(wǎng)絡中,各個結(jié)點的訂閱路由表會記錄下這些訂閱。
[0101]和結(jié)點I相連接的發(fā)布方發(fā)布一個事件P,在事件路由至結(jié)點I后,與結(jié)點I中的訂閱路由表進行匹配,并記錄下和事件相匹配訂閱內(nèi)容中的SHB的ID號,假設匹配結(jié)束后事件 P 變?yōu)閧P,{4,5,6}}。
[0102]P在結(jié)點I中和路標路由表進行匹配,由于結(jié)點I到結(jié)點4、5、6的路徑中下一結(jié)點均為結(jié)點3,故將{P,{4,5,6}}路由至結(jié)點3。[0103]在結(jié)點3,P和路標路由表進行匹配,由于結(jié)點3到結(jié)點5、6路徑中的下一結(jié)點為結(jié)點5,到結(jié)點4路徑中下一結(jié)點為結(jié)點4,故P產(chǎn)生兩個副本,一個變?yōu)閧P,{5,6}}并路由至結(jié)點5,一個變?yōu)閧P,{4}}并路由至結(jié)點4。
[0104]路由至結(jié)點4的事件{P,{4}},發(fā)現(xiàn)4包含在SHB的ID號的集合中,于是和結(jié)點4中的訂閱路由表進行匹配,找到匹配成功的訂閱項,將P發(fā)送至這些訂閱的上一站U,P成功發(fā)送給和結(jié)點4相連的目標訂閱方。
[0105]路由至結(jié)點5的事件{P,{5,6}},發(fā)現(xiàn)5包含在SHB的ID號的集合中,于是和結(jié)點5中的訂閱路由表進行匹配,找到匹配成功的訂閱項,將P發(fā)送至這些訂閱的上一站U,P成功發(fā)送給和結(jié)點5相連的目標訂閱方。同時,到達結(jié)點6路徑中的下一結(jié)點為結(jié)點6,于是將{P,{6}}路由至結(jié)點6。
[0106]路由至結(jié)點6的事件{P,{6}},發(fā)現(xiàn)6包含在SHB的ID號的集合中,于是和結(jié)點6中的訂閱路由表進行匹配,找到匹配成功的訂閱項,將P發(fā)送至這些訂閱的上一站U,P成功發(fā)送給和結(jié)點6相連的目標訂閱方。
[0107]至此,事件P已經(jīng)發(fā)送給所有的目標訂閱方。
[0108]如圖6所示,本發(fā)明提供的基于內(nèi)容的混合路由裝置,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),該裝置具體包括以下模塊:路標路由表建立模塊1、訂閱路由表建立模塊2和路由表匹配模塊3 ;路標路由表建立模塊I用于通過在網(wǎng)絡中每個代理結(jié)點Bi發(fā)布廣播消息,建立每個代理結(jié)點Bi之間路徑的路標路由表;訂閱路由表建立模塊2用于通過訂閱方發(fā)布訂閱S,每個代理結(jié)點Bi根據(jù)訂閱S建立訂閱路由表;路由表匹配模塊3用于依據(jù)訂閱路由表,在發(fā)布方的代理結(jié)點PHB基于內(nèi)容匹配發(fā)布事件P,在中介網(wǎng)絡中將事件P依據(jù)路標路由表逐跳基于路標路由到訂閱方的代理結(jié)點SHB,并在訂閱方的代理結(jié)點SHB依據(jù)訂閱路由表,基于內(nèi)容匹配接收事件P。
[0109]其中,訂閱路由表建立模塊2,還包括:
[0110]訂閱轉(zhuǎn)換模塊21:訂閱S被轉(zhuǎn)變?yōu)槎M結(jié)構(gòu)< S,SHB(S) >,其中SHB(S)為所述訂閱方代理結(jié)點的ID。
[0111]其中,路由表匹配模塊3,還包括:
[0112]發(fā)布方代理結(jié)點事件匹配模塊31:當事件P到達PHB時,根據(jù)訂閱路由表將事件P與訂閱S進行內(nèi)容匹配,將事件P形成事件二元組< P,$Z > ;
[0113]中介網(wǎng)絡路標路由模塊32:當中介網(wǎng)絡代理結(jié)點Bi接收到事件二元組< P,$Z>,查詢路標路由表,根據(jù)查詢結(jié)果,將事件二元組< P,$z >生成新的事件二元組< P,$Z*>,并將< P,$z* >發(fā)送到中介網(wǎng)絡代理結(jié)點Bi的下一跳;
[0114]訂閱方代理結(jié)點事件匹配模塊33:當< P,$Z* >到達SHB后,基于訂閱路由表,進行事件P與訂閱S基于內(nèi)容的匹配,將事件P發(fā)送給訂閱方。
[0115]當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明做出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權(quán)利要求的保護范圍。
【權(quán)利要求】
1.一種基于內(nèi)容的混合路由方法,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),其特征在于,通過訂閱路由表和路標路由表的混合路由將事件P發(fā)送至相匹配的訂閱方,所述方法,包括: 路標路由表建立步驟:用于通過在網(wǎng)絡中代理結(jié)點Bi發(fā)布用于建立所述路標路由表的廣播消息,建立所述代理結(jié)點Bi之間的路徑的路標路由表; 訂閱路由表建立步驟:用于通過所述訂閱方發(fā)布所述訂閱S,所述代理結(jié)點Bi根據(jù)所述訂閱S建立訂閱路由表; 路由表匹配步驟:用于依據(jù)所述訂閱路由表,在所述發(fā)布方的代理結(jié)點PHB基于內(nèi)容匹配發(fā)布所述事件P,在所述中介網(wǎng)絡中將所述事件P依據(jù)所述路標路由表逐跳基于路標路由到所述訂閱方的代理結(jié)點SHB,并在所述訂閱方的代理結(jié)點SHB依據(jù)所述訂閱路由表,基于內(nèi)容匹配接收所述事件P。
2.根據(jù)權(quán)利要求1所述的基于內(nèi)容的混合路由方法,其特征在于,所述代理結(jié)點Bi的路標路由表的結(jié)構(gòu)為二元組< Bj,NextHopij >的集合,其中Bj e B且i關(guān)j,B為所述代理結(jié)點集合,B= {BI, B2......Bn},NextHopij為從Bi到達Bj路徑中Bi的下一跳。
3.根據(jù)權(quán)利要求1所述的基于內(nèi)容的混合路由方法,其特征在于,所述發(fā)布方的代理結(jié)點PHB為所述發(fā)布方發(fā)布所述事件P后,所述事件P到達的第一個代理結(jié)點。
4.根據(jù)權(quán)利要求1所述的基于內(nèi)容的混合路由方法,其特征在于,所述訂閱方的代理結(jié)點SHB為訂閱方發(fā)布所述訂閱S后,所述訂閱S到達的第一個代理結(jié)點。
5.根據(jù)權(quán)利要求1所述的基于內(nèi)容的混合路由方法,其特征在于,所述廣播消息由二元組< Root,LastHop >構(gòu) 成,Root為發(fā)布所述廣播消息的所述代理結(jié)點Bi的ID,LastHop為發(fā)布所述廣播消息的代理結(jié)點Bi到達接收所述廣播消息代理結(jié)點Bj的路徑中Bi的上一跳的ID。
6.根據(jù)權(quán)利要求4所述的基于內(nèi)容的混合路由方法,其特征在于,所述訂閱路由表建立步驟,還包括: 訂閱轉(zhuǎn)換步驟:所述訂閱S被轉(zhuǎn)變?yōu)槎M結(jié)構(gòu)< S,SHB (S) >,其中SHB(S)為所述訂閱方代理結(jié)點的ID。
7.根據(jù)權(quán)利要求3或4所述的基于內(nèi)容的混合路由方法,其特征在于,所述路由表匹配步驟,還包括: 發(fā)布方代理結(jié)點事件匹配步驟:當所述事件P到達所述PHB時,根據(jù)所述訂閱路由表將所述事件P與所述訂閱S進行內(nèi)容匹配,將所述事件P形成事件二元組< P,$Z >,所述$Z為所述SHB (S)的集合; 中介網(wǎng)絡路標路由步驟:當中介網(wǎng)絡所述代理結(jié)點Bi接收到所述事件二元組< P,$Z>,查詢所述路標路由表,根據(jù)查詢結(jié)果,將所述事件二元組< P,$Z >生成新的事件二元組< P,$Z* >,并將所述< P,$Z* >發(fā)送到中介網(wǎng)絡所述代理結(jié)點Bi的下一跳,其中所述$Z*為所述$Z的子集合; 訂閱方代理結(jié)點事件匹配步驟:當所述<?,$2*>到達所述SHB后,基于所述訂閱路由表,進行所述事件P與所述訂閱S基于內(nèi)容的匹配,將事件P發(fā)送給所述訂閱方。
8.一種基于內(nèi)容的混合路由裝置,采用如權(quán)利要求1-7中任一項所述基于內(nèi)容的混合路由方法,用于包括發(fā)布方、訂閱方及中介網(wǎng)絡的發(fā)布/訂閱系統(tǒng),其特征在于,通過訂閱路由表和路標路由表的混合路由將事件P發(fā)送至相匹配的訂閱方,所述基于內(nèi)容的混合路由裝置,包括: 路標路由表建立模塊:用于通過在網(wǎng)絡中代理結(jié)點Bi發(fā)布用于建立所述路標路由表廣播消息,建立所述代理結(jié)點Bi之間的路徑的路標路由表; 訂閱路由表建立模塊:用于通過所述訂閱方發(fā)布所述訂閱S,所述代理結(jié)點Bi根據(jù)所述訂閱S建立訂閱路由表; 路由表匹配模塊:用于依據(jù)所述訂閱路由表,在所述發(fā)布方的代理結(jié)點PHB基于內(nèi)容匹配發(fā)布所述事件P,在所述中介網(wǎng)絡中將所述事件P依據(jù)所述路標路由表逐跳基于路標路由到所述訂閱方的代理結(jié)點SHB,并在所述訂閱方的代理結(jié)點SHB依據(jù)所述訂閱路由表,基于內(nèi)容匹配接收所述事件P。
9.根據(jù)權(quán)利要求8所述的基于內(nèi)容的混合路由裝置,其特征在于,所述代理結(jié)點Bi的路標路由表的結(jié)構(gòu)為二元組< Bj,NextHopij >的集合,其中Bj e B且i關(guān)j,B為所述代理結(jié)點集合,B= {BI, B2......Bn},NextHopij為從Bi到達Bj路徑中Bi的下一跳。
10.根據(jù)權(quán)利要求8所述的基于內(nèi)容的混合路由裝置,其特征在于,所述發(fā)布方的代理結(jié)點PHB為所述發(fā)布方發(fā)布所述事件P后,所述事件P到達的第一個代理結(jié)點。
11.根據(jù)權(quán)利要求8所述的基于內(nèi)容的混合路由裝置,其特征在于,所述訂閱方的代理結(jié)點SHB為訂閱方發(fā)布所述訂閱S后,所述訂閱S到達的第一個代理結(jié)點。
12.根據(jù)權(quán)利要求8所述的基于內(nèi)容的混合路由裝置,其特征在于,所述廣播消息由二元組< Root,LastHop >構(gòu)成,Root為發(fā)布所述廣播消息的所述代理結(jié)點Bi的ID,LastHop為發(fā)布所述廣播消息的代理結(jié)點Bi到達接收所述廣播消息代理結(jié)點Bj的路徑中Bi的上一跳的ID。
13.根據(jù)權(quán)利要求8所述的基于內(nèi)容的混合路由裝置,其特征在于,所述訂閱路由表建立模塊,還包括: 訂閱轉(zhuǎn)換模塊:所述訂閱S被轉(zhuǎn)變?yōu)槎M結(jié)構(gòu)< S,SHB (S) >,其中SHB(S)為所述訂閱方代理結(jié)點的ID。
14. 根據(jù)權(quán)利要求10或11所述的基于內(nèi)容的混合路由裝置,其特征在于,所述路由表匹配模塊,還包括: 發(fā)布方代理結(jié)點事件匹配模塊:當所述事件P到達所述PHB時,根據(jù)所述訂閱路由表將所述事件P與所述訂閱S進行內(nèi)容匹配,將所述事件P形成事件二元組< P,$Z >,所述$Z為所述SHB (S)的集合; 中介網(wǎng)絡路標路由模塊:當中介網(wǎng)絡所述代理結(jié)點Bi接收到所述事件二元組< P,$Z>,查詢所述路標路由表,根據(jù)查詢結(jié)果,將所述事件二元組< P,$Z >生成新的事件二元組< P,$Z* >,并將所述< P,$Z* >發(fā)送到中介網(wǎng)絡所述代理結(jié)點Bi的下一跳,其中所述$Z*為所述$Z的子集合; 訂閱方代理結(jié)點事件匹配模塊:當所述<?,$2*>到達所述SHB后,基于所述訂閱路由表,進行所述事件P與所述訂閱S基于內(nèi)容的匹配,將事件P發(fā)送給所述訂閱方。
【文檔編號】G06F17/30GK103685013SQ201310618625
【公開日】2014年3月26日 申請日期:2013年11月29日 優(yōu)先權(quán)日:2013年11月29日
【發(fā)明者】王越, 虎嵩林, 陳明文, 陳建, 吳凱鋒, 王志強, 洪建光, 張春光, 裴旭斌, 衡星辰, 裘煒浩, 崔蔚 申請人:中國科學院計算技術(shù)研究所, 國網(wǎng)浙江省電力公司信息通信分公司