專利名稱:一種具有主題分發(fā)功能的資源管理平臺(tái)及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及資源管理技術(shù),更具體地說(shuō),涉及一種具有主題分發(fā)功能的資源管理平臺(tái)及其方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,資源共享逐漸成為許多企業(yè)級(jí)應(yīng)用迫切的需求。雖然目前一些應(yīng)用系統(tǒng)實(shí)現(xiàn)了部分共享的功能,但很多情況下,這種共享只限于存取有限網(wǎng)絡(luò)內(nèi)的資源或?yàn)橛邢蘧W(wǎng)絡(luò)內(nèi)提供資源,不能滿足更普遍、更廣泛共享的需求。
通常的應(yīng)用系統(tǒng)無(wú)法做到這種普遍、廣泛共享的原因主要有兩點(diǎn)一是應(yīng)用系統(tǒng)用戶出于安全保密性的考慮,不愿將所有資源對(duì)外開放;二是即使應(yīng)用系統(tǒng)用戶愿意甚至需要將一部分資源對(duì)外開放,但卻沒(méi)有一種統(tǒng)一的途徑使其資源安全、可靠地開放。
資源管理平臺(tái)(Universal Resource Management Platform)便是針對(duì)上述問(wèn)題的,資源管理平臺(tái)相當(dāng)于用戶與資源的中介,它是對(duì)資源進(jìn)行統(tǒng)一管理的一個(gè)“資源服務(wù)提供者”(Resource Service Provider),它的重要目標(biāo)之一是為各種“資源服務(wù)客戶”(Resource Service Client)提供資源訂閱/接收/獲取(Subscribe/Receive/Consume)服務(wù)。
由上述可以看出,需要提供一種實(shí)現(xiàn)資源管理平臺(tái)訂閱/接收/獲取等服務(wù)的方法,也就是說(shuō)提供一種具有主題分發(fā)功能的資源管理平臺(tái)及其方法。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種具有主題分發(fā)功能的資源管理平臺(tái)及其方法,該資源管理平臺(tái)可以創(chuàng)建主題隊(duì)列,并將主題隊(duì)列的主題分發(fā)給對(duì)應(yīng)的監(jiān)聽器(主題訂閱者)。
根據(jù)本發(fā)明的一方面,提供一種具有主題分發(fā)功能的資源管理平臺(tái),包括平臺(tái)內(nèi)核,為所述資源管理平臺(tái)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián);主題分發(fā)器,包括分發(fā)器主插件,對(duì)外提供主題服務(wù),并負(fù)責(zé)維護(hù)調(diào)用器;分發(fā)器工具插件,向平臺(tái)內(nèi)核注冊(cè)主題記錄器,主題記錄器完成主題分發(fā)日志的記錄;調(diào)用器,調(diào)用器是所述分發(fā)器主插件定義的擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)是一個(gè)被命名的接口,所述調(diào)用器執(zhí)行主題的分發(fā),所述調(diào)用器的功能由在平臺(tái)內(nèi)核注冊(cè)的調(diào)用器插件實(shí)現(xiàn);主題處理器,創(chuàng)建主題隊(duì)列,并在主題隊(duì)列中選出相應(yīng)的主題通過(guò)所述調(diào)用器分發(fā)給監(jiān)聽器,所述監(jiān)聽器是主題的訂閱者。
所述分發(fā)器主插件為所述監(jiān)聽器提供注冊(cè)并管理監(jiān)聽器,所述每個(gè)監(jiān)聽器提供一個(gè)回調(diào),所述每個(gè)回調(diào)包括一種調(diào)用協(xié)議。
所述調(diào)用器執(zhí)行主題的分發(fā)是通過(guò)調(diào)用所述回調(diào)進(jìn)行的,每個(gè)調(diào)用器只能識(shí)別和調(diào)用與其調(diào)用協(xié)議相同的回調(diào)。
所述調(diào)用器插件將其功能服務(wù)定義為一個(gè)擴(kuò)展者,并向平臺(tái)內(nèi)核注冊(cè)一個(gè)擴(kuò)展,所述擴(kuò)展是一個(gè)命名連接,所述分發(fā)器主插件將其定義的擴(kuò)展點(diǎn)向平臺(tái)內(nèi)核注冊(cè),所述平臺(tái)內(nèi)核利用所述擴(kuò)展使所述擴(kuò)展者與所述擴(kuò)展點(diǎn)連接,從而使所述調(diào)用器實(shí)現(xiàn)所述調(diào)用器插件的功能和服務(wù)。
所述主題處理器創(chuàng)建的主題隊(duì)列中的每一個(gè)主題都有一個(gè)題目,所述每個(gè)監(jiān)聽器都要說(shuō)明其需要的主題題目,只有與監(jiān)聽器相同題目的主題才會(huì)被所述主題處理器分發(fā)到該監(jiān)聽器。
根據(jù)本發(fā)明的第二方面,提供一種資源管理平臺(tái)的主題分發(fā)方法,包括建立平臺(tái)內(nèi)核,使平臺(tái)內(nèi)核為所述資源管理平臺(tái)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián);建立主題分發(fā)器,主題分發(fā)器包括分發(fā)器主插件、分發(fā)器工具插件、調(diào)用器以及主題處理器;
使分發(fā)器主插件,對(duì)外提供主題服務(wù),并負(fù)責(zé)維護(hù)調(diào)用器;使分發(fā)器工具插件,向平臺(tái)內(nèi)核注冊(cè)主題記錄器,主題記錄器完成主題分發(fā)日志的記錄;使調(diào)用器成為所述分發(fā)器主插件定義的擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)是一個(gè)被命名的接口,調(diào)用器執(zhí)行主題的分發(fā),調(diào)用器的功能由在平臺(tái)內(nèi)核注冊(cè)的調(diào)用器插件實(shí)現(xiàn);使主題處理器創(chuàng)建主題隊(duì)列,并在主題隊(duì)列中選出相應(yīng)的主題通過(guò)所述調(diào)用器分發(fā)給監(jiān)聽器,所述監(jiān)聽器是主題的訂閱者。
所述分發(fā)器主插件為所述監(jiān)聽器提供注冊(cè)并管理監(jiān)聽器,所述每個(gè)監(jiān)聽器提供一個(gè)回調(diào),所述每個(gè)回調(diào)包括一種調(diào)用協(xié)議。
所述調(diào)用器執(zhí)行主題的分發(fā)是通過(guò)調(diào)用所述回調(diào)進(jìn)行的,每個(gè)調(diào)用器只能識(shí)別和調(diào)用與其調(diào)用協(xié)議相同的回調(diào)。
所述調(diào)用器插件將其功能服務(wù)定義為一個(gè)擴(kuò)展者,并向平臺(tái)內(nèi)核注冊(cè)一個(gè)擴(kuò)展,所述擴(kuò)展是一個(gè)命名連接,所述分發(fā)器主插件將其定義的擴(kuò)展點(diǎn)向平臺(tái)內(nèi)核注冊(cè),所述平臺(tái)內(nèi)核利用所述擴(kuò)展使所述擴(kuò)展者與所述擴(kuò)展點(diǎn)連接,從而使所述調(diào)用器實(shí)現(xiàn)所述調(diào)用器插件的功能和服務(wù)。
所述主題處理器創(chuàng)建的主題隊(duì)列中的每一個(gè)主題都有一個(gè)題目,所述每個(gè)監(jiān)聽器都要說(shuō)明其需要的主題題目,只有與監(jiān)聽器相同題目的主題才會(huì)被所述主題處理器分發(fā)到該監(jiān)聽器。
采用本發(fā)明的技術(shù)方案,由于本發(fā)明所述的資源管理平臺(tái)及方法具有平臺(tái)內(nèi)核,所以可以很方便的擴(kuò)展所述資源管理平臺(tái)各種插件的功能,實(shí)現(xiàn)各種插件功能的共享和調(diào)用;本發(fā)明所述的調(diào)用器在被相關(guān)插件定義后,可以執(zhí)行監(jiān)聽器(主體訂閱者)的回調(diào),實(shí)現(xiàn)主題的分發(fā);而本發(fā)明所述的主題處理器可以創(chuàng)建主題隊(duì)列,并將主題隊(duì)列的主題通過(guò)所述調(diào)用器分發(fā)給對(duì)應(yīng)的監(jiān)聽器(主題訂閱者)。另外,本發(fā)明所述的資源管理平臺(tái)及方法中的分發(fā)器工具插件能向平臺(tái)內(nèi)核注冊(cè)主題記錄器,而主題記錄器完成主題分發(fā)日志的記錄,以便管理者及時(shí)查看分發(fā)的記錄。
圖1示出了根據(jù)本發(fā)明的一實(shí)施例的具有主題分發(fā)功能的資源管理平臺(tái)的結(jié)構(gòu)圖;圖2示出了根據(jù)本發(fā)明的一實(shí)施例的資源管理平臺(tái)主題分發(fā)方法的流程圖。
具體實(shí)施例方式
本發(fā)明首先是提供一種具有主題分發(fā)功能的資源管理平臺(tái),參考圖1示出了其一個(gè)實(shí)例100的結(jié)構(gòu)圖,包括平臺(tái)內(nèi)核110,為所述資源管理平臺(tái)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián);主題分發(fā)器120,包括分發(fā)器主插件121,對(duì)外提供主題服務(wù),并負(fù)責(zé)維護(hù)調(diào)用器123;分發(fā)器工具插件122,向平臺(tái)內(nèi)核100注冊(cè)主題記錄器101,主題記錄器101完成主題分發(fā)日志的記錄;調(diào)用器123,調(diào)用器123是分發(fā)器主插件121定義的擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)是一個(gè)被命名的接口,調(diào)用器123執(zhí)行主題的分發(fā),調(diào)用器123的功能由在平臺(tái)內(nèi)核110注冊(cè)的調(diào)用器插件140實(shí)現(xiàn);主題處理器124,創(chuàng)建主題隊(duì)列,并在主題隊(duì)列中選出相應(yīng)的主題通過(guò)調(diào)用器123分發(fā)給監(jiān)聽器130,監(jiān)聽器130是主題的訂閱者。
分發(fā)器主插件121為監(jiān)聽器130提供注冊(cè)并管理監(jiān)聽器130,每個(gè)監(jiān)聽器130提供一個(gè)回調(diào)131,每個(gè)回調(diào)131包括一種調(diào)用協(xié)議。
調(diào)用器123執(zhí)行主題的分發(fā)是通過(guò)調(diào)用回調(diào)131進(jìn)行的,每個(gè)調(diào)用器123只能識(shí)別和調(diào)用與其調(diào)用協(xié)議相同的回調(diào)131。
調(diào)用器插件140將其功能服務(wù)定義為一個(gè)擴(kuò)展者104,并向平臺(tái)內(nèi)核注冊(cè)一個(gè)擴(kuò)展103,擴(kuò)展103是一個(gè)命名連接,分發(fā)器主插件121將其定義的擴(kuò)展點(diǎn)102向平臺(tái)內(nèi)核110注冊(cè),平臺(tái)內(nèi)核110利用擴(kuò)展103使擴(kuò)展者104與擴(kuò)展點(diǎn)102連接,從而使調(diào)用器123實(shí)現(xiàn)調(diào)用器插件140的功能和服務(wù)。
主題處理器124創(chuàng)建的主題隊(duì)列中的每一個(gè)主題都有一個(gè)題目,每個(gè)監(jiān)聽器130都要說(shuō)明其需要的主題題目,只有與監(jiān)聽器130相同題目的主題才會(huì)被主題處理器124分發(fā)到該監(jiān)聽器130。
另一方面,本發(fā)明還提供一種資源管理平臺(tái)的主題分發(fā)方法200,參考圖2所示,該方法包括202.建立平臺(tái)內(nèi)核110,使平臺(tái)內(nèi)核110為資源管理平臺(tái)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián)。
204.建立主題分發(fā)器120,主題分發(fā)器120包括分發(fā)器主插件121、分發(fā)器工具插件122、調(diào)用器123以及主題處理器124。
206.使分發(fā)器主插件121對(duì)外提供主題服務(wù),并負(fù)責(zé)維護(hù)調(diào)用器123。
208.使分發(fā)器工具插件122向平臺(tái)內(nèi)核110注冊(cè)主題記錄器101,主題記錄器101完成主題分發(fā)日志的記錄。
210.使調(diào)用器123成為分發(fā)器主插件121定義的擴(kuò)展點(diǎn),調(diào)用器123執(zhí)行主題的分發(fā),調(diào)用器123的功能由在平臺(tái)內(nèi)核110注冊(cè)的調(diào)用器插件140實(shí)現(xiàn)。
212.使主題處理器124創(chuàng)建主題隊(duì)列,并在主題隊(duì)列中選出相應(yīng)的主題通過(guò)調(diào)用器123分發(fā)給監(jiān)聽器130,監(jiān)聽器130是主題的訂閱者。
分發(fā)器主插件121為監(jiān)聽器130提供注冊(cè)并管理監(jiān)聽器130,每個(gè)監(jiān)聽器130提供一個(gè)回調(diào)131,每個(gè)回調(diào)131包括一種調(diào)用協(xié)議。
調(diào)用器123執(zhí)行主題的分發(fā)是通過(guò)調(diào)用回調(diào)131進(jìn)行的,每個(gè)調(diào)用器123只能識(shí)別和調(diào)用與其調(diào)用協(xié)議相同的回調(diào)131。
調(diào)用器插件140將其功能服務(wù)定義為一個(gè)擴(kuò)展者104,并向平臺(tái)內(nèi)核注冊(cè)一個(gè)擴(kuò)展103,擴(kuò)展103是一個(gè)命名連接,分發(fā)器主插件121將其定義的擴(kuò)展點(diǎn)102向平臺(tái)內(nèi)核110注冊(cè),平臺(tái)內(nèi)核110利用擴(kuò)展103使擴(kuò)展者104與擴(kuò)展點(diǎn)102連接,從而使調(diào)用器123實(shí)現(xiàn)調(diào)用器插件140的功能和服務(wù)。
主題處理器124創(chuàng)建的主題隊(duì)列中的每一個(gè)主題都有一個(gè)題目,每個(gè)監(jiān)聽器130都要說(shuō)明其需要的主題題目,只有與監(jiān)聽器130相同題目的主題才會(huì)被主題處理器124分發(fā)到該監(jiān)聽器130。
為了加深以上的理解,下面說(shuō)明一下所述具有主題分發(fā)功能的資源管理平臺(tái)及方法在應(yīng)用中產(chǎn)生的相關(guān)技術(shù)名稱的含義和作用在本發(fā)明中,平臺(tái)內(nèi)核(Core)是資源管理平臺(tái)的基礎(chǔ)。資源管理平臺(tái)是采用插件(Plugin)方式實(shí)現(xiàn),所有插件彼此獨(dú)立,平臺(tái)內(nèi)核負(fù)責(zé)維護(hù)所有插件及其插件定義的注冊(cè),平臺(tái)內(nèi)核還負(fù)責(zé)使插件及其插件定義之間產(chǎn)生關(guān)聯(lián)。
本發(fā)明的資源管理平臺(tái)采用插件機(jī)制,可以很方便地?cái)U(kuò)展平臺(tái)功能,而不需改動(dòng)已有的代碼。插件機(jī)制是依賴擴(kuò)展點(diǎn)(Extension Point)、擴(kuò)展者(Extender)和擴(kuò)展(Extension)實(shí)現(xiàn)的。
擴(kuò)展點(diǎn)(Extension Point)就是一個(gè)命名的接口。名字唯一標(biāo)識(shí)了該擴(kuò)展點(diǎn),而接口說(shuō)明了該擴(kuò)展點(diǎn)期望的功能規(guī)范。兩個(gè)不同的擴(kuò)展點(diǎn)可以具有同樣的接口,但不能有同樣的名字。如果一個(gè)插件期望其功能能夠被其他插件擴(kuò)展,則將此功能接口命名,定義為一個(gè)擴(kuò)展點(diǎn),而插件本身不需要實(shí)現(xiàn)此接口。例如,數(shù)據(jù)引擎(Data Engine)插件需要讀取某個(gè)數(shù)據(jù)源的數(shù)據(jù),但是不同的數(shù)據(jù)源(例如JDBC數(shù)據(jù)源和XML文檔數(shù)據(jù)源)具有不同的存取方式。數(shù)據(jù)引擎不期望依賴某種特定的實(shí)現(xiàn)讀取特定的數(shù)據(jù)源,因此定義了適配器(Adapter)擴(kuò)展點(diǎn)。數(shù)據(jù)引擎本身只操作適配器接口,并不負(fù)責(zé)適配器的實(shí)現(xiàn)。數(shù)據(jù)引擎將此擴(kuò)展點(diǎn)注冊(cè)給內(nèi)核之后,內(nèi)核負(fù)責(zé)將其與其他插件注冊(cè)的適配器實(shí)現(xiàn)關(guān)聯(lián),從而使數(shù)據(jù)引擎完全透明地訪問(wèn)適配器實(shí)現(xiàn)。
擴(kuò)展者(Extender)就是一個(gè)擴(kuò)展點(diǎn)接口的實(shí)現(xiàn)。擴(kuò)展者只關(guān)心實(shí)現(xiàn),而無(wú)須關(guān)心誰(shuí)會(huì)使用這個(gè)實(shí)現(xiàn)。如果兩個(gè)擴(kuò)展點(diǎn)定義了同樣的接口,那么擴(kuò)展者本身并不能確定它會(huì)被哪一個(gè)擴(kuò)展點(diǎn)使用。一個(gè)擴(kuò)展者可以實(shí)現(xiàn)多個(gè)擴(kuò)展點(diǎn)接口。擴(kuò)展者的實(shí)例由擴(kuò)展者工廠(Extender Home)創(chuàng)建。
擴(kuò)展(Extension)就是一個(gè)擴(kuò)展點(diǎn)和一個(gè)擴(kuò)展其接口的擴(kuò)展者的命名連接。一個(gè)擴(kuò)展包含以下信息一個(gè)唯一的名字,被擴(kuò)展的擴(kuò)展點(diǎn)的名字,以及實(shí)現(xiàn)此擴(kuò)展點(diǎn)接口的擴(kuò)展者工廠。如果一個(gè)插件期望擴(kuò)展其他插件的擴(kuò)展點(diǎn),則必須實(shí)現(xiàn)相應(yīng)的擴(kuò)展者,提供相應(yīng)的擴(kuò)展者工廠,并向內(nèi)核注冊(cè)相應(yīng)的擴(kuò)展。內(nèi)核負(fù)責(zé)將擴(kuò)展者與擴(kuò)展點(diǎn)連接,并在定義擴(kuò)展點(diǎn)的插件需要的時(shí)候,利用擴(kuò)展者工廠創(chuàng)建擴(kuò)展者實(shí)例,提供給此插件使用。通常將擴(kuò)展的名字也叫做擴(kuò)展所連接的擴(kuò)展者的名字。
主題分發(fā)器(Topic Dispatcher)是一個(gè)針對(duì)發(fā)布/訂閱(Publish andSubscribe)模型的特殊消息分發(fā)器。主題分發(fā)器管理所有待發(fā)布(Publish)的主題(Topic),并依賴調(diào)用器(Invoker)將其可靠地分發(fā)給相應(yīng)的監(jiān)聽器(Listener)。
主題(Topic)是一個(gè)公開發(fā)布的消息。主題分發(fā)器負(fù)責(zé)分發(fā)主題到相應(yīng)的監(jiān)聽器(Listener)。每個(gè)主題都具有一個(gè)唯一的名字。主題還必須具有一個(gè)題目(Subject),題目是確定主題訂閱者(監(jiān)聽器)的訂閱憑據(jù)。主題的內(nèi)容(Content)主題分發(fā)器并不關(guān)心,主題分發(fā)器只負(fù)責(zé)將主題的內(nèi)容分發(fā)到相應(yīng)的監(jiān)聽器,內(nèi)容的含義由監(jiān)聽器解釋。
監(jiān)聽器(Listener)是一個(gè)對(duì)某類主題感興趣的訂閱者。監(jiān)聽器是主題分發(fā)器維護(hù)的實(shí)體之一。主題分發(fā)器在接收到某個(gè)監(jiān)聽器感興趣的主題時(shí),負(fù)責(zé)通過(guò)調(diào)用器(Invoker)將該主題分發(fā)給此監(jiān)聽器。每個(gè)監(jiān)聽器都必須有一個(gè)可以唯一識(shí)別的名稱。
每一個(gè)監(jiān)聽器都必須說(shuō)明它所感興趣的題目(Subject)。每個(gè)主題(Topic)都擁有一個(gè)題目(Subject),只有與監(jiān)聽器相同題目的主題才會(huì)被分發(fā)到該監(jiān)聽器。不同的主題可以擁有相同的題目,不同的監(jiān)聽器也可以監(jiān)聽相同的題目。例如,監(jiān)聽器L1和監(jiān)聽器L2同時(shí)監(jiān)聽題目S1,那么當(dāng)兩個(gè)題目也同為S1的主題T1和T2發(fā)布時(shí),L1和L2分別都會(huì)接收到T1和T2。
每一個(gè)監(jiān)聽器都必須提供一個(gè)回調(diào)(Callback),主題分發(fā)器就是通過(guò)調(diào)用回調(diào)將主題分發(fā)給此監(jiān)聽器的?!盎卣{(diào)”是一個(gè)廣義的概念,它并不僅僅指“回調(diào)函數(shù)”?;卣{(diào)的具體含義由調(diào)用器(Invoker)解釋。例如,一個(gè)回調(diào)可能是一個(gè)HTTP URL,而執(zhí)行此回調(diào)的調(diào)用器的功能是將主題以HTTP表單的形式提交到此URL。不同的監(jiān)聽器可以使用相同的回調(diào)。
調(diào)用器(Invoker)是主題分發(fā)器定義的用于解釋和調(diào)用監(jiān)聽器回調(diào)(Listener Callback)的擴(kuò)展點(diǎn)接口。主題分發(fā)器雖然負(fù)責(zé)維護(hù)監(jiān)聽器,但并不實(shí)現(xiàn)對(duì)監(jiān)聽器回調(diào)的調(diào)用,而是將調(diào)用交給其他插件實(shí)現(xiàn)的調(diào)用器處理。
每個(gè)調(diào)用器都只支持符合某種特定規(guī)則的回調(diào),這種規(guī)則稱為調(diào)用協(xié)議(Protocol)。例如,表單調(diào)用器將參數(shù)以HTTP表單的形式提交給一個(gè)HTTP URL類型的回調(diào);Web服務(wù)調(diào)用器則負(fù)責(zé)調(diào)用一個(gè)Web服務(wù)形式的回調(diào);而MQ調(diào)用器則是將主題分發(fā)到MQ類型的回調(diào)所指定的消息隊(duì)列中。
每個(gè)調(diào)用器只能識(shí)別和調(diào)用與其協(xié)議相同的回調(diào);反之,每個(gè)回調(diào)也必須遵循與其協(xié)議相同的調(diào)用器規(guī)定的調(diào)用規(guī)則。
主題分發(fā)器向某個(gè)監(jiān)聽器分發(fā)主題時(shí),將按照此監(jiān)聽器提供的回調(diào)規(guī)定的協(xié)議查找相應(yīng)的調(diào)用器,然后利用此調(diào)用器完成此主題到此監(jiān)聽器的分發(fā)。
當(dāng)主題分發(fā)器需要調(diào)用一個(gè)調(diào)用器分發(fā)某個(gè)主題時(shí),會(huì)傳給該調(diào)用器以下參數(shù)一、調(diào)用器要調(diào)用的回調(diào)(待分發(fā)主題所關(guān)聯(lián)的監(jiān)聽器回調(diào));二、待分發(fā)主題所關(guān)聯(lián)的監(jiān)聽器名稱;三、待分發(fā)主題的題目;四、待分發(fā)主題的內(nèi)容(Content)。
調(diào)用器可以選擇將全部參數(shù)或部分參數(shù)傳遞給回調(diào)。對(duì)于使用相同回調(diào)的多個(gè)監(jiān)聽器的情況,可能必須要求調(diào)用器將監(jiān)聽器名稱和主題題目傳遞給回調(diào),否則可能導(dǎo)致回調(diào)無(wú)法區(qū)別觸發(fā)回調(diào)的題目和監(jiān)聽器。
主題分發(fā)器不關(guān)心調(diào)用器與回調(diào)溝通的細(xì)節(jié),但是必須關(guān)心調(diào)用器的返回值。如果一個(gè)調(diào)用器返回True,則意味著該主題已經(jīng)被該調(diào)用器所調(diào)用的回調(diào)接受(Accept),主體分發(fā)器將認(rèn)為該主題已成功分發(fā),從而停止該主題的分發(fā);反之,如果調(diào)用器返回False,則意味著該主題被此回調(diào)拒絕(Reject),主體分發(fā)器將繼續(xù)嘗試將此主題分發(fā)給其他監(jiān)聽器。
如果一個(gè)調(diào)用器因?yàn)楦鞣N原因不能順利調(diào)用回調(diào)(例如調(diào)用協(xié)議錯(cuò)誤,或者無(wú)法聯(lián)系回調(diào)),那么此調(diào)用器應(yīng)拋出調(diào)用器異常(InvokerException);如果一個(gè)調(diào)用器成功調(diào)用了回調(diào),但是回調(diào)出現(xiàn)處理錯(cuò)誤(例如回調(diào)發(fā)現(xiàn)了無(wú)效的主題內(nèi)容),則此調(diào)用器應(yīng)拋出回調(diào)異常(CallbackException)。對(duì)于調(diào)用器異常,主題分發(fā)器會(huì)停止對(duì)此監(jiān)聽器的分發(fā),直至監(jiān)聽器再次被顯式啟動(dòng)(Start);而對(duì)于回調(diào)異常,主體分發(fā)器仍會(huì)將其他主題繼續(xù)分發(fā)給此監(jiān)聽器。
分發(fā)器主插件(Topic Dispatcher)是主題分發(fā)器的核心插件。它對(duì)外提供主題服務(wù)(Topic Service),并負(fù)責(zé)維護(hù)調(diào)用器。
主題服務(wù)(Topic Service)是主題分發(fā)器對(duì)外開放的服務(wù)接口,它擴(kuò)展了平臺(tái)內(nèi)核的服務(wù)擴(kuò)展點(diǎn)。主題服務(wù)主要包括
活動(dòng)主題管理,活動(dòng)主題(Active Topic)是指已經(jīng)發(fā)布到主題分發(fā)器、但尚未分發(fā)(即尚未被任何監(jiān)聽器接受)的主題(Topic)?;顒?dòng)主題管理包括活動(dòng)主題查詢和刪除。刪除一個(gè)活動(dòng)主題將導(dǎo)致此主題被永久刪除,停止分發(fā)。
活動(dòng)調(diào)用器查詢,活動(dòng)調(diào)用器(Active Invoker)是指已經(jīng)連接到主題分發(fā)器調(diào)用器擴(kuò)展點(diǎn)的調(diào)用器。活動(dòng)調(diào)用器不同于調(diào)用器,它只提供了調(diào)用器的描述信息(名稱、協(xié)議、說(shuō)明等),而并不提供調(diào)用回調(diào)的功能。通過(guò)查詢活動(dòng)調(diào)用器,外部應(yīng)用就可以知道目前主題分發(fā)器可以支持的回調(diào)協(xié)議,從而定義適當(dāng)?shù)谋O(jiān)聽器。
監(jiān)聽器注冊(cè)/注銷,由于監(jiān)聽器是一個(gè)實(shí)體,它不包含代碼實(shí)現(xiàn),因此可以直接向主題分發(fā)器注冊(cè)或注銷(Add/Remove)。
監(jiān)聽器啟動(dòng)/停止,主題分發(fā)器并不會(huì)向所有的監(jiān)聽器分發(fā)消息,而是只有當(dāng)一個(gè)監(jiān)聽器啟動(dòng)之后才向其分發(fā)消息。通常監(jiān)聽器的回調(diào)都是由外部應(yīng)用實(shí)現(xiàn)的,而外部應(yīng)用并不是總處于活動(dòng)狀態(tài),因此需要通過(guò)啟動(dòng)/停止(Start/Stop)操作向主題分發(fā)器通知其是否活動(dòng)。例如,一個(gè)外部應(yīng)用向主題分發(fā)器注冊(cè)了一個(gè)使用Web服務(wù)回調(diào)的監(jiān)聽器,那么當(dāng)此應(yīng)用啟動(dòng)時(shí)(即用于回調(diào)的Web服務(wù)可用時(shí)),該應(yīng)用應(yīng)當(dāng)通知主題分發(fā)器啟動(dòng)相應(yīng)的監(jiān)聽器;而在此應(yīng)用退出時(shí),通知主題分發(fā)器停止相應(yīng)的監(jiān)聽器。
主題分發(fā)器在調(diào)用回調(diào)的過(guò)程中,如果出現(xiàn)調(diào)用器異常,也會(huì)認(rèn)為此回調(diào)不可用,并停止其對(duì)應(yīng)的監(jiān)聽器。主題分發(fā)器負(fù)責(zé)將監(jiān)聽器停止后發(fā)布的與其關(guān)聯(lián)的主題儲(chǔ)存,并且在監(jiān)聽器再次啟動(dòng)時(shí)將這些主題分發(fā)給此監(jiān)聽器。監(jiān)聽器不會(huì)因?yàn)橥V苟鴣G失其監(jiān)聽的主題。
活動(dòng)監(jiān)聽器(Active Listener)是指已經(jīng)注冊(cè)給主題分發(fā)器的監(jiān)聽器。活動(dòng)監(jiān)聽器除了提供它所對(duì)應(yīng)的監(jiān)聽器信息(名稱,題目,回調(diào))外,還提供了監(jiān)聽器是否已啟動(dòng)的標(biāo)志。應(yīng)用可以通過(guò)查詢活動(dòng)監(jiān)聽器取得監(jiān)聽器的狀態(tài)。
如前所述,分發(fā)器主插件本身并不實(shí)現(xiàn)任何調(diào)用器,而只是定義了調(diào)用器擴(kuò)展點(diǎn),調(diào)用器由其他插件實(shí)現(xiàn)。如果需要為分發(fā)器主插件添加新的調(diào)用器,只需要將擴(kuò)展此擴(kuò)展點(diǎn)的調(diào)用器插件注冊(cè)給內(nèi)核即可。
分發(fā)器工具插件(Topic Dispatcher Utility)是主題分發(fā)器的輔助插件,它依賴于分發(fā)器主插件。分發(fā)器工具插件完成以下三個(gè)功能一、將主題分發(fā)器與資源管理器(Resource Manager)相連,以使資源管理器能夠使用主題分發(fā)器的功能發(fā)布訂閱通知;二、向平臺(tái)內(nèi)核注冊(cè)缺省的主題記錄器(Topic Logger),以完成主題分發(fā)日志的記錄功能;三、為主題分發(fā)器插件的調(diào)用器擴(kuò)展點(diǎn)提供一組缺省的調(diào)用器。注意,所述的資源管理器是資源管理平臺(tái)的一個(gè)插件,其作用是向主題分發(fā)器輸入主題,還可以實(shí)現(xiàn)一個(gè)主題的公開發(fā)布,并供感興趣的訂閱者查詢。
發(fā)布器(Publisher)是資源管理器定義的用于發(fā)布主題的擴(kuò)展點(diǎn)接口。發(fā)布器負(fù)責(zé)將一個(gè)主題公開發(fā)布,并供感興趣的訂閱者查詢。主體分發(fā)器工具插件向內(nèi)核注冊(cè)了一個(gè)發(fā)布器的擴(kuò)展,從而將主題分發(fā)器與資源管理器有機(jī)地結(jié)合起來(lái)。
主題記錄器(Topic Logger)是由分發(fā)器工具插件在平臺(tái)內(nèi)核注冊(cè)的,它只記錄主題分發(fā)器的日志,而不處理來(lái)自其他發(fā)起者(Originator)的日志。
缺省的主題記錄器將主題的分發(fā)日志記錄在指定目錄的文件,每個(gè)主題對(duì)應(yīng)一個(gè)日志文件??梢耘渲弥黝}記錄器使得其只保留尚未分發(fā)的主題日志,而不保留已成功分發(fā)的主題日志。
主題日志會(huì)記錄完整的主題分發(fā)過(guò)程。如果一個(gè)主題被反復(fù)分發(fā),后來(lái)的分發(fā)過(guò)程會(huì)添加到原來(lái)的分發(fā)過(guò)程之后。可以禁用缺省主題記錄器。也可以向內(nèi)核注冊(cè)新的記錄器擴(kuò)展以完成主題分發(fā)日志的記錄。
分發(fā)器工具插件提供并注冊(cè)了一組常用的調(diào)用器擴(kuò)展,以方便應(yīng)用的開發(fā)。這包括一、Web服務(wù)調(diào)用器,用于以Web服務(wù)形式存在的回調(diào);二、表單調(diào)用器,用于接受HTTP表單提交的回調(diào);三、MQ調(diào)用器,用于將主題發(fā)布到某個(gè)回調(diào)指定的消息隊(duì)列中。
主題處理器(Topic Processor)是主題分發(fā)器用于分發(fā)主題的構(gòu)件。主題處理器本身不是一個(gè)插件。
主題隊(duì)列(Topic Queue)是主題分發(fā)器用于主題排隊(duì)的隊(duì)列。當(dāng)分發(fā)器工具插件的發(fā)布器接收到資源管理器的主題后,首先會(huì)創(chuàng)建對(duì)應(yīng)的活動(dòng)主題,然后將此主題放入主題隊(duì)列排隊(duì)等待處理。
另外,當(dāng)一個(gè)監(jiān)聽器啟動(dòng)時(shí),主題分發(fā)器也會(huì)查找是否有與此監(jiān)聽器相關(guān)的活動(dòng)主題,并將這些主題也放入主題隊(duì)列等待處理。這保證了一個(gè)監(jiān)聽器在停止后不會(huì)丟失監(jiān)聽的主題。一個(gè)正在排隊(duì)的主題可以被刪除。
主題處理器負(fù)責(zé)從主題隊(duì)列中取出下一個(gè)待處理的主題,然后輪詢與之相關(guān)的已啟動(dòng)監(jiān)聽器,將主題通過(guò)調(diào)用器分發(fā)給監(jiān)聽器。
分發(fā)過(guò)程中,如果出現(xiàn)調(diào)用器異常,則停止對(duì)應(yīng)的監(jiān)聽器;如果主題一旦被某個(gè)監(jiān)聽器接受(Accept),則停止分發(fā)此主題,并將此主題對(duì)應(yīng)的活動(dòng)主題刪除。
主題處理器支持啟動(dòng)多個(gè)實(shí)例并發(fā)執(zhí)行。當(dāng)主題處理器并發(fā)執(zhí)行處理主題時(shí),有可能導(dǎo)致監(jiān)聽器回調(diào)也被異步并發(fā)調(diào)用。因此如果啟用了主題處理器的并發(fā)執(zhí)行機(jī)制,那么監(jiān)聽器回調(diào)也必須相應(yīng)地支持異步并發(fā)調(diào)用。
為了更好地?cái)U(kuò)展本發(fā)明的資源管理平臺(tái)的應(yīng)用性,本發(fā)明還在資源管理平臺(tái)對(duì)外提供了兩種接口程序級(jí)接口(Program Level Interface)和應(yīng)用級(jí)接口(ApplicationLevel Interface)。
程序級(jí)接口(Program Level Interface)是指平臺(tái)開放給其他在代碼一級(jí)調(diào)用平臺(tái)的程序的接口。程序級(jí)接口由內(nèi)核接口和各種插件服務(wù)接口構(gòu)成,程序級(jí)接口供平臺(tái)內(nèi)核和插件使用。通過(guò)調(diào)用程序級(jí)接口,其他該資源管理平臺(tái)內(nèi)的程序可以使用平臺(tái)的所有功能。由于程序級(jí)接口是在代碼一級(jí)調(diào)用,因此要求調(diào)用的程序與平臺(tái)工作在同一虛擬機(jī)內(nèi),這種程序稱為“受限應(yīng)用(Limited Application)”。受限應(yīng)用雖然能使用平臺(tái)的全部功能,但由于它與平臺(tái)共享虛擬機(jī)資源,因此不建議有過(guò)多的受限應(yīng)用或者過(guò)于消耗資源的受限應(yīng)用——這也就是受限應(yīng)用之所以稱為“受限”應(yīng)用的原因。受限應(yīng)用完成平臺(tái)管理員(Platform Administrator)的功能。比如,平臺(tái)的管理控制臺(tái)(Console) 就是一個(gè)受限應(yīng)用。
應(yīng)用級(jí)接口(Application Level Interface)是一組平臺(tái)對(duì)外開放的Web服務(wù)集合。應(yīng)用級(jí)接口只提供有限的部分功能,例如活動(dòng)任務(wù)管理、轉(zhuǎn)換器操作、監(jiān)聽器啟動(dòng)/停止等。應(yīng)用級(jí)接口供平臺(tái)外部的調(diào)用使用。
調(diào)用應(yīng)用級(jí)接口的程序稱為“一般應(yīng)用(Normal Application)”。一般應(yīng)用是平臺(tái)的資源服務(wù)客戶(Resource Service Client),即資源提供者或資源使用者(消費(fèi)者、接收者、訂閱者)。
本發(fā)明中還提供一種接口,稱為代理接口。如果某個(gè)一般應(yīng)用期望調(diào)用程序級(jí)接口提供的功能,那么可以使用一個(gè)輕量級(jí)的受限應(yīng)用代理完成該受限應(yīng)用對(duì)外開放一個(gè)Web服務(wù),然后調(diào)用程序級(jí)接口完成此Web服務(wù)的功能。這種接口稱為“代理接口(Proxy Interface)”。代理接口也可以用于實(shí)現(xiàn)其他類型的接口,例如,符合RMI(Remote Method Invocation)規(guī)范的遠(yuǎn)程接口(Remote Interface)。代理接口由具體的應(yīng)用實(shí)現(xiàn),平臺(tái)本身不予提供。
本技術(shù)領(lǐng)域中的普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,以上的實(shí)施例僅是用來(lái)說(shuō)明本發(fā)明,而并非用作為對(duì)本發(fā)明的限定,只要在本發(fā)明的實(shí)質(zhì)精神范圍內(nèi),對(duì)以上實(shí)施例的變化、變型都將落在本發(fā)明的權(quán)利要求書范圍內(nèi)。
權(quán)利要求
1.一種具有主題分發(fā)功能的資源管理平臺(tái),其特征在于,包括平臺(tái)內(nèi)核,為所述資源管理平臺(tái)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián);主題分發(fā)器,包括分發(fā)器主插件,對(duì)外提供主題服務(wù),并負(fù)責(zé)維護(hù)調(diào)用器;分發(fā)器工具插件,向平臺(tái)內(nèi)核注冊(cè)主題記錄器,主題記錄器完成主題分發(fā)日志的記錄;調(diào)用器,調(diào)用器是所述分發(fā)器主插件定義的擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)是一個(gè)被命名的接口,所述調(diào)用器執(zhí)行主題的分發(fā),所述調(diào)用器的功能由在平臺(tái)內(nèi)核注冊(cè)的調(diào)用器插件實(shí)現(xiàn);主題處理器,創(chuàng)建主題隊(duì)列,并在主題隊(duì)列中選出相應(yīng)的主題通過(guò)所述調(diào)用器分發(fā)給監(jiān)聽器,所述監(jiān)聽器是主題的訂閱者。
2.如權(quán)利要求1所述資源管理平臺(tái),其特征在于,所述分發(fā)器主插件為所述監(jiān)聽器提供注冊(cè)并管理監(jiān)聽器,所述每個(gè)監(jiān)聽器提供一個(gè)回調(diào),所述每個(gè)回調(diào)包括一種調(diào)用協(xié)議。
3.如權(quán)利要求2所述資源管理平臺(tái),其特征在于,所述調(diào)用器執(zhí)行主題的分發(fā)是通過(guò)調(diào)用所述回調(diào)進(jìn)行的,每個(gè)調(diào)用器只能識(shí)別和調(diào)用與其調(diào)用協(xié)議相同的回調(diào)。
4.如權(quán)利要求1所述資源管理平臺(tái),其特征在于,所述調(diào)用器插件將其功能服務(wù)定義為一個(gè)擴(kuò)展者,并向平臺(tái)內(nèi)核注冊(cè)一個(gè)擴(kuò)展,所述擴(kuò)展是一個(gè)命名連接,所述分發(fā)器主插件將其定義的擴(kuò)展點(diǎn)向平臺(tái)內(nèi)核注冊(cè),所述平臺(tái)內(nèi)核利用所述擴(kuò)展使所述擴(kuò)展者與所述擴(kuò)展點(diǎn)連接,從而使所述調(diào)用器實(shí)現(xiàn)所述調(diào)用器插件的功能和服務(wù)。
5.如權(quán)利要求1所述資源管理平臺(tái),其特征在于,所述主題處理器創(chuàng)建的主題隊(duì)列中的每一個(gè)主題都有一個(gè)題目,所述每個(gè)監(jiān)聽器都要說(shuō)明其需要的主題題目,只有與監(jiān)聽器相同題目的主題才會(huì)被所述主題處理器分發(fā)到該監(jiān)聽器。
6.一種資源管理平臺(tái)的主題分發(fā)方法,其特征在于,包括建立平臺(tái)內(nèi)核,使平臺(tái)內(nèi)核為所述資源管理平臺(tái)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián);建立主題分發(fā)器,主題分發(fā)器包括分發(fā)器主插件、分發(fā)器工具插件、調(diào)用器以及主題處理器;使分發(fā)器主插件,對(duì)外提供主題服務(wù),并負(fù)責(zé)維護(hù)調(diào)用器;使分發(fā)器工具插件,向平臺(tái)內(nèi)核注冊(cè)主題記錄器,主題記錄器完成主題分發(fā)日志的記錄;使調(diào)用器成為所述分發(fā)器主插件定義的擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)是一個(gè)被命名的接口,調(diào)用器執(zhí)行主題的分發(fā),調(diào)用器的功能由在平臺(tái)內(nèi)核注冊(cè)的調(diào)用器插件實(shí)現(xiàn);使主題處理器創(chuàng)建主題隊(duì)列,并在主題隊(duì)列中選出相應(yīng)的主題通過(guò)所述調(diào)用器分發(fā)給監(jiān)聽器,所述監(jiān)聽器是主題的訂閱者。
7.如權(quán)利要求6所述的主題分發(fā)方法,其特征在于,所述分發(fā)器主插件為所述監(jiān)聽器提供注冊(cè)并管理監(jiān)聽器,所述每個(gè)監(jiān)聽器提供一個(gè)回調(diào),所述每個(gè)回調(diào)包括一種調(diào)用協(xié)議。
8.如權(quán)利要求7所述的主題分發(fā)方法,其特征在于,所述調(diào)用器執(zhí)行主題的分發(fā)是通過(guò)調(diào)用所述回調(diào)進(jìn)行的,每個(gè)調(diào)用器只能識(shí)別和調(diào)用與其調(diào)用協(xié)議相同的回調(diào)。
9.如權(quán)利要求6所述的主題分發(fā)方法,其特征在于,所述調(diào)用器插件將其功能服務(wù)定義為一個(gè)擴(kuò)展者,并向平臺(tái)內(nèi)核注冊(cè)一個(gè)擴(kuò)展,所述擴(kuò)展是一個(gè)命名連接,所述分發(fā)器主插件將其定義的擴(kuò)展點(diǎn)向平臺(tái)內(nèi)核注冊(cè),所述平臺(tái)內(nèi)核利用所述擴(kuò)展使所述擴(kuò)展者與所述擴(kuò)展點(diǎn)連接,從而使所述調(diào)用器實(shí)現(xiàn)所述調(diào)用器插件的功能和服務(wù)。
10.如權(quán)利要求6所述的主題分發(fā)方法,其特征在于,所述主題處理器創(chuàng)建的主題隊(duì)列中的每一個(gè)主題都有一個(gè)題目,所述每個(gè)監(jiān)聽器都要說(shuō)明其需要的主題題目,只有與監(jiān)聽器相同題目的主題才會(huì)被所述主題處理器分發(fā)到該監(jiān)聽器。
全文摘要
本發(fā)明揭示了一種具有主題分發(fā)功能的資源管理平臺(tái),包括平臺(tái)內(nèi)核,為相關(guān)的插件及其插件的定義提供注冊(cè)并使之關(guān)聯(lián);主題分發(fā)器,包括分發(fā)器主插件和分發(fā)器工具插件,分發(fā)器主插件對(duì)外提供主題服務(wù),分發(fā)器工具插件實(shí)現(xiàn)記錄主題分發(fā)日志的功能,主題分發(fā)器還包括調(diào)用器和主題處理器,調(diào)用器執(zhí)行主題的分發(fā),主題處理器創(chuàng)建主題隊(duì)列并控制主題的分發(fā)。本發(fā)明還揭示了一種資源管理平臺(tái)的主題分發(fā)方法。本發(fā)明可以擴(kuò)展各種相關(guān)插件,實(shí)現(xiàn)各種插件功能的共享和調(diào)用,本發(fā)明可以創(chuàng)建主題隊(duì)列,并將主題隊(duì)列的主題通過(guò)調(diào)用器分發(fā)給對(duì)應(yīng)的監(jiān)聽器(主題訂閱者)。另外,本發(fā)明還具有主題分發(fā)日志的記錄功能,以便管理者及時(shí)查看分發(fā)的記錄。
文檔編號(hào)H04L29/08GK101064619SQ20071004127
公開日2007年10月31日 申請(qǐng)日期2007年5月25日 優(yōu)先權(quán)日2007年5月25日
發(fā)明者秦克明, 孫圭寧, 高念高 申請(qǐng)人:上海眾恒信息產(chǎn)業(yè)有限公司