專利名稱:發(fā)布/訂閱數(shù)據(jù)處理設(shè)備、方法和計(jì)算機(jī)程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地涉及用于將消息自數(shù)據(jù)消息供應(yīng)者(此后稱為“發(fā)布者”)分配給這類消息的消費(fèi)者(此后稱為“訂戶”)的數(shù)據(jù)處理。
發(fā)布/訂閱數(shù)據(jù)處理系統(tǒng)近年來日益普及,用作將數(shù)據(jù)消息自發(fā)布計(jì)算機(jī)分配至訂戶計(jì)算機(jī)的一種手段。將世界各地種類各異的計(jì)算機(jī)連接起來的因特網(wǎng)的不斷增長(zhǎng)的普及程度有助于使這類發(fā)布/訂閱系統(tǒng)更為普及。因特網(wǎng)的全球網(wǎng)瀏覽器應(yīng)用程序(“應(yīng)用程序”或“過程”一詞系指在計(jì)算機(jī)上運(yùn)行的軟件程序或其一部分)可與發(fā)布者或訂戶一起用于圖形地顯示消息。當(dāng)由發(fā)布者提供的數(shù)據(jù)經(jīng)常變化及大量訂戶要求快速地用最新數(shù)據(jù)更新時(shí),這類系統(tǒng)特別有用。也許說明它有用的最佳例子是股票交易數(shù)據(jù)的分配。
在這類系統(tǒng)中,數(shù)據(jù)消息發(fā)布應(yīng)用程序不必知道將要接收消息的訂閱應(yīng)用程序的標(biāo)識(shí)或地點(diǎn)。發(fā)布者只須連至一個(gè)發(fā)布/訂閱分配代理過程,該過程包含于一組用于組成代理系統(tǒng)(此后稱為代理程序)的這類過程中,它將消息送至分配代理過程,并說明送至分配代理過程的消息主題。該分配代理過程然后將發(fā)布的消息分配至訂閱應(yīng)用程序,這些訂閱應(yīng)用程序以前曾向代理程序表示過它們希望接收特定主題的數(shù)據(jù)消息。因此,訂戶也不必知道發(fā)布者的標(biāo)識(shí)或地點(diǎn)。訂戶只須連至分配代理過程即可。
圖1中顯示當(dāng)今使用的一種這類發(fā)布/訂閱系統(tǒng)。發(fā)布者11和12連至發(fā)布/訂閱代理程序2并將所發(fā)布消息送至代理程序2,后者將消息分配至訂戶31、32、33、34。作為輸出數(shù)據(jù)消息的數(shù)據(jù)處理應(yīng)用程序的發(fā)布者11和12使用周知的稱為遠(yuǎn)程過程調(diào)用(或RPC)的應(yīng)用程序間數(shù)據(jù)連接協(xié)議連至代理程序2。每個(gè)發(fā)布應(yīng)用程序可在單獨(dú)的機(jī)器上運(yùn)行,或者備擇地,單個(gè)機(jī)器也可執(zhí)行多個(gè)發(fā)布應(yīng)用程序。代理程序2由多個(gè)分配代理(21至27)組成,后者用下面稱之為“樹結(jié)構(gòu)”的層次方式連接起來。這些分配代理中可以每個(gè)在單獨(dú)的機(jī)器上運(yùn)行,它們是將數(shù)據(jù)消息自發(fā)布者通過代理程序2分配至訂戶的數(shù)據(jù)處理應(yīng)用程序。訂閱應(yīng)用程序31、32、33和34通過RPC連至代理程序2以便接收發(fā)布的消息。
發(fā)布者11和12首先通過RPC直接連至一個(gè)根分配代理21,它又通過RPC連至第二層分配代理22和23,后者又通過RPC連至第三層分配代理24、25、26和27(亦稱為“葉分配代理”,因?yàn)樗鼈兪菢浣Y(jié)構(gòu)中的最后分配代理)。每個(gè)分配代理可在它自己的機(jī)器上運(yùn)行,或者備擇地,一個(gè)機(jī)器上可運(yùn)行數(shù)組分配代理。葉分配代理通過RPC連至訂閱應(yīng)用程序31至34,后者之中每個(gè)可在它自己機(jī)器上運(yùn)行。
為使代理程序2能確定哪個(gè)發(fā)布消息應(yīng)送至哪個(gè)訂戶,發(fā)布者向根分配代理21提供每個(gè)發(fā)布消息的分配流名稱。分配流(此后稱為“流”)是具有名稱的消息的有序序列(例如股票交易報(bào)價(jià)的流名稱是“股票”),該名稱用于將一個(gè)流與其它流區(qū)別開。類似地,訂戶向葉分配代理31至34提供它們希望訂閱的流的名稱。以此方式,代理程序2一直留意著哪個(gè)訂戶對(duì)哪個(gè)流感興趣,因此當(dāng)發(fā)布者向這些流發(fā)布消息時(shí),這些消息就可以分配至相應(yīng)的訂戶。也允許訂戶向代理程序提供篩選表示以限制在具體流中接收的消息(例如,只對(duì)IBM股票報(bào)價(jià)感興趣的訂戶31可用以下方式向“股票”流訂閱向葉分配代理24發(fā)出RPC調(diào)用并包括篩選表示,要求只將“股票”流中與IBM股票有關(guān)的消息送至訂戶31)。
任何時(shí)候只要代理程序2的配置改變(例如,增加或刪除流或者增加或刪除分配代理),系統(tǒng)管理程序必須將此改變通知每個(gè)分配代理,以使整個(gè)代理程序2能以改變后配置數(shù)據(jù)的統(tǒng)一方式運(yùn)行。在過去曾要求系統(tǒng)管理程序與每個(gè)分配代理聯(lián)系以改變它的配置數(shù)據(jù)。因此對(duì)于系統(tǒng)管理程序來說,修改代理程序2的配置是非常耗時(shí)的。
根據(jù)一個(gè)方面,本發(fā)明提供一個(gè)發(fā)布/訂閱數(shù)據(jù)處理代理設(shè)備,它具有一個(gè)用于自發(fā)布應(yīng)用程序接收由發(fā)布應(yīng)用程序發(fā)布的限定主題流中的數(shù)據(jù)消息的裝置;以及一個(gè)用于將收到的所發(fā)布數(shù)據(jù)消息分配給一個(gè)曾請(qǐng)求接收曾發(fā)布過所發(fā)布消息的流中的消息的訂閱應(yīng)用程序的裝置;其中有一個(gè)流是為用于描述代理設(shè)備的配置改變的管理消息保留的。
因此,本發(fā)明使系統(tǒng)管理程序改變代理程序配置的工作變得容易得多。例如,系統(tǒng)管理程序只須將配置改變作為一條消息發(fā)布給管理消息專用的流。然后代理程序的每個(gè)分配代理向此流訂閱并接收全部所發(fā)布的配置改變。因此系統(tǒng)管理程序一直能用最新配置數(shù)據(jù)組來更新代理程序中的每個(gè)分配代理而不必個(gè)別地聯(lián)系每個(gè)分配代理。這也大大減少了實(shí)施配置改變機(jī)制的費(fèi)用。
此外,本發(fā)明也提高了所更新配置數(shù)據(jù)的可用性。也即,一旦系統(tǒng)管理程序向代理體系結(jié)構(gòu)的第一部分發(fā)布了更新的配置數(shù)據(jù),該更新的配置數(shù)據(jù)就自動(dòng)地分配遍及代理體系結(jié)構(gòu)。這導(dǎo)致改變的配置信息非??赡芸焖俚胤峙浔榧按眢w系結(jié)構(gòu)。
還有一個(gè)優(yōu)點(diǎn)是所更新配置數(shù)據(jù)消息總是順序地在流中發(fā)送,因而保證代理體系結(jié)構(gòu)內(nèi)所有過程按照完全相同的順序接收全部配置改變,這就提供了結(jié)果的高度穩(wěn)定性和可預(yù)測(cè)性。
用于分配的裝置最好包括多個(gè)分配代理數(shù)據(jù)處理過程及每個(gè)分配代理數(shù)據(jù)處理過程向?yàn)楣芾硐⒈A舻牧饔嗛啞?br>
系統(tǒng)管理發(fā)布應(yīng)用程序最好發(fā)布管理消息,該管理消息描述供管理消息備用的流的配置改變。
發(fā)布應(yīng)用程序或訂閱應(yīng)用程序中至少一個(gè)程序最好利用因特全球網(wǎng)瀏覽器以使所發(fā)布消息在因特網(wǎng)上發(fā)送或接收。
根據(jù)第二方面,本發(fā)明提供一個(gè)數(shù)據(jù)處理方法,它的方法步驟對(duì)應(yīng)于本發(fā)明第一方面的數(shù)據(jù)處理設(shè)備的每個(gè)部件。
根據(jù)第三方面,本發(fā)明提供一個(gè)具有存放于其上的計(jì)算機(jī)程序的計(jì)算機(jī)可讀存儲(chǔ)媒體,當(dāng)在計(jì)算機(jī)上運(yùn)行時(shí),該計(jì)算機(jī)程序執(zhí)行本發(fā)明第二方面的數(shù)據(jù)處理方法功能。
通過參照結(jié)合附圖描述的優(yōu)選實(shí)施例的詳細(xì)描述,將能更好地理解本發(fā)明,附圖中圖1顯示與本發(fā)明優(yōu)選實(shí)施例有關(guān)的發(fā)布/訂閱系統(tǒng)的體系結(jié)構(gòu);圖2顯示向一個(gè)稱為“管理”的流發(fā)布的消息的格式,系統(tǒng)管理程序根據(jù)本發(fā)明優(yōu)選實(shí)施例發(fā)布該消息以便改變圖1代理程序的配置數(shù)據(jù)。
圖3是用于顯示當(dāng)系統(tǒng)管理程序改變圖1代理程序的配置數(shù)據(jù)時(shí),圖1代理程序根據(jù)本發(fā)明優(yōu)選實(shí)施例所采取的步驟的流程圖;以及圖4是用于顯示當(dāng)將新分配代理加入代理樹結(jié)構(gòu)中時(shí),圖1代理程序根據(jù)本發(fā)明優(yōu)選實(shí)施例所采取的步驟的流程圖。
圖1中在計(jì)算機(jī)上運(yùn)行的發(fā)布應(yīng)用程序11是例如現(xiàn)場(chǎng)股票交易數(shù)據(jù)報(bào)價(jià)的供應(yīng)者。也即,發(fā)布應(yīng)用程序11提供用于報(bào)道股票價(jià)格當(dāng)前值的經(jīng)常消息。此例中,發(fā)布應(yīng)用程序11正在發(fā)行早已在代理程序2中配置好的稱為“股票”的流中的消息。眾所周知,當(dāng)發(fā)布者11希望向“股票”流發(fā)布股票報(bào)價(jià)消息時(shí),發(fā)布者11向位于代理樹結(jié)構(gòu)頂層的根分配代理21發(fā)出RPC調(diào)用。此例中,在另一計(jì)算機(jī)上運(yùn)行的訂閱應(yīng)用程序32已通過RPC調(diào)用向位于樹結(jié)構(gòu)底層的葉分配代理24發(fā)送一個(gè)訂閱請(qǐng)求,以標(biāo)示訂戶32希望向“股票”流訂閱。
因此,任何時(shí)候當(dāng)發(fā)布者11向“股票”流發(fā)布數(shù)據(jù)消息時(shí),代理程序2的分配樹結(jié)構(gòu)將消息通過根分配代理21往下送,通過任何中間分配代理(例如圖1例中的22)及通過葉分配代理24送至訂戶32。這涉及一系列在圖1中連接發(fā)布者11與訂戶32的每個(gè)連續(xù)圓圈之間所發(fā)生的RPC調(diào)用(即11至21,21至22,22至24和24至32)。
迄今已描述了現(xiàn)有技術(shù)發(fā)布/訂閱代理程序的操作?,F(xiàn)將引進(jìn)第二發(fā)布者12,從而描述本發(fā)明優(yōu)選實(shí)施例。
可能在不同計(jì)算機(jī)上運(yùn)行的發(fā)布應(yīng)用程序12是例如一個(gè)系統(tǒng)管理程序。它發(fā)布包含發(fā)布/訂閱代理程序2的配置改變的消息。例如,發(fā)布應(yīng)用程序12可增加一個(gè)稱為“債券”的流,以供用于發(fā)布/訂閱代理程序2內(nèi)。一旦增加此新流,發(fā)布者11即可選擇在它于“股票”流中發(fā)布的股票信息之外在此流中發(fā)布債券信息。還有,只對(duì)債券而不對(duì)股票感興趣的訂戶可向新“債券”流訂閱。這樣的改變涉及代理程序2的配置的改變,因在此改變之前“債券”流并不存在于代理程序2中。根據(jù)本發(fā)明優(yōu)選實(shí)施例,發(fā)布應(yīng)用程序12向稱為“管理”的流發(fā)布一條消息,其內(nèi)容為“債券”流的“增加流”的消息。發(fā)布者12向根分配代理21發(fā)送一個(gè)RPC調(diào)用并發(fā)布一個(gè)包含如圖2中所示三個(gè)域的消息。第一域120通知根分配代理21該消息是在稱為“管理”的現(xiàn)有流上發(fā)布的。這是只供系統(tǒng)管理發(fā)布程序12使用的流。第二域121標(biāo)示發(fā)布者正向代理程序的配置數(shù)據(jù)中增加新流。第三域122標(biāo)示正被增加的新流將具有名稱“債券”。
以類似方式,系統(tǒng)管理發(fā)布程序12可通過向“管理”流發(fā)布一個(gè)消息來對(duì)總體發(fā)布/訂閱系統(tǒng)作出其它配置的改變,例如刪除一個(gè)流或改變流屬性,或增加或去除一個(gè)代理過程。現(xiàn)參照?qǐng)D3流程圖更詳細(xì)地描述當(dāng)改變配置數(shù)據(jù)時(shí)代理程序2的操作。
在步301,根分配代理21自系統(tǒng)管理發(fā)布程序12接收一個(gè)RPC調(diào)用,這類RPC調(diào)用包含一個(gè)如圖2中所示的發(fā)布消息。當(dāng)收到該消息后,根分配代理將當(dāng)前序列號(hào)的值加1(步302)并將新序列號(hào)賦予新收到的發(fā)布消息。例如,如“管理”流中以前收到的消息被賦予序列號(hào)99,則“管理”流中當(dāng)今收到的發(fā)布消息(圖2中所示的那條)被賦予序列號(hào)100。在步303,根分配代理21完成安全檢驗(yàn)(例如,使用眾所周知的安全證實(shí)技術(shù),例如Kerberos)來確定系統(tǒng)管理發(fā)布程序12是否被授權(quán)對(duì)配置數(shù)據(jù)作出改變。這是重要步驟,以保證禁止未授權(quán)者改變代理程序配置。在步304,根分配代理21永久地將新配置數(shù)據(jù)(例如,稱為“債券”的新流的增加)存儲(chǔ)入本地存儲(chǔ)器中(例如存入運(yùn)行著根分配代理應(yīng)用程序21的計(jì)算機(jī)的硬盤驅(qū)動(dòng)器中)。
現(xiàn)必須將此新配置數(shù)據(jù)復(fù)制至樹結(jié)構(gòu)中其它分配代理中的每一個(gè)的本地存儲(chǔ)器(例如高速緩存)中,因每個(gè)分配代理都必須知道完整的更新的配置數(shù)據(jù)組合。因此在步305,將新發(fā)布消息(示于圖2中)與新序列號(hào)(其值為100)一起送至樹中每個(gè)存在的分配代理(代理22至27),因這類分配代理中的每一個(gè)先前都曾送入對(duì)“管理”流中所有發(fā)布消息的訂閱請(qǐng)求。以此方式,來自系統(tǒng)管理程序的新配置數(shù)據(jù)送至代理程序2中的每一個(gè)分配代理,而系統(tǒng)管理程序所花力氣是最少的。系統(tǒng)管理程序只須在“管理”流中發(fā)布一條消息。
為提供一個(gè)很易改變規(guī)模的代理體系結(jié)構(gòu),必須允許將新分配代理加入代理樹結(jié)構(gòu)中,同時(shí)該新加的分配代理也必須具備完整的配置數(shù)據(jù)組合。現(xiàn)將結(jié)合圖4流程圖描述當(dāng)增加新分配代理時(shí)代理程序2的操作。在所描述的例子中,假定分配代理26是新增加入樹結(jié)構(gòu)中的。
在步401,新加分配代理26要求其父分配代理23(通過RPC調(diào)用)提供分配代理23存于其自己本地高速緩存中的完整配置數(shù)據(jù)組合。在步402,父分配代理23向子分配代理26發(fā)出一個(gè)RPC調(diào)用以向子分配代理26提供父分配代理23已在其本地緩存中存儲(chǔ)的配置數(shù)據(jù)組合以及最新序列號(hào)S1(例如100)。然后新加分配代理26向“管理”流訂閱(步403)以便將配置數(shù)據(jù)組合以后所有的改變都通知分配代理26。當(dāng)收到下一個(gè)發(fā)布消息時(shí)(在步404進(jìn)行檢查以確定此情況),此發(fā)布消息的序列號(hào)S2(例如103)與在步402中自父分配代理獲得的序列號(hào)S1(例如100)相比較(步405)。
如序列號(hào)S1比序列號(hào)S2減1后還小(例如103減1為102及100比102還小),則這意味著父分配代理23并不具有配置數(shù)據(jù)組合的最新版本,還意味著因此新子分配數(shù)據(jù)缺少“管理”流中發(fā)布的其序列號(hào)在S1(例如100)與S2(例如103)之間的配置數(shù)據(jù)消息。因此在步406,分配代理26完成一個(gè)對(duì)存于永久存儲(chǔ)器中的根分配代理的完整配置數(shù)據(jù)組合的歷史讀操作,以便獲取具有S1與S2之間的序列號(hào)(例如101與102)的配置數(shù)據(jù)消息。另一方面,步405中的查詢結(jié)果是“否”,則并不缺少S1與S2之間的序列號(hào),因此流控制引向流程圖結(jié)尾。
雖然本發(fā)明優(yōu)選實(shí)施例只描述了系統(tǒng)管理程序用作向代理過程發(fā)布配置改變的發(fā)布者,但其它安排也應(yīng)考慮為在本發(fā)明范圍之內(nèi)。例如,系統(tǒng)管理程序可連至一個(gè)代理過程并通過正常RPC調(diào)用發(fā)送配置改變數(shù)據(jù)(而不必在流中發(fā)布這類數(shù)據(jù)),然后代理過程可在“管理”流中發(fā)布配置改變數(shù)據(jù)。
雖然為了闡釋目的在優(yōu)選實(shí)施例中描述了分配代理過程的層次樹結(jié)構(gòu),但本發(fā)明的范圍也包括許多其它體系結(jié)構(gòu)。本發(fā)明也可用于一組跨越不同類型網(wǎng)絡(luò)(包括局域網(wǎng)和廣域網(wǎng))和不同類型機(jī)器以及使用不同過程間通信協(xié)議(例如RPC,插口,TCP/IP或其它任何眾所周知的過程間通信協(xié)議)的協(xié)作過程組的環(huán)境。例如,本發(fā)明也可用于因特網(wǎng)環(huán)境中,因特網(wǎng)涉及多個(gè)連接不同類型機(jī)器的不同類型網(wǎng)絡(luò)。
雖然該配置數(shù)據(jù)描述為永久地存儲(chǔ)于本地單個(gè)過程(根分配代理過程21)中,但事實(shí)上些數(shù)據(jù)可分布在多個(gè)過程間。
雖然已描述了單個(gè)“管理”流,當(dāng)然可用多個(gè)這類流以便傳送管理或配置信息。例如,可將一個(gè)管理流用于流的增加/刪除,而將另一個(gè)管理流用于分配代理的增加/刪除。
權(quán)利要求
1.一種發(fā)布/訂閱數(shù)據(jù)處理代理設(shè)備包括用于自發(fā)布應(yīng)用程序接收由發(fā)布應(yīng)用程序在限定主題的流中發(fā)布的數(shù)據(jù)消息的裝置;以及用于將收到的發(fā)布數(shù)據(jù)消息分配至訂閱應(yīng)用程序的裝置,該訂閱應(yīng)用程序曾請(qǐng)求接收曾在其中發(fā)布過發(fā)布消息的流中的消息;其中有一個(gè)流是為用于描述代理設(shè)備的配置改變的管理消息保留的。
2.權(quán)利要求1的設(shè)備,其中用于分配的裝置包括多個(gè)分配代理數(shù)據(jù)處理過程。
3.權(quán)利要求2的設(shè)備,其中每個(gè)分配代理數(shù)據(jù)處理過程向?yàn)楣芾硐⒈A舻牧饔嗛啞?br>
4.權(quán)利要求1的設(shè)備,其中一個(gè)系統(tǒng)管理發(fā)布應(yīng)用程序向?yàn)楣芾硐⒈A舻牧靼l(fā)布描述配置改變的管理消息。
5.權(quán)利要求1的設(shè)備,其中至少一個(gè)發(fā)布應(yīng)用程序或訂閱應(yīng)用程序利用因特全球網(wǎng)瀏覽程序以便將發(fā)布消息在因特網(wǎng)上發(fā)送或接收。
6.一種發(fā)布/訂閱數(shù)據(jù)處理代理方法包括以下步驟自發(fā)布應(yīng)用程序接收由發(fā)布應(yīng)用程序在限定主題的流中發(fā)布的數(shù)據(jù)消息;以及將收到的發(fā)布數(shù)據(jù)消息分配至訂閱應(yīng)用程序,該訂閱應(yīng)用程序曾請(qǐng)求接收曾在其中發(fā)布過發(fā)布消息的流中的消息;其中有一個(gè)流是為用于描述代理設(shè)備的配置改變的管理消息保留的。
7.一種存放于計(jì)算機(jī)可讀存儲(chǔ)媒體上的計(jì)算機(jī)程序產(chǎn)品,當(dāng)在計(jì)算機(jī)上運(yùn)行時(shí),該計(jì)算機(jī)程序產(chǎn)品執(zhí)行包括以下步驟的方法自發(fā)布應(yīng)用程序接收由發(fā)布應(yīng)用程序在限定主題的流中發(fā)布的數(shù)據(jù)消息;以及將收到的發(fā)布數(shù)據(jù)消息分配至訂閱應(yīng)用程序,該訂閱應(yīng)用程序曾請(qǐng)求接收曾在其中發(fā)布過發(fā)布消息的流中的消息;其中有一個(gè)流是為用于描述代理設(shè)備的配置改變的管理消息保留的。
全文摘要
一種發(fā)布/訂閱數(shù)據(jù)處理代理設(shè)備具有用于自發(fā)布應(yīng)用程序接收由發(fā)布應(yīng)用程序在限定主題的流中發(fā)布的數(shù)據(jù)消息的裝置;及用于將收到的發(fā)布數(shù)據(jù)消息分配至訂閱應(yīng)用程序的裝置,該訂閱應(yīng)用程序曾請(qǐng)求接收曾在其中發(fā)布過發(fā)布消息的流中的消息;其中有一個(gè)流是為用于描述代理設(shè)備的配置改變的管理消息保留的。
文檔編號(hào)G06F17/00GK1239252SQ9910705
公開日1999年12月22日 申請(qǐng)日期1999年5月26日 優(yōu)先權(quán)日1998年5月27日
發(fā)明者安德魯·布萊爾·哈斯廷斯, 山克爾·拉馬斯瓦米, 唐納德·埃德溫·施密茨, 王清華(音譯), 邁克爾·懷恩·揚(yáng) 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司