專利名稱:用于訂閱匹配的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理網(wǎng)絡(luò)內(nèi)的通信,并且具體地,涉及實現(xiàn)發(fā)布/訂閱通 信范例的裝置、方法和計算機(jī)程序。
背景技術(shù):
在消息網(wǎng)絡(luò)內(nèi),可以通過一個或多個"消息代理"把消息從一個數(shù)據(jù)處 理系統(tǒng)傳送到另一數(shù)據(jù)處理系統(tǒng),該消息代理提供路由,并且在多數(shù)情況下, 提供格式化和其他服務(wù)。盡管可能在分布式代理網(wǎng)絡(luò)內(nèi)的不同點上實現(xiàn)代理 功能,但是通常,代理位于網(wǎng)絡(luò)內(nèi)的通信集線器上。
很多消息代理支持發(fā)布/訂閱通信范例。這包括公布者發(fā)送可以被已經(jīng)登 記了其有興趣接收的通信類型的一組訂戶接收的通信,而通常無須發(fā)布需得 知哪些訂戶感興趣的應(yīng)用程序。發(fā)布/訂閱允許訂戶接收感興趣的領(lǐng)域內(nèi)的最
新信息(例如,股票價格或諸如或新聞動畫或特價之類的事件),而不必?fù)屜?且重復(fù)地從各發(fā)布者處請求該信息。
典型的發(fā)布/訂閱環(huán)境具有多個發(fā)布者應(yīng)用程序,這些發(fā)布者應(yīng)用程序通 過代理把消息發(fā)送到位于網(wǎng)絡(luò)間的遠(yuǎn)程計算機(jī)上的潛在大量的訂戶應(yīng)用程 序。訂戶用代理登記并標(biāo)識他們希望接受的信息的種類,并且該信息被存儲 在代理處。在很多發(fā)布/訂閱實現(xiàn)中,訂戶指定代表他們希望接受的信息的一 個或多個主題名稱。發(fā)布者把主題名稱分配給他們發(fā)送到發(fā)布/訂閱代理的消 息,并且代理使用匹配引擎來比較所接收的消息的主題與已登記訂戶組的所 存儲的訂閱信息。該比較確定應(yīng)該把消息轉(zhuǎn)發(fā)到哪些訂戶。
另 一種已知的發(fā)布/訂閱環(huán)境在與訂戶應(yīng)用程序相同的數(shù)據(jù)處理系統(tǒng)上
實現(xiàn)發(fā)布/訂閱匹配引擎。發(fā)布者把發(fā)布物(publication )發(fā)送到該系統(tǒng),并 且發(fā)布/訂閱匹配引擎確定哪些發(fā)布物是本地訂戶應(yīng)用程序感興趣的。在本發(fā) 明的上下文中,術(shù)語"發(fā)布/訂閱代理"想要包括在發(fā)布者和訂戶之間的中間 網(wǎng)絡(luò)節(jié)點處實現(xiàn)的發(fā)布/訂閱匹配引擎,該術(shù)語還想要包括當(dāng)在訂戶的數(shù)據(jù)處 理系統(tǒng)上被實現(xiàn)時的發(fā)布/訂閱匹配引擎。
盡管訂閱匹配經(jīng)常包含檢查所發(fā)布的消息的報頭內(nèi)的主題域,但是匹配 可以另外地或選擇性地包含檢查其他消息報頭域或檢查消息內(nèi)容并基于附加
信息過濾消息。例如,實現(xiàn)Java,消息服務(wù)UMS)的消息代理通常允許基
于消息性質(zhì)(而不是基于作為消息內(nèi)容或"有效負(fù)載"的應(yīng)用程序數(shù)據(jù))來 過濾。消息代理可以執(zhí)行附加功能,比如格式化或另外在把所接收的消息轉(zhuǎn)
發(fā)給訂戶之前處理該消息。(Java和基于Java的名稱是Sun Microsystem公司
的商標(biāo)。)
支持發(fā)布/訂閱范例并且支持基于消息性質(zhì)或消息內(nèi)容來過濾的消息代 理產(chǎn)品的商業(yè)可用示例是如在IBM公司2006年七月的文件"IBM WebSphere Message Broker Version 6 Release O—Introduction"和IBM 2006年七月的 文件"IBM WebSphere Message Broker Version 6 Release 0—Publish7Subscribe" 中所描述的IBM公司的WebSphere消息代理。(IBM和WebSphere是國際商 業(yè)機(jī)器公司的商標(biāo)。)
該發(fā)布/訂閱范例是把信息散布到多個用戶的有效方式,并且對于那種發(fā) 布者和/或訂戶組可能隨時間變化的環(huán)境和發(fā)布者和/或訂戶的數(shù)量可能很大 的環(huán)境尤其有用。盡管一些訂閱是"非永久的"(即,僅當(dāng)訂閱應(yīng)用程序與代 理連接時才保持激活),但是很多訂閱是"永久的",并且保持激活直到訂閱 應(yīng)用程序明確地退訂(unsubscribe )。當(dāng)"永久的"訂戶不再希望接收發(fā)布物 時,訂戶可以從代理中退訂(或從特定的主題或主題組中退訂)。
通常分層地指定主題,例如,使用字符串格式"根/主題A/主題X",其 中主題A是在根節(jié)點下面的層次的第一級別中的可用主題之一,并且主題X 在主題A下面的層次的第二級別中的可用主題之一,并且"/"字符是層次的 不同級別的主題名稱之間的分隔符。圖l示出簡單的主題樹,其中根節(jié)點下 的樹的第一級別具有兩個主題,主題A和主題B,并且在主題A下的樹的第 二級別具有多個主題,主題X、主題Y和主題Z。訂戶SUBSCRIBER1 (圖 l中的SUB.l)已經(jīng)訂閱了接收主題"根/主題A/主題X"上發(fā)布的消息,并 且他們的訂閱與主題樹的各節(jié)點有關(guān)。依次比較每個所接收的消息內(nèi)的主題 串的元素與在主題樹的各級別處的節(jié)點組,直到標(biāo)識出與所接收的主題串匹 配的樹節(jié)點,或直到確定沒有匹配。當(dāng)標(biāo)識了匹配時,把發(fā)布物轉(zhuǎn)發(fā)給已經(jīng) 登記接收關(guān)于該主題的發(fā)布物的訂戶(經(jīng)過基于消息性質(zhì)或已經(jīng)被指定的在 具體訂閱內(nèi)的消息內(nèi)容檢查任意過濾器后)。 這種分層結(jié)構(gòu)允許發(fā)布者和訂戶在所發(fā)布的消息內(nèi)和在訂閱請求內(nèi)非常 精確地指定主題,并且允許使用迭代地移過主題層次的匹配算法來比較在所 接收的消息內(nèi)的主題串與訂閱的內(nèi)容。
傳統(tǒng)的分層主題名稱和相應(yīng)的匹配算法的問題是發(fā)布者和訂戶以及發(fā)布 /訂閱代理必須都知道主題層次并且必須都使用對于分層主題名稱的一致的 表達(dá)。例如,由于在主題層次中優(yōu)選"漢普郡/天氣,,而不是"天氣/漢普郡,, 不是因為直覺的原因(反之亦然),所以新訂戶必須學(xué)會發(fā)布者所使用的具體 層次。類似地,新發(fā)布者需要與現(xiàn)有訂戶的期望一致,或者新發(fā)布者必須向 所有訂戶通知他們的具體主題層次,以便訂戶能夠相應(yīng)地訂閱。
在過去,對于單個公司內(nèi)的私有網(wǎng)絡(luò)和對于公司間發(fā)布/訂閱解決方案來 說,發(fā)布者和訂戶已經(jīng)接受了這種限制,因為這看似對于發(fā)布者和訂戶的整 合以及對于有效的發(fā)布/訂閱代理操作都是至關(guān)重要的。然而,新發(fā)布者和訂 戶要實現(xiàn)現(xiàn)有分層主題命名協(xié)定的需要可能阻礙新發(fā)布者和/或訂戶加入該 發(fā)布/訂閱網(wǎng)絡(luò)。
通過使用通配符,例如允許訂戶訂閱"天氣/*"(其中是可以取任 意值的通配符)代替不得不分別訂閱"天氣/漢普郡"、"天氣/多塞特,,和"天 氣/薩里"等,實現(xiàn)了一些靈活性,但是,那是探索層次知識的示例,并不能 使用戶避免學(xué)習(xí)和遵照層次的不便。例如,"英國/天氣/*"的訂閱將不匹配關(guān) 于關(guān)于"英國/*/天氣"的發(fā)布物。
Lepori等人的 "Push communication services: a short history, a concrete experience and some critical reflection" , Studies in Communication Sciences 2/1, 2002, 149-164頁,描述了簡化的可替換的途徑,在其中發(fā)布/訂閱網(wǎng)絡(luò)中的 發(fā)布者把他們的發(fā)布物分類,并且訂閱的用戶根據(jù)使用布爾(Boolean)匹配 的簡單的關(guān)鍵詞方案指定他們的興趣。然而,由Lepori等人提出的簡單的關(guān) 鍵詞組對于在很多發(fā)布/訂閱系統(tǒng)中所出現(xiàn)的大量不同的主題來說是不夠精 細(xì)的(granular)??梢灶A(yù)期指定大量關(guān)鍵詞的典型訂戶將接收到過多部分的 所發(fā)布的消息。例如,使用布爾操作"OR"("英國"OR "漢普郡"OR "天 氣")指定一組關(guān)鍵詞的訂戶可以預(yù)期將收到關(guān)于其他國家的天氣信息以及關(guān) 于主題"英國"的所有所發(fā)布的信息和關(guān)于主題"漢普郡,,的所有信息。為 了減少他們接收的發(fā)布物的數(shù)量,訂戶可以使用布爾操作符AND,不過指定 ("英國"AND "天氣"AND "漢普郡")的訂閱將錯過具有主題("英國"、
"天氣,,)的發(fā)布物。即使使用理解力好的關(guān)鍵詞匹配算法,充分廣泛定義了 其訂閱以捕獲所有期望的發(fā)布物的訂戶很有可能還會收到大量不需要的發(fā)布 物。
因此,使用布爾匹配的關(guān)鍵詞方案不是很適合于需要接收所有相關(guān)商業(yè) 重要發(fā)布物的訂戶,也不適合于不希望負(fù)擔(dān)大量不相關(guān)發(fā)布物的訂戶。為了
解決這些問題,Lepori等人的相關(guān)技術(shù)讀者將回到更加精細(xì)和精確(和限制) 的分層主題命名方案。
發(fā)明內(nèi)容
提供了用于在發(fā)布/訂閱通信網(wǎng)絡(luò)中的靈活的主題標(biāo)識的方法、裝置和計 算機(jī)程序。發(fā)布者和訂戶能夠指定他們關(guān)于在訂閱匹配期間將由發(fā)布/訂閱代 理使用的主題分類方案的意圖,并且代理響應(yīng)于發(fā)布者和訂戶之一或兩者所 指定的意圖而調(diào)用各自的訂閱匹配組件。所調(diào)用的匹配組件每個實現(xiàn)與所指 定的主題分類方案一致的訂閱匹配處理。
本發(fā)明的第一方面提供了一種用于從至少一個發(fā)布者處接收發(fā)布物并將 發(fā)布物轉(zhuǎn)發(fā)給已經(jīng)登記了對接收發(fā)布物的興趣的訂戶的發(fā)布/訂閱代理。該發(fā) 布/訂閱代理包括用于比較在所接收的發(fā)布物內(nèi)的主題標(biāo)識符與在被存儲在 所述發(fā)布/訂閱代理中的訂閱內(nèi)的主題標(biāo)識符以確定應(yīng)該把所述發(fā)布物轉(zhuǎn)發(fā) 給哪些訂戶的裝置;其中,所述用于比較的裝置包括一組訂閱匹配組件和用 于選擇所述一組訂閱匹配組件中的至少一個的裝置,其中,所述用于選擇的 裝置響應(yīng)于指定所要求的主題分類方案的訂戶或發(fā)布者中的至少一個。
本發(fā)明的第二方面提供了用于發(fā)布/訂閱數(shù)據(jù)處理系統(tǒng)中的訂閱匹配的 方法,其中,所述訂閱匹配包括比較所接收的發(fā)布物內(nèi)的主題標(biāo)識符與訂戶 的所存儲的訂閱內(nèi)的主題標(biāo)識符,以確定是否應(yīng)該把所接收的發(fā)布物轉(zhuǎn)發(fā)給 訂戶,該方法包括步驟
從訂閱中確定各自的訂戶希望訂閱匹配來實現(xiàn)第 一主題分類方案還是第 二主題分類方案;以及
響應(yīng)于所述確定步驟,調(diào)用訂閱匹配組件來進(jìn)行實現(xiàn)所述第一主題分類 方案和第二主題分類方案中相應(yīng)一個的訂閱匹配處理。
在第一實施例中,發(fā)布者指定的主題分類方案是分層的主題分類方案, 并且第二主題分類方案是非分層的關(guān)鍵詞分類方案。以這種方式,如果發(fā)布
者指定分層的主題串,那么訂戶可以決定是否使用對應(yīng)于該發(fā)布者的主題層 次的主題串或使用作為獨立關(guān)鍵詞的主題串元素來指定他們感興趣的主題。 然后,發(fā)布/訂閱代理依照每個訂戶的決定實現(xiàn)不同的訂閱匹配處理。
在本發(fā)明的一個實施例中,當(dāng)發(fā)布者第一次與發(fā)布/訂閱代理連接時,發(fā) 布者向發(fā)布/訂閱代理通知他們的主題分類方案。然后,代理保留各個發(fā)布者 的方案信息。在另一實施例中,發(fā)布者指定在各個發(fā)布物內(nèi)他們的主題分類 方案,或者發(fā)布者可以指定用于找到他們的方案的信息。在后一示例中,發(fā)
布物可以包括由代理使用以在需要時訪問XML方案信息的統(tǒng)一資源標(biāo)識符 (URI )。
當(dāng)訂戶指示他們的訂閱想要反映發(fā)布者指定的方案時,代理調(diào)用對該方 案特定的訂閱匹配組件。例如,如果訂閱指示想要考慮由發(fā)布者指定的主題 層次,那么代理調(diào)用匹配算法,其比較所接收的發(fā)布物與分層主題樹以標(biāo)識 相關(guān)訂閱——逐級迭代地匹配分層主題串的元素。僅在發(fā)布物和訂閱包括相 同的分層主題串(經(jīng)過通配符和過濾器,如上所述)的條件下,匹配算法才 標(biāo)識匹配。然而,如果訂戶指示想要把各自的訂閱內(nèi)的主題名稱元素解釋為 一組獨立的關(guān)鍵詞,那么代理調(diào)用實現(xiàn)基于關(guān)鍵詞的比較的合適的訂閱匹配 組件。
這給訂戶關(guān)于他們希望接收哪些發(fā)布物的相當(dāng)大的靈活性,包括是否限 于包括關(guān)于明確主題串的發(fā)布物或是否接收關(guān)于訂戶感興趣的指定的主題組 的所有發(fā)布物。代理能夠通過選擇合適的訂閱匹配處理來響應(yīng)訂戶的要求。
在一個實施例中,單個訂戶可以指定不止一個主題串,想要將第一串與 來自實現(xiàn)第一分類方案的第一組發(fā)布者的在代理處接收的發(fā)布物比較,而將 第二串與來自實現(xiàn)第二分類方案的第二組發(fā)布者的發(fā)布物比較。
類似地,發(fā)布者可以指定不止一種格式的信息,用于通過與不同的訂閱 相關(guān)的不同的匹配算法來處理。例如,發(fā)布物可以包括在其中可以指定分層 主題串的主題域,以及在其中可以指定一組一個或多個標(biāo)簽或關(guān)鍵詞的標(biāo)簽 域。這允許單個發(fā)布物包括用于與不同的訂閱方案比較的合適的格式的信息。
加入發(fā)布/訂閱網(wǎng)絡(luò)的新訂戶可以使用一組獨立關(guān)鍵詞(例如,指定布爾 OR操作或使用逗號分隔符的邏輯等效物)初始地訂閱以接收關(guān)于大量感興趣 的籠統(tǒng)主題的發(fā)布物。代理比較每個關(guān)鍵詞與已發(fā)布的消息,并且把與任意 關(guān)鍵詞匹配的信息發(fā)送到訂戶。然后,訂戶可以通過從所接收的組中選擇最
感興趣的發(fā)布物,并且選擇這些感興趣的發(fā)布物的主題串用在所精選的訂閱 或訂閱組中來精選他們的訂閱。例如,所精選的訂閱組可以包括從被訂戶標(biāo) 識為特別有幫助的發(fā)布物中提取的 一組分層的主題串?,F(xiàn)有技術(shù)解決方案中 沒有提供這種訂戶能在不同的主題分類方案間切換的能力。
以類似的方式,依賴于分層主題串來接收發(fā)布物的第 一子集的現(xiàn)有訂戶 可能希望定期檢查發(fā)布/訂閱網(wǎng)絡(luò)以便找到感興趣的其他發(fā)布物。這可以通過 定期把他們的訂閱切換成較少受限的主題分類方案來實現(xiàn)。如果更廣范圍的 訂閱標(biāo)識了附加的感興趣的發(fā)布物,那么可以提取在這些附加發(fā)布物內(nèi)的主 題串并將其用來創(chuàng)建包括分層主題串的新訂閱。
上述示例示出本發(fā)明提供了相當(dāng)大的靈活性一一在可以被滿足的主題分 類方案方面,以及在可以如何表達(dá)和解釋發(fā)布者和訂戶的意圖方面。
本發(fā)明的另 一 方面提供了 一種在發(fā)布/訂閱通信網(wǎng)絡(luò)中使用的數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括
用于從一個或多個發(fā)布者處接收發(fā)布物的裝置;
用于把發(fā)布物發(fā)送到一個或多個訂戶的裝置;以及
發(fā)布/訂閱代理,用于比較在所接收的發(fā)布物內(nèi)的主題標(biāo)識符與在被存儲 在發(fā)布/訂閱代理中的訂閱內(nèi)的主題標(biāo)識符,以確定應(yīng)該把哪些發(fā)布物發(fā)送給 哪些訂戶;
其中,所述發(fā)布/訂閱代理包括至少兩個訂閱匹配組件和用于從訂閱中確 定各個訂戶想要代理的訂閱匹配來實現(xiàn)第一發(fā)布者指定的主題分類方案還是 第二主題分類方案;以及
其中,所述發(fā)布/訂閱代理響應(yīng)于所述確定步驟來調(diào)用訂閱匹配組件,以 進(jìn)行實現(xiàn)第一主題分類方案和第二主題分類方案中相應(yīng)一個的訂閱匹配處 理。
本發(fā)明的另 一方面提供了 一種在發(fā)布/訂閱通信網(wǎng)絡(luò)中使用的數(shù)據(jù)處理 系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)處理單元;數(shù)據(jù)存儲單元;網(wǎng)絡(luò)通信接口;以及 發(fā)布/訂閱代理,用于從至少一個發(fā)布者處接收發(fā)布物并將發(fā)布物轉(zhuǎn)發(fā)給已經(jīng) 登記了對接收發(fā)布物的興趣的訂戶,其中,所述發(fā)布/訂閱代理包括用于比 較在所接收的發(fā)布物內(nèi)的主題標(biāo)識符與在被存儲在所述發(fā)布/訂閱代理中的 訂閱內(nèi)的主題標(biāo)識符以確定應(yīng)該把所述發(fā)布物轉(zhuǎn)發(fā)給哪些訂戶的裝置;其中, 所述用于比較的裝置包括一組訂閱匹配組件和用于選擇所述一組訂閱匹配組件中的至少一個的裝置,其中,所述用于選擇的裝置響應(yīng)于指定所要求的主 題分類方案的訂戶或發(fā)布者中的至少一個。
可以以計算機(jī)程序代碼實現(xiàn)本發(fā)明的實施例,并且可以使其作為程序產(chǎn) 品可用,該程序產(chǎn)品包括被記錄在記錄介質(zhì)上用于控制在其上執(zhí)行該程序代 碼的數(shù)據(jù)處理裝置的操作的程序代碼。
下面,以示例的方式,參考附圖更詳細(xì)地描述本發(fā)明的實施例,在附圖
中
圖1是諸如在本技術(shù)領(lǐng)域中已知的、簡單主題層次的示意表示; 圖2是諸如在本技術(shù)領(lǐng)域中已知的、在其中可以實現(xiàn)本發(fā)明的發(fā)布/訂閱 網(wǎng)絡(luò)的示意表示;
圖3是根據(jù)本發(fā)明的實施例的示例消息結(jié)構(gòu)的示意表示;
圖4是根據(jù)本發(fā)明的實施例的發(fā)布/訂閱代理的組件的示意表示;以及
圖5是表示根據(jù)本發(fā)明的實施例的訂閱匹配方法的示意流程圖。
具體實施例方式
下面更詳細(xì)地描述本發(fā)明的多個實施例,以進(jìn)一步理解本發(fā)明和其優(yōu)勢 以及可能的實現(xiàn)。本發(fā)明不限于這些圖示的實施例。所描述的實施例包括用 于在發(fā)布/訂閱通信環(huán)境下的訂閱匹配的方法、裝置和計算機(jī)程序。激活和/ 或停用(deactivation)事件與訂閱關(guān)聯(lián),并被用于控制何時激活訂閱。避免 傳統(tǒng)的訂閱匹配用于不活動的訂閱。
圖2示出在其中可以實現(xiàn)本發(fā)明的簡單的發(fā)布/訂閱消息網(wǎng)絡(luò)。這種網(wǎng)絡(luò) 在本技術(shù)領(lǐng)域中是已知的。運行在各自的數(shù)據(jù)處理系統(tǒng)30、 40上的一組發(fā)布 者10、 20可以能夠通過發(fā)布者把消息發(fā)送到中間發(fā)布/訂閱消息代理50來發(fā) 布可以^皮多個訂戶90、 100、 110接收的消息。發(fā)布者和訂戶不需要在他們之 間直接連接并且不需要彼此的地址信息。而是,發(fā)布者把消息發(fā)送到代理50, 該消息包括諸如他們所發(fā)布的消息內(nèi)的消息主題之類的信息。在該示例中, 發(fā)布者10、 20是依賴下面的消息基礎(chǔ)結(jié)構(gòu)產(chǎn)品150、 160的消息傳送功能的 應(yīng)用程序,其中產(chǎn)品150、 160保存網(wǎng)絡(luò)地址和用于代理50的其他通信信息。
在該示例中,在與發(fā)布者系統(tǒng)30、 40分離并且與訂戶的系統(tǒng)120、 130、 140分離的數(shù)據(jù)處理系統(tǒng)60上實現(xiàn)消息代理。該消息代理包括訂閱匹配引擎 70和相關(guān)聯(lián)的所存儲的訂閱列表80。訂戶向代理50登記并且比如通過指定 一個具體的消息主題或多個主題,來指示他們對具體信息的興趣。把訂戶的
要求存儲在代理處。在一個實施例中,代理還可以存儲用于各個訂戶系統(tǒng)的 網(wǎng)絡(luò)地址和協(xié)議,并且代理可以發(fā)起連接;但是,在優(yōu)選實施例中,代理僅 存儲了訂戶系統(tǒng)和他們的訂閱的名稱,并且把網(wǎng)絡(luò)和通信信息保存在訂戶的 系統(tǒng)處,并且在訂戶發(fā)起與代理的連接時使用該信息。
代理50中的訂閱匹配引擎70依次比較所接收的發(fā)布物與所存儲的訂閱, 以確定哪些所接收的發(fā)布物與哪些訂戶的要求匹配,并且代理把發(fā)布物轉(zhuǎn)發(fā) 給感興趣的訂戶。雖然圖1中僅示出了很少的發(fā)布者和訂戶,但是網(wǎng)絡(luò)內(nèi)可 能有很多發(fā)布者和很多訂戶,并且發(fā)布/訂閱代理可能是分布式代理網(wǎng)絡(luò)的一 部分。
出于成本原因并且為了促進(jìn)正在進(jìn)行的開發(fā),普遍以計算機(jī)程序代碼實 現(xiàn)發(fā)布/訂閱匹配引擎。通常,可以以計算機(jī)程序代碼實現(xiàn)包括所描述的發(fā)布 /訂閱代理、發(fā)布者應(yīng)用程序和訂戶應(yīng)用程序的本發(fā)明的各種元素??梢砸灾T 如C++、 JavaTM或SmallTalk之類的面向?qū)ο蟮木幊陶Z言或以諸如C編程語言 的過程編程語言來寫出該代碼??梢栽谕ㄓ糜嬎銠C(jī)上或在專門的數(shù)據(jù)處理裝 置上執(zhí)行這些程序代碼組件。如下面所詳細(xì)確認(rèn)的,可以全部在單個數(shù)據(jù)處 理設(shè)備上執(zhí)行實現(xiàn)一些特性和本發(fā)明的方面的程序代碼,或可以將其分布在 諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、或因特網(wǎng)之類的數(shù)據(jù)處理網(wǎng)絡(luò)內(nèi)的多 個數(shù)據(jù)處理系統(tǒng)之間。在這種網(wǎng)絡(luò)內(nèi)的不同系統(tǒng)和設(shè)備間的連接可以是有線 的或者無線的,并且不限于任何具體通信協(xié)議或數(shù)據(jù)格式,并且這種網(wǎng)絡(luò)中 的數(shù)據(jù)處理系統(tǒng)可以是異構(gòu)的系統(tǒng)。
在很多情況下,將在高容量、高性能、與網(wǎng)絡(luò)連接的數(shù)據(jù)處理系統(tǒng)上實 現(xiàn)發(fā)布/訂閱代理-因為這種系統(tǒng)可以維持用于大量發(fā)布者和訂戶的高性能發(fā) 布物的發(fā)布量。發(fā)布/訂閱代理可以是邊緣服務(wù)器的組件(即,代理可以是一 組網(wǎng)絡(luò)服務(wù)器或應(yīng)用程序服務(wù)器組件之一)或網(wǎng)關(guān)設(shè)備。然而,近些年來已 經(jīng)開發(fā)出具有小代碼印跡的"微代理"解決方案,并且已經(jīng)將其用于例如遠(yuǎn) 程遙測應(yīng)用中,所以現(xiàn)在真實地說,在任意一個寬范圍的數(shù)據(jù)處理系統(tǒng)和設(shè) 備上都可以實現(xiàn)發(fā)布者、訂戶和發(fā)布/訂閱代理。因此可以在包括無線連接的 PDA、移動電話和自動傳感器設(shè)備的網(wǎng)絡(luò)中以及包括復(fù)雜的并且高性能的計
算機(jī)系統(tǒng)的網(wǎng)絡(luò)中實現(xiàn)本發(fā)明。
對于本領(lǐng)域的技術(shù)人員來說將很清楚,可以以軟件或以硬件(例如,使 用電子邏輯電路)實現(xiàn)分布式發(fā)布/訂閱通信網(wǎng)絡(luò)的各種組件。例如,可以通 過硬件比較器實現(xiàn)發(fā)布/訂閱匹配引擎70,該比較器比較所發(fā)布的消息內(nèi)的主 題名稱與所存儲的訂閱內(nèi)的主題名稱。然后,在電子電路內(nèi)處理指示匹配或 缺乏匹配的比較器的輸出信號,以控制是否把消息轉(zhuǎn)發(fā)給具體訂戶??梢酝?過電子過濾器實現(xiàn)通過某些發(fā)布/訂閱匹配引擎所實現(xiàn)的過濾步驟一一尤其 是,在施加過濾器在其上的數(shù)據(jù)值作為信號振幅來表示的情況。
如上所釋,本發(fā)明適用于依賴位于中心的代理(如圖1所示)或分布式 代理網(wǎng)絡(luò)的發(fā)布/訂閱通信環(huán)境。本發(fā)明提供了管理多個訂戶的訂閱的發(fā)布/ 訂閱代理的具體優(yōu)勢,但是,本發(fā)明還適用于在其中發(fā)布/訂閱代理包括在每 個訂戶系統(tǒng)中被復(fù)制的發(fā)布/訂閱匹配引擎功能性的環(huán)境。
因此,很清楚本發(fā)明適用于寬范圍的操作環(huán)境,并且可以使用硬件和軟 件的各種組合來實現(xiàn)本發(fā)明。在每種情況下,在發(fā)布/訂閱通信網(wǎng)絡(luò)內(nèi),本發(fā)
明提供了發(fā)布者和/或訂戶對主題的指定中的增加的靈活性和發(fā)布/訂閱代理 的訂閱匹配中的靈活性。
下面參考圖3到5描述本發(fā)明的實施例。圖3是包括一組消息報頭域和 消息主體(消息的"有效負(fù)載"數(shù)據(jù))的典型消息的結(jié)構(gòu)的示意表示。消息 報頭可以包括多個不同的域,該域包括,例如消息格式信息;主題域;所 要求的服務(wù)質(zhì)量的指示(永久的或非永久的,以控制是否應(yīng)該把消息保存到 非易失存儲器,以在故障的情況下可以被恢復(fù));以及保留標(biāo)記(以指示代理 是否應(yīng)該保留該發(fā)布物的副本,以使該主題的最新發(fā)布物對于此主題的未來 訂戶是可用的)。附加的報頭域在本技術(shù)領(lǐng)域中是已知的。
例如發(fā)布者應(yīng)用程序可以使用諸如如下的API呼叫來調(diào)用在與發(fā)布/訂閱 代理的現(xiàn)有連接上的發(fā)送操作以發(fā)布信息
發(fā)布(主題、數(shù)據(jù)、永久性、保留) 其中"永久性"和"保留"的每個是如上所述的消息性質(zhì),并且是與所發(fā)布 的消息的報頭域內(nèi)的主題信息一起被指定的。所發(fā)布的消息的報頭域可以包 括在其中由字符"/"來分隔文本元素的字符串。在實現(xiàn)分層主題分類方案的 傳統(tǒng)的發(fā)布/訂閱系統(tǒng)中,解譯諸如"根/主題A/主題X"的由發(fā)布者指定的 主題串作為單個層次主題名稱,并僅將其標(biāo)識為對于指定完全相同的主題串
"根/主題A/主題X"(或等同使用諸如""主題A/主題X"或"根/主題A/" 的通配才奪)的訂閱的匹配。
從編程API解釋為消息報頭在本技術(shù)領(lǐng)域中是已知的。例如,在一些已 知的系統(tǒng)中,消息具有包含了以類似XML格式的發(fā)布/訂閱屬性的報頭。關(guān) 于主題"根/主題A/主題X"的所發(fā)布的消息在其消息報頭中可能具有以下內(nèi) 容
<psc〉
<Command>Publish</Command>
<Topic>root/topicA/topicX</Topic>
</psc>
在本發(fā)明的第一實施例中,在消息報頭的附加域內(nèi)提供了附加的 'match—scheme'標(biāo)簽。提供'match_scheme,域以使發(fā)布者能在指定主題 域內(nèi)的主題串時指定他們已經(jīng)實現(xiàn)的主題分類方案。在該示范實施例中,發(fā) 布者可以指定多個主題分類方案,并且將通過發(fā)布/訂閱代理識別該方案,這 些方案包括
'match一schemeOR'其指示發(fā)布者想要把所指定的主題串的各個分離的元
素解釋成可以用使用布爾OR操作符的匹配算法與訂 閱相比較的獨立的標(biāo)簽(或"關(guān)鍵詞")。
'match—scheme-AND,其指示發(fā)布者想要把所指定的主題串的各個分離的元
素解釋成可以用使用布爾AND操作符的匹配算法與 訂閱相比較的獨立的標(biāo)簽(或"關(guān)鍵詞")。
'match_scheme=ffl'其指示發(fā)布者想要把所指定的主題串解釋成可以使用
分層主題匹配算法與訂閱相比較的單個分層主題名 稱。
發(fā)布者可以使用如上所述的在其中用字符"/"分隔元素的傳統(tǒng)格式來指 定主題串,但是本發(fā)明的這種主題串格式對不同的發(fā)布者可以是不同的。在 'match—scheme'值內(nèi)捕獲具體發(fā)布者的意圖。
例如,第一發(fā)布者應(yīng)用程序可以用'match_scheme=ffl,指定"2012—奧 林匹克/英國—奧林匹克_團(tuán)隊/帆船"。該發(fā)布者的意圖是代理和訂閱者解釋此 作為更籠統(tǒng)的類別"2012一奧林匹克"內(nèi)的類別"英國—奧林匹克—團(tuán)隊"內(nèi)的 主題子類別"帆船"。
第二發(fā)布者可能用'match—scheme-OR,指定相同的主題串"2012—奧林 匹克/英國—奧林匹克—團(tuán)隊/帆船",在該情況下,該發(fā)布者的意圖是可以分別 匹配分離的元素"2012_奧林匹克"、"英國—奧林匹克—團(tuán)隊"和"帆船"。也 就是,發(fā)布者的意圖是可以把主題"2012—奧林匹克"、"英國—奧林匹克—團(tuán)隊" 和"帆船"的任意一個標(biāo)識為對于當(dāng)前應(yīng)用的匹配。
在另一實施例中,在建立與發(fā)布/訂閱代理的連接時指定發(fā)布者的主題分 類方案('match—scheme'值)。這在大多數(shù)情況下是可接受的,因為發(fā)布者 的方案不太可能在連續(xù)的發(fā)布物之間改變,并且確實具有代理不必在接收到 每個已發(fā)布的消息時動態(tài)地解釋'match_scheme,值的優(yōu)勢。
類似地,訂戶還可以指定多個不同的主題分類方案之一,在本實施例中 該方案包括
'match一scheme二OR'其指示訂戶意圖是,應(yīng)該把在他們的訂閱中所指定的
主題串的各個分離的元素解釋成可以用使用布爾OR 操作符的匹配算法與所接收到的發(fā)布物內(nèi)的主題信息 相比較的獨立的標(biāo)簽。
'match一scheme-AND,其指示訂戶意圖是,應(yīng)該把在他們的訂閱中所指定的
主題串的各個分離的元素解釋成可以用使用布爾 AND操作符的匹配算法與所接收到的發(fā)布物內(nèi)的主 題信息相比較的獨立的標(biāo)簽。
'match—scheme=ffl'其指示訂戶想要把所指定的主題串解釋成可以使用分
層主題匹配算法與所接收的發(fā)布物相比較的單個分層 主題名稱。
'match—scheme=PUB,其指示訂戶希望把他們所指定的主題串與發(fā)布者指定
的意圖一致地解釋(即,依據(jù)由發(fā)布者指定的 match—scheme值的"OR"、 "AND"或"HI"的 match—scheme值)
當(dāng)建立新連接時(或當(dāng)接收到新發(fā)布物時,如上所述)可以通過發(fā)布/訂 閱代理解釋發(fā)布者和訂戶所指定的意圖,并且當(dāng)進(jìn)行訂閱匹配時應(yīng)用該意圖, 如下更詳細(xì)地描述的。如果訂戶指定了代理不能處理的所要求的 'match_scheme,,那么協(xié)商可能隨之而來,以使訂戶能指定與由代理所支持 的匹配算法之一相一致的匹配方案——初步檢查代理是否能處理第一個由訂
戶指定的match—scheme,然后,如果不能,檢查代理是否能處理第二個指定 的match—scheme。如果訂戶的要求確實很重要并且代理不能滿足該要求,那 么可能拒絕該訂閱請求。在一個實施例中,如果需要,代理可以取出或調(diào)用 遠(yuǎn)程匹配算法。
如圖4所示,根據(jù)本發(fā)明的優(yōu)選實施例的發(fā)布/訂閱消息代理200包括與 一組匹配組件220、 222、 224關(guān)聯(lián)的匹配引擎210和匹配組件選擇器230。 用于每個已連接的發(fā)布者系統(tǒng)的接收器組件260包括通信棧和用于把所接受 的消息從所接收的規(guī)范字節(jié)格式分解(demarshal)成消息代理的內(nèi)部消息表 示的協(xié)議處理器模塊。有對于每個訂戶系統(tǒng)的相應(yīng)的發(fā)射器(transmitter), 用于把消息匯集成規(guī)范的字節(jié)格式,以允許消息在網(wǎng)絡(luò)連接上流通。通信棧 能訪問用于與外部網(wǎng)絡(luò)通信的TCP/IP套接字。消息代理200在具體的TCP 端口上監(jiān)聽新建立的客戶連接。TCP/IP僅是一個示例協(xié)議,并且本發(fā)明不限 于任何具體的通信協(xié)議。
當(dāng)接收到進(jìn)入的連接請求時,消息代理引導(dǎo)用于該客戶的通信棧。該棧 負(fù)責(zé)維持與客戶的連接并監(jiān)視套接字連接的當(dāng)前狀態(tài)。通信棧引導(dǎo)協(xié)議處理 模塊,并且協(xié)議處理模塊處理所接收的消息的格式和通信協(xié)議的編碼和解碼, 以便實現(xiàn)可以由消息代理使用的內(nèi)部目標(biāo)表示。例如,協(xié)議模塊將把來自發(fā) 布者客戶的進(jìn)入消息分解成為目標(biāo)形式,并將其提交給發(fā)布/訂閱匹配引擎 210,用于與已登記的訂閱比較,并且將把其匯集用于傳遞到訂戶。另外,當(dāng) 發(fā)布者請求與代理連接時,發(fā)布者還指定其如上所述的主題分類方案。然后, 把用于每個發(fā)布者的主題分類方案存儲在代理上的表格240中。
訂戶把他們的訂閱請求發(fā)送給代理,并且這些訂閱請求指定了主題串和 主題分類方案兩者。把訂閱存儲在代理上的貯存器250中。對于主題串被指 定給其作為分層主題串的每個訂閱,把這組分層的主題元素添加到表示所有
已登記的訂閱的整組分層主題串的主題樹中。也就是,把每個訂閱的主題串 表示為樹內(nèi)的路徑(見圖1)。除了這些分層的主題串以外,由訂戶指定的任 意 一卄分層的串與列出當(dāng)前已登記的訂戶的所有主題分類方案的文件255 —起 也被存儲在貯存器250中。在本實施例中,通過其'match—scheme'值把訂 閱索引到貯存器中。
圖5示出響應(yīng)于接收到新的發(fā)布物而由發(fā)布/訂閱代理進(jìn)行的步驟的序 列。接收器組件的協(xié)議處理模塊把消息分解并把消息傳遞到發(fā)布/訂閱匹配引擎210,如上所述。響應(yīng)于接收280所發(fā)布的消息,進(jìn)行初始檢查290,以確 定是否有任何當(dāng)前已登記的訂閱。如果該確定是否定的,那么刪除消息300。 如果確定是肯定的,那么調(diào)用310匹配組件選擇器230,以確定用于對該發(fā) 布物進(jìn)行訂閱匹配的合適的匹配組件或 一組匹配組件220 、 222 、 224 。
檢查訂閱貯存器250中的文件255內(nèi)的'match—scheme'列表,以確定 320是否有任何當(dāng)前已登記的訂戶已經(jīng)指定了期望的主題'match—scheme', 并標(biāo)識方案列表。如果有任何已登記的訂戶已經(jīng)指定了依照特定主題分類方 案來解釋其主題串的要求,那么匹配組件選擇器230選擇330用于該方案的 相應(yīng)的匹配組件。選擇器230選擇另外的匹配組件,用于在其中存在當(dāng)前已 登記的訂戶的每個主題分類方案。
然后,匹配引擎210依次調(diào)用340每個已選擇的匹配組件,并且對所接 收的發(fā)布物執(zhí)行350他們各自的匹配處理。對于每個已選擇的匹配組件220、 222、 224,比較所接收的發(fā)布物與已經(jīng)指定了相應(yīng)的主題分類方案的每一個 訂閱(即,具有對應(yīng)于各自的匹配組件的'match—scheme'值的每個訂閱)。 因此,在該實施例中,由每個訂戶指定的'match_scheme,優(yōu)先于任何由發(fā) 布者指定的'match—scheme'——發(fā)布者的意圖不能不考慮明確指定的訂戶 要求。
進(jìn)行檢查360是否存在任何沒有指定主題分類方案的已登記的訂戶或是 否存在任何被指定的'match—scheme=PUB,。如果該確定是肯定的,那么確 定370發(fā)布者是否已經(jīng)指定主題分類方案。對于先前已經(jīng)向代理標(biāo)識了主題 分類方案的發(fā)布者,匹配組件選擇器從方案表240取出主題分類方案,并且 匹配組件選擇器230選擇330實現(xiàn)與發(fā)布者指定的主題分類方案一致的匹配 算法的匹配組件。
如果任何一個訂戶都沒有指定'match—scheme'值,并且發(fā)布者也沒有 指定'match_scheme'值,那么發(fā)布/訂閱代理假設(shè)將使用默認(rèn)的主題分類方 案,這在本示例實施例中是分層的主題命名方案。匹配引擎調(diào)用380用于該 主題命名方案的默認(rèn)匹配組件。該匹配組件^丸行其匹配處理,以檢查390匹 配的i丁閱。
然后,把從執(zhí)行每個已調(diào)用的匹配組件中得到的所標(biāo)識的訂戶組與由其 他匹配組件所標(biāo)識的訂戶組結(jié)合400。然后,把消息轉(zhuǎn)發(fā)400給匹配訂戶的 集合組。
雖然已經(jīng)詳細(xì)地描述了本發(fā)明的具體示范實施例,但是本發(fā)明不限于該 具體實施例,并且本發(fā)明包含在隨后的權(quán)利要求范圍內(nèi)的所有實施例。本領(lǐng) 域的技術(shù)人員將認(rèn)識到,在本發(fā)明的范圍內(nèi),可以對所述實施例做出各種改 進(jìn)和〗務(wù)改。
權(quán)利要求
1.一種用于發(fā)布/訂閱數(shù)據(jù)處理系統(tǒng)中的訂閱匹配的方法,其中,所述訂閱匹配包括比較所接收的發(fā)布物內(nèi)的主題標(biāo)識符與訂戶的所存儲的訂閱內(nèi)的主題標(biāo)識符,以確定是否應(yīng)該把所接收的發(fā)布物轉(zhuǎn)發(fā)給訂戶,該方法包括步驟從訂閱中確定各自的訂戶希望訂閱匹配來實現(xiàn)第一主題分類方案還是第二主題分類方案;以及響應(yīng)于所述確定步驟,調(diào)用訂閱匹配組件來進(jìn)行實現(xiàn)所述第一主題分類方案和第二主題分類方案中相應(yīng)一個的訂閱匹配處理。
2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括 標(biāo)識用于一組訂戶的所要求的主題分類方案組;對于每個已標(biāo)識的所要求的主題分類方案組,調(diào)用訂閱匹配組件來進(jìn)行 實現(xiàn)相應(yīng)的主題分類方案的訂閱匹配處理;以及集合所述訂閱匹配處理的結(jié)果,以標(biāo)識應(yīng)該把所述發(fā)布物轉(zhuǎn)發(fā)給的訂戶 的集合組。
3. 根據(jù)權(quán)利要求1或權(quán)利要求2所述的方法,其中,所述第一主題分類 方案是發(fā)布者指定的主題分類方案。
4. 根據(jù)權(quán)利要求3所述的方法,其中,在建立發(fā)布者和發(fā)布/訂閱代理 之間的連接期間,給所述發(fā)布/訂閱代理指定所述發(fā)布者指定的主題分類方案。
5. 根據(jù)權(quán)利要求3或權(quán)利要求4所述的方法,其中,在發(fā)布的消息內(nèi)指 定所述發(fā)布者指定的主題分類方案。
6. 根據(jù)權(quán)利要求3到5的任意之一所述的方法,其中,通過在發(fā)布的消 息內(nèi)的URI引用所述發(fā)布者指定的主題分類方案。
7. 根據(jù)權(quán)利要求3到6的任意之一所述的方法,其中,在不存在用于訂 閱匹配以實現(xiàn)任何替換的主題分類方案的明確的訂戶指定的請求的情況下, 確定所述訂戶希望訂閱匹配來實現(xiàn)所述發(fā)布者指定的主題分類方案。
8. —種發(fā)布/訂閱代理,用于從至少一個發(fā)布者處接收發(fā)布物,并將發(fā) 布物轉(zhuǎn)發(fā)給已經(jīng)登記了對接收發(fā)布物的興趣的訂戶,所述發(fā)布/訂閱代理包 括用于比較在所接收的發(fā)布物內(nèi)的主題標(biāo)識符與在被存儲在所述發(fā)布/訂 閱代理中的訂閱內(nèi)的主題標(biāo)識符以確定應(yīng)該把所述發(fā)布物轉(zhuǎn)發(fā)給哪些訂戶的裝置;其中,所述用于比較的裝置包括一組訂閱匹配組件和用于選擇所述一組 訂閱匹配組件中的至少一個的裝置,其中,所述用于選擇的裝置響應(yīng)于指定所要求的主題分類方案的訂戶或發(fā)布者中的至少一個。
9. 根據(jù)權(quán)利要求8所述的發(fā)布/訂閱代理,其中,所述用于選擇的裝置 選擇對于由訂戶指定的每個主題分類方案實現(xiàn)相應(yīng)的主題分類方案的訂閱匹配組件。
10. 根據(jù)權(quán)利要求9所述的發(fā)布/訂閱代理,其中,所述用于選擇的裝置 響應(yīng)于標(biāo)識沒有指定主題分類方案的訂閱而選擇實現(xiàn)發(fā)布者指定的主題分類 方案的訂閱匹配組件。
11. 一種在發(fā)布/訂閱通信網(wǎng)絡(luò)中使用的數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括 用于從一個或多個發(fā)布者處接收發(fā)布物的裝置; 用于把發(fā)布物發(fā)送到一個或多個訂戶的裝置;以及 發(fā)布/訂閱代理,用于比較在所接收的發(fā)布物內(nèi)的主題標(biāo)識符與在被存儲在發(fā)布/訂閱代理中的訂閱內(nèi)的主題標(biāo)識符,以確定應(yīng)該把哪些發(fā)布物發(fā)送給 哪些訂戶;其中,所述發(fā)布/訂閱代理包括至少兩個訂閱匹配組件和用于從訂閱中確 定各個訂戶想要代理的訂閱匹配來實現(xiàn)第一發(fā)布者指定的主題分類方案還是 第二主題分類方案;以及其中,所述發(fā)布/訂閱代理響應(yīng)于所述確定步驟來調(diào)用訂閱匹配組件,以 進(jìn)行實現(xiàn)第一主題分類方案和第二主題分類方案中相應(yīng)一個的訂閱匹配處 理。
12. —種在發(fā)布/訂閱通信網(wǎng)絡(luò)中使用的數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括 數(shù)據(jù)處理單元;數(shù)據(jù)存儲單元; 網(wǎng)絡(luò)通信接口;以及發(fā)布/訂閱代理,用于從至少一個發(fā)布者處接收發(fā)布物并將發(fā)布物轉(zhuǎn)發(fā)給 已經(jīng)登記了對接收發(fā)布物的興趣的訂戶,其中,所述發(fā)布/訂閱代理包括 用于比較在所接收的發(fā)布物內(nèi)的主題標(biāo)識符與在被存儲在所述發(fā)布/訂裝置;其中,所述用于比較的裝置包括一組訂閱匹配組件和用于選擇所述一組 訂閱匹配組件中的至少一個的裝置,其中,所述用于選4奪的裝置響應(yīng)于指定 所要求的主題分類方案的訂戶或發(fā)布者中的至少一個。
全文摘要
提供了用于在發(fā)布/訂閱通信網(wǎng)絡(luò)中的靈活的主題標(biāo)識的方法、裝置和計算機(jī)程序。發(fā)布者和訂戶能夠指定他們關(guān)于在訂閱匹配期間將由發(fā)布/訂閱代理使用的主題分類方案的意圖,并且代理響應(yīng)于發(fā)布者和訂戶之一或兩者所指定的意圖而調(diào)用各自的訂閱匹配組件。所調(diào)用的匹配組件每個實現(xiàn)與所指定的主題分類方案一致的訂閱匹配處理。
文檔編號H04L12/58GK101193077SQ20071018695
公開日2008年6月4日 申請日期2007年11月15日 優(yōu)先權(quán)日2006年11月30日
發(fā)明者喬斯·E·加爾扎, 加雷思·E·瓊斯, 本杰明·J·弗萊徹, 馬丁·J·蓋爾 申請人:國際商業(yè)機(jī)器公司