專利名稱:組件的分布式部署系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及組件部署技術(shù),具體而言,涉及組件的分布式部署系統(tǒng)和方法。
背景技術(shù):
基于組件編程一直是增強(qiáng)軟件可重用性、擴(kuò)展性、提高軟件開發(fā)效率及質(zhì)量的一個(gè)重要方法,但是對(duì)于不同語(yǔ)言、不同平臺(tái)往往需要不同的組件模型,不同實(shí)現(xiàn)模型的組件間無(wú)法直接交互。SCA的目的是使用戶在構(gòu)建企業(yè)應(yīng)用時(shí)有一個(gè)不再直接面對(duì)具體的技術(shù)細(xì)節(jié)的層次,而是通過服務(wù)組件的方式來(lái)構(gòu)建應(yīng)用。這種方式也使得客戶的企業(yè)應(yīng)用具有良好的分層架構(gòu),能夠很好的分離應(yīng)用的業(yè)務(wù)邏輯和IT邏輯,不但易于應(yīng)用的構(gòu)建,也易于應(yīng)用的更改和部署。SCA全稱Service Component Architecture,S卩服務(wù)組件框架。服務(wù)組件體系結(jié)構(gòu)(SCA)是一個(gè)規(guī)范,它描述用于使用SOA構(gòu)建應(yīng)用程序和系統(tǒng)的模型。SCA 可大大簡(jiǎn)化使用SOA進(jìn)行的應(yīng)用程序開發(fā)和實(shí)現(xiàn)工作,已成為SOA體系架構(gòu)中最重要的規(guī)范之一。一個(gè)組件通常由下列屬性描述服務(wù)描述了該類型的組件所能提供的功能;引用描述了該類型的組件相關(guān)功能的依賴性;屬性定義了配置參數(shù),控制程序邏輯如何實(shí)現(xiàn),例如,支付服務(wù)中使用何種貨幣;策略描述了組件行為策略,主要有兩種策略實(shí)現(xiàn)策略對(duì)組件實(shí)現(xiàn)施加影響,例如事務(wù)、監(jiān)視以及日志;互動(dòng)策略定義組件如何互動(dòng),例如安全。如圖1所示,一個(gè)典型的組件100包括組件屬性102、組件策略、服務(wù)106和引用 108。一個(gè)組件可以使用任何用戶想要的編程語(yǔ)言去實(shí)現(xiàn),例如用BPEL去實(shí)現(xiàn)業(yè)務(wù)流程控制,XSLT實(shí)現(xiàn)轉(zhuǎn)換,RUBY來(lái)編寫腳本,也可以使用純JAVA。這些服務(wù)、引用、屬性以及策略如何去定義界定了一個(gè)組件的是具體實(shí)現(xiàn)類型。組件是最基本的單元,實(shí)際企業(yè)應(yīng)用中,很少有如此簡(jiǎn)單的業(yè)務(wù)通過一個(gè)單一的組件即可滿足,而是通過將多個(gè)組件組裝在一起,形成復(fù)合組件,還可以將復(fù)合組件和單一組件繼續(xù)組合,通過不斷組裝、重用已有組件,形成更大粒度的組件,滿足更高層面、更復(fù)雜的業(yè)務(wù)需求,真正實(shí)現(xiàn)軟件人一直追求的搭積木一樣構(gòu)建應(yīng)用的夢(mèng)想。隨著組件被不斷的組裝和復(fù)用,組件間隨之產(chǎn)生越來(lái)越復(fù)雜的依賴關(guān)系。最簡(jiǎn)單的部署方案就是將這些有依賴關(guān)系的組件全部部署在一個(gè)服務(wù)器節(jié)點(diǎn)上,但隨著組件數(shù)量的增多以及不同組件對(duì)應(yīng)用服務(wù)器的要求各有不同,集中部署往往無(wú)法保證組件所提供服務(wù)的質(zhì)量(高并發(fā)性和高可用性)。此時(shí)一般采取的方案是根據(jù)組件對(duì)服務(wù)器的性能要求,將組件部署到性能指標(biāo)相匹配的服務(wù)器上,比如做成本運(yùn)算的組件相比一般網(wǎng)頁(yè)檢索的組件來(lái)說就需要性能更好的服務(wù)器。另外一種情況則是由于被組裝的組件屬于不同的部門或者組織,處于保護(hù)組件版權(quán)或者為了便于就近維護(hù)和管理組件,以及為了組件能夠就近和本地?cái)?shù)據(jù)庫(kù)及其他遺留系統(tǒng)交互,各部門及組織的組件一般會(huì)被部署到本地的服務(wù)器上。基于上述的分析,復(fù)雜的有依賴關(guān)系的組件在特定的業(yè)務(wù)場(chǎng)景需要分布部署到不同的服務(wù)器節(jié)點(diǎn)上,這就需要解決組件分布式部署的一序列問題,如組件依賴關(guān)系分析,透明部署,錯(cuò)誤恢復(fù)等。
SCA規(guī)范的參考實(shí)現(xiàn)Tuscany項(xiàng)目中通過域管理器,可以系統(tǒng)的管理組件分布式部署。具體配置的時(shí)候,物理部署包(contribution)、組件組裝配置文件(composite)、運(yùn)行節(jié)點(diǎn)(Node)、組件組裝配置文件部署配置(Cloud)等均須手工注冊(cè),這不但增加了軟件的運(yùn)維成本,還容易出錯(cuò),即服務(wù)器真正運(yùn)行的狀態(tài)和配置容易出現(xiàn)不一致。另外在組件實(shí)例管理方面,現(xiàn)有技術(shù)存在一個(gè)問題,就是一旦通過域管理器將組件組裝配置文件注冊(cè)到特定的運(yùn)行節(jié)點(diǎn),則節(jié)點(diǎn)啟動(dòng)時(shí),相應(yīng)的組件實(shí)例便被創(chuàng)建,而不是基于組件間的依賴關(guān)系去動(dòng)態(tài)創(chuàng)建和啟動(dòng)相應(yīng)的組件實(shí)例,這就造成有些根本就沒有被引用的組件也會(huì)被創(chuàng)建并啟動(dòng)服務(wù),造成寶貴的服務(wù)器資源浪費(fèi)。同樣當(dāng)某個(gè)組件停止運(yùn)行時(shí),其單線依賴的組件實(shí)例也不能自動(dòng)停止服務(wù)并銷毀實(shí)例,而那些反向依賴此組件的組件也無(wú)法做相應(yīng)的處理(比如也采取停止服務(wù)的策略)。此外在分布式環(huán)境中,有時(shí)根據(jù)安全及管理需要會(huì)修改服務(wù)器節(jié)點(diǎn)的配置,現(xiàn)在的技術(shù)框架在處理這類問題時(shí),除了要求人工去重啟部署在被修改配置的服務(wù)器節(jié)點(diǎn)上的所有組件,還必須通過人工重啟所有引用了這些組件的其他組件,這些組件可能分布在不同的服務(wù)器節(jié)點(diǎn)上,在組件間有復(fù)雜依賴關(guān)系時(shí),這是一件非常困難的工作,管理成本很高,導(dǎo)致管理員往往會(huì)重啟所有服務(wù)器,導(dǎo)致其他本可以正常運(yùn)行的服務(wù)中斷。因此,需要一種新的組件部署技術(shù),可以實(shí)現(xiàn)在分布式環(huán)境下對(duì)有復(fù)雜依賴關(guān)系的組件的方便部署和對(duì)實(shí)例的精細(xì)化管理,同時(shí)實(shí)現(xiàn)按需創(chuàng)建和啟動(dòng),避免對(duì)整體系統(tǒng)的影響。
發(fā)明內(nèi)容
本發(fā)明正是基于上述問題,提出了一種新的組件部署技術(shù),可以實(shí)現(xiàn)在分布式環(huán)境下對(duì)有復(fù)雜依賴關(guān)系的組件的方便部署和對(duì)實(shí)例的精細(xì)化管理,同時(shí)實(shí)現(xiàn)按需創(chuàng)建和啟動(dòng),避免對(duì)整體系統(tǒng)的影響。有鑒于此,本發(fā)明提出了一種組件的分布式部署系統(tǒng),包括客戶端、存儲(chǔ)裝置和服務(wù)器,其中,所述客戶端包括第一生成模塊,利用配置完成的組件項(xiàng)目生成組件部署包; 第一通信模塊,連接至所述存儲(chǔ)裝置,用于將部署信息發(fā)送至所述存儲(chǔ)裝置,所述部署信息包括所述組件項(xiàng)目的信息、所述組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及所述組件部署包的信息;所述存儲(chǔ)裝置,連接至所述客戶端和所述服務(wù)器,存儲(chǔ)所述部署信息;所述服務(wù)器包括第二通信模塊,連接至所述客戶端,用于接收所述組件部署包;掃描模塊,掃描所述第二通信模塊接收到的所述組件部署包,并獲取所述組件部署包中的組件的狀態(tài)屬性;部署模塊,在所述狀態(tài)屬性為靜態(tài)的情況下,所述組件為靜態(tài)組件,將所述靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),在所述狀態(tài)屬性為動(dòng)態(tài)的情況下,所述組件為動(dòng)態(tài)組件,將所述動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并將所述組件與所述服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系存儲(chǔ)在所述存儲(chǔ)裝置中;創(chuàng)建模塊,為組件創(chuàng)建實(shí)例。在該技術(shù)方案中,客戶端為組件生成部署包后,由服務(wù)器對(duì)包中的組件進(jìn)行分析,若為靜態(tài)組件,則可以自行生成實(shí)例, 對(duì)系統(tǒng)無(wú)影響,若為動(dòng)態(tài)組件,則常常與其他組件有著復(fù)雜的依賴關(guān)系,需要進(jìn)行記錄,如將組件的標(biāo)識(shí)與被部署的節(jié)點(diǎn)的標(biāo)識(shí)進(jìn)行關(guān)聯(lián)后存儲(chǔ)這兩者之間的對(duì)應(yīng)關(guān)系,則后續(xù)可以通過查詢?cè)搶?duì)應(yīng)關(guān)系,在相應(yīng)的節(jié)點(diǎn)上創(chuàng)建相應(yīng)的動(dòng)態(tài)組件實(shí)例。同時(shí),通過將組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ),便于在組件出現(xiàn)問題或需要進(jìn)行檢測(cè)、重啟等時(shí),對(duì)單個(gè)組件或部分組件進(jìn)行操作,而不必對(duì)整個(gè)系統(tǒng)進(jìn)行重啟,減少對(duì)其他組件的影響,降低系統(tǒng)的維護(hù)成本。在上述技術(shù)方案中,優(yōu)選地,所述客戶端的所述第一通信模塊還用于將所述組件部署包發(fā)送至服務(wù)器節(jié)點(diǎn)上。在該技術(shù)方案中,客戶端在生成部署包后,后續(xù)的工作如部署通常由服務(wù)器來(lái)完成,并且首先需要服務(wù)器從客戶端獲取其生成的部署包,但也可以由客戶端在生成部署包后,直接將部署包傳輸至需要被部署的節(jié)點(diǎn)或其他預(yù)定的位置,方便服務(wù)器進(jìn)行部署操作。在上述技術(shù)方案中,優(yōu)選地,所述服務(wù)器還包括第二生成模塊,為動(dòng)態(tài)組件生成加載器,所述加載器用于加載所述動(dòng)態(tài)組件中的資源。在該技術(shù)方案中,服務(wù)器可以在檢測(cè)到動(dòng)態(tài)組件后,為其生成加載器,以便對(duì)其進(jìn)行加載,加載過程可以在OSGI (Open Service Gateway Initiative)框架下準(zhǔn)確進(jìn)行。在上述技術(shù)方案中,優(yōu)選地,所述服務(wù)器還包括解析模塊,用于解析組件的配置文件,并對(duì)所述組件進(jìn)行第一判斷,所述第一判斷包括判斷所述組件是否由其他組件構(gòu)成, 若判斷結(jié)果為否,則為所述組件創(chuàng)建實(shí)例,若所述判斷結(jié)果為是,則進(jìn)行第二判斷,所述第二判斷包括判斷所述其他組件是否位于本地,若所述其他組件位于本地,則對(duì)所述其他組件進(jìn)行所述第一判斷,若所述其他組件不位于本地,則通過查詢模塊查詢所述存儲(chǔ)裝置中存儲(chǔ)的所述其他組件的部署信息;所述查詢模塊,用于對(duì)存儲(chǔ)在所述存儲(chǔ)裝置中的部署信息進(jìn)行查詢;檢測(cè)模塊,根據(jù)所述查詢模塊查詢到的所述部署信息,獲取部署有所述其他組件的服務(wù)器節(jié)點(diǎn),并檢測(cè)部署于所述服務(wù)器節(jié)點(diǎn)上的所述其他組件是否被正常部署,若是, 則通過所述創(chuàng)建模塊為所述其他組件創(chuàng)建實(shí)例。在該技術(shù)方案中,主要是為靜態(tài)組件創(chuàng)建實(shí)例的過程,該組件若與其他組件沒有依賴關(guān)系,這里的依賴關(guān)系,主要是指該組件是否由其他組件構(gòu)成,若沒有,則可以直接創(chuàng)建實(shí)例,若有依賴關(guān)系,如組件A和組件B —同構(gòu)成了組件C,此時(shí)對(duì)于組件C而言,其實(shí)例的創(chuàng)建需要涉及組件A和組件B,此時(shí)應(yīng)查詢組件A和組件B的位置,若在本地,則從本地進(jìn)行加載,或不是,則從之前存儲(chǔ)的組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系中查找其所在的節(jié)點(diǎn),并對(duì)其進(jìn)行查詢。此處的處理方式,主要就是一層一層地,將處于上層構(gòu)建的組件進(jìn)行分析,從最底層的組件開始創(chuàng)建實(shí)例,并一層層地被上層組件引用。 此外,這里解析的配置文件位于組件項(xiàng)目中,且每一個(gè)組件對(duì)應(yīng)一個(gè)配置文件。在上述技術(shù)方案中,優(yōu)選地,在所述創(chuàng)建模塊為所述其他組件創(chuàng)建實(shí)例前,還包括所述服務(wù)器通過所述第二通信模塊連接至所述服務(wù)器節(jié)點(diǎn),并通過所述檢測(cè)模塊獲取所述服務(wù)器節(jié)點(diǎn)上發(fā)起調(diào)用的實(shí)例的標(biāo)識(shí),然后通過所述查詢模塊查詢存儲(chǔ)在所述存儲(chǔ)裝置中的對(duì)應(yīng)于所述其他組件的部署信息,并獲取與所述其他組件存在調(diào)用關(guān)系的調(diào)用組件的標(biāo)識(shí),以及所述服務(wù)器還包括比較模塊,所述比較模塊用于比較所述實(shí)例的標(biāo)識(shí)和所述調(diào)用組件的標(biāo)識(shí),若所述實(shí)例的標(biāo)識(shí)中沒有所述調(diào)用組件的標(biāo)識(shí),則由所述創(chuàng)建模塊為所述調(diào)用組件創(chuàng)建實(shí)例。在該技術(shù)方案中,位于底層的組件可能被多個(gè)組件使用,因而一些組件在引用時(shí),該底層組件可能已經(jīng)被引用過而已經(jīng)創(chuàng)建了實(shí)例,此時(shí)該實(shí)例可以直接被后來(lái)的組件所引用,而對(duì)于尚未創(chuàng)建實(shí)例的底層組件,則可以在被查詢時(shí)進(jìn)行實(shí)例的創(chuàng)建。通過這種查詢方式,可以避免已經(jīng)創(chuàng)建的實(shí)例經(jīng)歷重復(fù)操作,簡(jiǎn)化上層組件的實(shí)例創(chuàng)建。根據(jù)本發(fā)明的又一方面,還提出了一種組件的分布式部署方法,包括步驟202, 利用配置完成的組件項(xiàng)目生成組件部署包,并存儲(chǔ)部署信息,所述部署信息包括所述組件項(xiàng)目的信息、所述組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及所述組件部署包的信息;步驟204,掃描所述組件部署包,獲取所述組件部署包中的組件的狀態(tài)屬性,若所述狀態(tài)屬性為靜態(tài),所述組件為靜態(tài)組件,將所述靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),若所述狀態(tài)屬性為動(dòng)態(tài),所述組件為動(dòng)態(tài)組件,將所述動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并存儲(chǔ)所述組件與所述服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。在該技術(shù)方案中,客戶端為組件生成部署包后,由服務(wù)器對(duì)包中的組件進(jìn)行分析,若為靜態(tài)組件,則可以自行生成實(shí)例,對(duì)系統(tǒng)無(wú)影響,若為動(dòng)態(tài)組件,則常常與其他組件有著復(fù)雜的依賴關(guān)系,需要進(jìn)行記錄,如將組件的標(biāo)識(shí)與被部署的節(jié)點(diǎn)的標(biāo)識(shí)進(jìn)行關(guān)聯(lián)后存儲(chǔ)這兩者之間的對(duì)應(yīng)關(guān)系,則后續(xù)可以通過查詢?cè)搶?duì)應(yīng)關(guān)系,在相應(yīng)的節(jié)點(diǎn)上創(chuàng)建相應(yīng)的動(dòng)態(tài)組件實(shí)例。同時(shí),通過將組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ),便于在組件出現(xiàn)問題或需要進(jìn)行檢測(cè)、重啟等時(shí),對(duì)單個(gè)組件或部分組件進(jìn)行操作,而不必對(duì)整個(gè)系統(tǒng)進(jìn)行重啟,減少對(duì)其他組件的影響,降低系統(tǒng)的維護(hù)成本。在上述技術(shù)方案中,優(yōu)選地,所述步驟202還包括將所述組件部署包發(fā)送至服務(wù)器節(jié)點(diǎn)上。在該技術(shù)方案中,客戶端在生成部署包后,后續(xù)的工作如部署通常由服務(wù)器來(lái)完成,并且首先需要服務(wù)器從客戶端獲取其生成的部署包,但也可以由客戶端在生成部署包后,直接將部署包傳輸至需要被部署的節(jié)點(diǎn)或其他預(yù)定的位置,方便服務(wù)器進(jìn)行部署操作。在上述技術(shù)方案中,優(yōu)選地,所述步驟204還包括為動(dòng)態(tài)組件生成加載器,所述加載器用于加載所述動(dòng)態(tài)組件中的資源。在該技術(shù)方案中,服務(wù)器可以在檢測(cè)到動(dòng)態(tài)組件后,為其生成加載器,以便對(duì)其進(jìn)行加載,加載過程可以在OSGI框架下準(zhǔn)確進(jìn)行。在上述技術(shù)方案中,優(yōu)選地,在所述步驟204之后,還包括步驟206,解析組件的配置文件,并對(duì)所述組件進(jìn)行第一判斷,所述第一判斷包括判斷所述組件是否由其他組件構(gòu)成,若判斷結(jié)果為否,則為所述組件創(chuàng)建實(shí)例,若所述判斷結(jié)果為是,則進(jìn)行第二判斷,所述第二判斷包括判斷所述其他組件是否位于本地,若所述其他組件位于本地,則對(duì)所述其他組件進(jìn)行所述第一判斷,若所述其他組件不位于本地,則查詢存儲(chǔ)的所述其他組件的部署信息;步驟208,根據(jù)所述其他組件的所述部署信息,獲取部署有所述其他組件的服務(wù)器節(jié)點(diǎn),并在檢測(cè)到部署于所述服務(wù)器節(jié)點(diǎn)上的所述其他組件被正常部署時(shí),為所述其他組件創(chuàng)建實(shí)例。在該技術(shù)方案中,主要是為靜態(tài)組件創(chuàng)建實(shí)例的過程,該組件若與其他組件沒有依賴關(guān)系,這里的依賴關(guān)系,主要是指該組件是否由其他組件構(gòu)成,若沒有,則可以直接創(chuàng)建實(shí)例,若有依賴關(guān)系,如組件A和組件B —同構(gòu)成了組件C,此時(shí)對(duì)于組件C而言,其實(shí)例的創(chuàng)建需要涉及組件A和組件B,此時(shí)應(yīng)查詢組件A和組件B的位置,若在本地,則從本地進(jìn)行加載,或不是,則從之前存儲(chǔ)的組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系中查找其所在的節(jié)點(diǎn),并對(duì)其進(jìn)行查詢。此處的處理方式,主要就是一層一層地,將處于上層構(gòu)建的組件進(jìn)行分析,從最底層的組件開始創(chuàng)建實(shí)例,并一層層地被上層組件引用。此外,這里解析的配置文件位于組件項(xiàng)目中,且每一個(gè)組件對(duì)應(yīng)一個(gè)配置文件。在上述技術(shù)方案中,優(yōu)選地,在所述步驟208中,所述創(chuàng)建實(shí)例的過程還包括連接至所述服務(wù)器節(jié)點(diǎn),記錄所述服務(wù)器節(jié)點(diǎn)上發(fā)起調(diào)用的實(shí)例的標(biāo)識(shí),并查詢存儲(chǔ)的對(duì)應(yīng)于所述其他組件的部署信息,獲取與所述其他組件存在調(diào)用關(guān)系的調(diào)用組件的標(biāo)識(shí),若所述實(shí)例的標(biāo)識(shí)中沒有所述調(diào)用組件的標(biāo)識(shí),則為所述調(diào)用組件創(chuàng)建實(shí)例。在該技術(shù)方案中, 位于底層的組件可能被多個(gè)組件使用,因而一些組件在引用時(shí),該底層組件可能已經(jīng)被引用過而已經(jīng)創(chuàng)建了實(shí)例,此時(shí)該實(shí)例可以直接被后來(lái)的組件所引用,而對(duì)于尚未創(chuàng)建實(shí)例的底層組件,則可以在被查詢時(shí)進(jìn)行實(shí)例的創(chuàng)建。通過這種查詢方式,可以避免已經(jīng)創(chuàng)建的實(shí)例經(jīng)歷重復(fù)操作,簡(jiǎn)化上層組件的實(shí)例創(chuàng)建。通過以上技術(shù)方案,可以實(shí)現(xiàn)在分布式環(huán)境下對(duì)有復(fù)雜依賴關(guān)系的組件的方便部署和對(duì)實(shí)例的精細(xì)化管理,同時(shí)實(shí)現(xiàn)按需創(chuàng)建和啟動(dòng),避免對(duì)整體系統(tǒng)的影響。
圖1示出了相關(guān)技術(shù)的組件的構(gòu)成示意圖;圖2示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署系統(tǒng)的框圖;圖3示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署方法的流程圖;圖4示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署的示意圖;圖5示出了根據(jù)本發(fā)明的實(shí)施例的客戶端運(yùn)作的流程圖;圖6示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署的流程圖;圖7示出了根據(jù)本發(fā)明的實(shí)施例的組件依賴關(guān)系的示意圖;圖8示出了根據(jù)本發(fā)明的實(shí)施例的服務(wù)器節(jié)點(diǎn)通信裝置的框圖;圖9示出了根據(jù)本發(fā)明的實(shí)施例的為組件創(chuàng)建實(shí)例的流程圖;圖10示出了根據(jù)本發(fā)明的實(shí)施例的為組件創(chuàng)建實(shí)例的流程圖;以及圖11示出了根據(jù)本發(fā)明的實(shí)施例的為組件創(chuàng)建實(shí)例的示意圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí)施例的限制。圖2示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署系統(tǒng)的框圖。如圖2所示,根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署系統(tǒng)200,包括客戶端 202、存儲(chǔ)裝置204和服務(wù)器206,其中,所述客戶端包括第一生成模塊208,利用配置完成的組件項(xiàng)目生成組件部署包;第一通信模塊210,連接至存儲(chǔ)裝置204,用于將部署信息發(fā)送至存儲(chǔ)裝置204,部署信息包括組件項(xiàng)目的信息、組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及組件部署包的信息;存儲(chǔ)裝置204,連接至客戶端202和服務(wù)器206,存儲(chǔ)部署信息;服務(wù)器206包括第二通信模塊212,連接至客戶端202,用于接收組件部署包;掃描模塊214,掃描第二通信模塊212接收到的組件部署包,并獲取組件部署包中的組件的狀態(tài)屬性;部署模塊216,在狀態(tài)屬性為靜態(tài)的情況下,組件為靜態(tài)組件,將靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),在狀態(tài)屬性為動(dòng)態(tài)的情況下,組件為動(dòng)態(tài)組件,將動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并將組件與服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系存儲(chǔ)在存儲(chǔ)裝置204中; 創(chuàng)建模塊218,為組件創(chuàng)建實(shí)例;第二生成模塊220,為動(dòng)態(tài)組件生成加載器,加載器用于加載動(dòng)態(tài)組件中的資源;解析模塊222,用于解析組件的配置文件,并對(duì)組件進(jìn)行第一判斷, 第一判斷包括判斷組件是否由其他組件構(gòu)成,若判斷結(jié)果為否,則為組件創(chuàng)建實(shí)例,若判斷結(jié)果為是,則進(jìn)行第二判斷,第二判斷包括判斷其他組件是否位于本地,若其他組件位于本地,則對(duì)其他組件進(jìn)行第一判斷,若其他組件不位于本地,則通過查詢模塊224查詢存儲(chǔ)裝置204中存儲(chǔ)的其他組件的部署信息;查詢模塊224,用于對(duì)存儲(chǔ)在存儲(chǔ)裝置204中的部署信息進(jìn)行查詢;檢測(cè)模塊226,根據(jù)查詢模塊224查詢到的部署信息,獲取部署有其他組件的服務(wù)器節(jié)點(diǎn),并檢測(cè)部署于該服務(wù)器節(jié)點(diǎn)上的其他組件是否被正常部署,若是,則通過創(chuàng)建模塊218為其他組件創(chuàng)建實(shí)例。在該技術(shù)方案中,客戶端202為組件生成部署包后,由服務(wù)器206對(duì)包中的組件進(jìn)行分析,若為靜態(tài)組件,則可以自行生成實(shí)例,對(duì)系統(tǒng)無(wú)影響,若為動(dòng)態(tài)組件,則常常與其他組件有著復(fù)雜的依賴關(guān)系,需要進(jìn)行記錄,如將組件的標(biāo)識(shí)與被部署的節(jié)點(diǎn)的標(biāo)識(shí)進(jìn)行關(guān)聯(lián)后存儲(chǔ)這兩者之間的對(duì)應(yīng)關(guān)系,則后續(xù)可以通過查詢?cè)搶?duì)應(yīng)關(guān)系,在相應(yīng)的節(jié)點(diǎn)上創(chuàng)建相應(yīng)的動(dòng)態(tài)組件實(shí)例。同時(shí),通過將組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ),便于在組件出現(xiàn)問題或需要進(jìn)行檢測(cè)、重啟等時(shí),對(duì)單個(gè)組件或部分組件進(jìn)行操作,而不必對(duì)整個(gè)系統(tǒng)200進(jìn)行重啟,減少對(duì)其他組件的影響,降低系統(tǒng)的維護(hù)成本。在上述技術(shù)方案中,客戶端202的第一通信模塊208還用于將組件部署包發(fā)送至服務(wù)器節(jié)點(diǎn)上。在該技術(shù)方案中,客戶端202在生成部署包后,后續(xù)的工作如部署通常由服務(wù)器206來(lái)完成,并且首先需要服務(wù)器206從客戶端202獲取其生成的部署包,但也可以由客戶端202在生成部署包后,直接將部署包傳輸至需要被部署的節(jié)點(diǎn)或其他預(yù)定的位置, 方便服務(wù)器206進(jìn)行部署操作。在上述技術(shù)方案中,服務(wù)器206可以在檢測(cè)到動(dòng)態(tài)組件后,為其生成加載器,以便對(duì)其進(jìn)行加載,加載過程可以在OSGI (Open Service Gateway Initiative)框架下準(zhǔn)確進(jìn)行。在上述技術(shù)方案中,在為靜態(tài)組件創(chuàng)建實(shí)例的過程,該組件若與其他組件沒有依賴關(guān)系,這里的依賴關(guān)系,主要是指該組件是否由其他組件構(gòu)成,若沒有,則可以直接創(chuàng)建實(shí)例,若有依賴關(guān)系,如組件A和組件B —同構(gòu)成了組件C,此時(shí)對(duì)于組件C而言,其實(shí)例的創(chuàng)建需要涉及組件A和組件B,此時(shí)應(yīng)查詢組件A和組件B的位置,若在本地,則從本地進(jìn)行加載,或不是,則從之前存儲(chǔ)的組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系中查找其所在的節(jié)點(diǎn),并對(duì)其進(jìn)行查詢。此處的處理方式,主要就是一層一層地,將處于上層構(gòu)建的組件進(jìn)行分析,從最底層的組件開始創(chuàng)建實(shí)例,并一層層地被上層組件引用。在上述技術(shù)方案中,在創(chuàng)建模塊218為其他組件創(chuàng)建實(shí)例前,還包括服務(wù)器206 通過第二通信模塊212連接至服務(wù)器節(jié)點(diǎn),并通過檢測(cè)模塊226獲取服務(wù)器節(jié)點(diǎn)上發(fā)起調(diào)用的實(shí)例的標(biāo)識(shí),然后通過查詢模塊224查詢存儲(chǔ)在存儲(chǔ)裝置204中的對(duì)應(yīng)于其他組件的部署信息,并獲取與其他組件存在調(diào)用關(guān)系的調(diào)用組件的標(biāo)識(shí),以及服務(wù)器202還包括比較模塊228,用于比較實(shí)例的標(biāo)識(shí)和調(diào)用組件的標(biāo)識(shí),若實(shí)例的標(biāo)識(shí)中沒有調(diào)用組件的標(biāo)識(shí),則由創(chuàng)建模塊218為調(diào)用組件創(chuàng)建實(shí)例。在該技術(shù)方案中,位于底層的組件可能被多個(gè)組件使用,因而一些組件在引用時(shí),該底層組件可能已經(jīng)被引用過而已經(jīng)創(chuàng)建了實(shí)例,此時(shí)該實(shí)例可以直接被后來(lái)的組件所引用,而對(duì)于尚未創(chuàng)建實(shí)例的底層組件,則可以在被查詢時(shí)進(jìn)行實(shí)例的創(chuàng)建。通過這種查詢方式,可以避免已經(jīng)創(chuàng)建的實(shí)例經(jīng)歷重復(fù)操作,簡(jiǎn)化上層組件的實(shí)例創(chuàng)建。圖3示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署方法的流程圖。如圖3所示,根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署方法,包括步驟302,利用配置完成的組件項(xiàng)目生成組件部署包,并存儲(chǔ)部署信息,部署信息包括所述組件項(xiàng)目的信息、組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及組件部署包的信息; 步驟304,掃描組件部署包,獲取組件部署包中的組件的狀態(tài)屬性,若狀態(tài)屬性為靜態(tài),則組件為靜態(tài)組件,將靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),若狀態(tài)屬性為動(dòng)態(tài),則組件為動(dòng)態(tài)組件,將動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并存儲(chǔ)組件與服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。在該技術(shù)方案中,客戶端為組件生成部署包后,由服務(wù)器對(duì)包中的組件進(jìn)行分析,若為靜態(tài)組件, 則可以自行生成實(shí)例,對(duì)系統(tǒng)無(wú)影響,若為動(dòng)態(tài)組件,則常常與其他組件有著復(fù)雜的依賴關(guān)系,需要進(jìn)行記錄,如將組件的標(biāo)識(shí)與被部署的節(jié)點(diǎn)的標(biāo)識(shí)進(jìn)行關(guān)聯(lián)后存儲(chǔ)這兩者之間的對(duì)應(yīng)關(guān)系,則后續(xù)可以通過查詢?cè)搶?duì)應(yīng)關(guān)系,在相應(yīng)的節(jié)點(diǎn)上創(chuàng)建相應(yīng)的動(dòng)態(tài)組件實(shí)例。同時(shí),通過將組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ),便于在組件出現(xiàn)問題或需要進(jìn)行檢測(cè)、重啟等時(shí),對(duì)單個(gè)組件或部分組件進(jìn)行操作,而不必對(duì)整個(gè)系統(tǒng)進(jìn)行重啟,減少對(duì)其他組件的影響,降低系統(tǒng)的維護(hù)成本。在上述技術(shù)方案中,步驟302還包括將組件部署包發(fā)送至服務(wù)器節(jié)點(diǎn)上。在該技術(shù)方案中,客戶端在生成部署包后,后續(xù)的工作如部署通常由服務(wù)器來(lái)完成,并且首先需要服務(wù)器從客戶端獲取其生成的部署包,但也可以由客戶端在生成部署包后,直接將部署包傳輸至需要被部署的節(jié)點(diǎn)或其他預(yù)定的位置,方便服務(wù)器進(jìn)行部署操作。在上述技術(shù)方案中,步驟304還包括為動(dòng)態(tài)組件生成加載器,加載器用于加載動(dòng)態(tài)組件中的資源。在該技術(shù)方案中,服務(wù)器可以在檢測(cè)到動(dòng)態(tài)組件后,為其生成加載器,以便對(duì)其進(jìn)行加載,加載過程可以在OSGI框架下準(zhǔn)確進(jìn)行。在上述技術(shù)方案中,在步驟304之后,還包括步驟306,解析組件的配置文件,并對(duì)組件進(jìn)行第一判斷,第一判斷包括判斷組件是否由其他組件構(gòu)成,若判斷結(jié)果為否,則為組件創(chuàng)建實(shí)例,若判斷結(jié)果為是,則進(jìn)行第二判斷,第二判斷包括判斷其他組件是否位于本地,若其他組件位于本地,則對(duì)其他組件進(jìn)行所述第一判斷,若其他組件不位于本地,則查詢存儲(chǔ)的其他組件的部署信息;步驟308,根據(jù)其他組件的部署信息,獲取部署有其他組件的服務(wù)器節(jié)點(diǎn),并在檢測(cè)到部署于服務(wù)器節(jié)點(diǎn)上的其他組件被正常部署時(shí),為其他組件創(chuàng)建實(shí)例。在該技術(shù)方案中,主要是為靜態(tài)組件創(chuàng)建實(shí)例的過程,該組件若與其他組件沒有依賴關(guān)系,這里的依賴關(guān)系,主要是指該組件是否由其他組件構(gòu)成,若沒有,則可以直接創(chuàng)建實(shí)例,若有依賴關(guān)系,如組件A和組件B —同構(gòu)成了組件C,此時(shí)對(duì)于組件C而言,其實(shí)例的創(chuàng)建需要涉及組件A和組件B,此時(shí)應(yīng)查詢組件A和組件B的位置,若在本地,則從本地進(jìn)行加載,或不是,則從之前存儲(chǔ)的組件與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系中查找其所在的節(jié)點(diǎn),并對(duì)其進(jìn)行查詢。此處的處理方式,主要就是一層一層地,將處于上層構(gòu)建的組件進(jìn)行分析,從最底層的組件開始創(chuàng)建實(shí)例,并一層層地被上層組件引用。在上述技術(shù)方案中,在步驟208中,創(chuàng)建實(shí)例的過程還包括連接至服務(wù)器節(jié)點(diǎn), 記錄服務(wù)器節(jié)點(diǎn)上發(fā)起調(diào)用的實(shí)例的標(biāo)識(shí),并查詢存儲(chǔ)的對(duì)應(yīng)于其他組件的部署信息,獲取與其他組件存在調(diào)用關(guān)系的調(diào)用組件的標(biāo)識(shí),若實(shí)例的標(biāo)識(shí)中沒有調(diào)用組件的標(biāo)識(shí),則為調(diào)用組件創(chuàng)建實(shí)例。在該技術(shù)方案中,位于底層的組件可能被多個(gè)組件使用,因而一些組件在引用時(shí),該底層組件可能已經(jīng)被引用過而已經(jīng)創(chuàng)建了實(shí)例,此時(shí)該實(shí)例可以直接被后來(lái)的組件所引用,而對(duì)于尚未創(chuàng)建實(shí)例的底層組件,則可以在被查詢時(shí)進(jìn)行實(shí)例的創(chuàng)建。通過這種查詢方式,可以避免已經(jīng)創(chuàng)建的實(shí)例經(jīng)歷重復(fù)操作,簡(jiǎn)化上層組件的實(shí)例創(chuàng)建。圖4示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署的示意圖。
如圖4所示,根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署主要由部署管理客戶端裝置402、部署管理服務(wù)端裝置404和部署資源注冊(cè)中心406構(gòu)成,其中,部署管理客戶端裝置402用于將開發(fā)配置完成的組件項(xiàng)目導(dǎo)出為運(yùn)行環(huán)境可識(shí)別的組件部署包(本發(fā)明采用 OSGI Bundle格式),該組件部署包可以直接由部署管理客戶端裝置402發(fā)送至需要被安裝的服務(wù)器節(jié)點(diǎn)上,也可以僅僅生成,之后由部署管理服務(wù)端裝置404獲取并進(jìn)行部署,同時(shí),部署管理客戶端裝置402還將第一部署信息發(fā)送至部署資源注冊(cè)中心406,其中,第一部署信息中包括部署包基本信息和組件部署包所含組件信息,以及在部署管理客戶端裝置 402直接將組件部署包發(fā)送至節(jié)點(diǎn)時(shí),第一部署信息中還包括服務(wù)器節(jié)點(diǎn)信息。然后,部署管理服務(wù)端裝置404用于將組件部署包部署在服務(wù)器節(jié)點(diǎn)上,在部署過程中,對(duì)于部署包中的動(dòng)態(tài)組件,還需要將包含該動(dòng)態(tài)組件與其被部署的服務(wù)器節(jié)點(diǎn)的信號(hào)作為第二部署信息發(fā)送至部署資源注冊(cè)中心406,以及在對(duì)具有依賴關(guān)系的靜態(tài)組件進(jìn)行實(shí)例的創(chuàng)建時(shí),還需要由部署管理服務(wù)端裝置404在部署資源注冊(cè)中心406中查詢第一部署信息和第二部署 fn息ο圖5示出了根據(jù)本發(fā)明的實(shí)施例的客戶端運(yùn)作的流程圖。如圖5所示,進(jìn)行組件的分布式部署時(shí),客戶端運(yùn)作的流程如下步驟502,服務(wù)器節(jié)點(diǎn)發(fā)布,這里是指由管理客戶端裝置選擇服務(wù)器節(jié)點(diǎn)并進(jìn)行發(fā)布,其中,服務(wù)器節(jié)點(diǎn)是分布式環(huán)境中服務(wù)器管理的基本單元,用于安裝組件部署包,是組件運(yùn)行的載體和容器。服務(wù)器節(jié)點(diǎn)對(duì)應(yīng)獨(dú)立的服務(wù)器進(jìn)程,在基于java實(shí)現(xiàn)的服務(wù)器中, 對(duì)應(yīng)一個(gè)獨(dú)立的JVM,可配置管理端口,用于服務(wù)器節(jié)點(diǎn)間通信。步驟504,告知部署資源注冊(cè)中心,這里是指將步驟502中選擇出的節(jié)點(diǎn)信息配置到部署資源注冊(cè)中心。步驟506,組件發(fā)布,這里是指選擇組件項(xiàng)目,用該組件項(xiàng)目生成組件部署包并進(jìn)行發(fā)布,以及發(fā)布組件部署包內(nèi)的所有組件,其中,組件項(xiàng)目主要用于在開發(fā)形態(tài)下管理和組件開發(fā)相關(guān)的資源,比如組件配置文件,服務(wù)定義文件(如wsdl或者java接口),實(shí)體定義文件(xsd或者javaPOJO類)、組件實(shí)現(xiàn)文件(java源代碼、groovy腳本或者bpel流程定義文件,取決于組件具體依賴何種技術(shù)實(shí)現(xiàn))。步驟508,告知部署資源注冊(cè)中心,這里是指將步驟506中生成的組件部署包的信息配置到部署資源注冊(cè)中心。經(jīng)過部署管理客戶端裝置和部署管理服務(wù)端裝置的信息配置,在部署資源注冊(cè)中心中可能包括的信息為服務(wù)器節(jié)點(diǎn)信息主要包括服務(wù)器節(jié)點(diǎn)編號(hào),是否主節(jié)點(diǎn),節(jié)點(diǎn)配置(如HTTP服務(wù)端口 ),管理端口等信息;組件部署包信息主要記錄部署bundle的標(biāo)識(shí)名,包版本,包路徑等;組件配置信息包括組件標(biāo)識(shí),組件路徑,組件所屬部署包,組件類型,組件實(shí)現(xiàn)類型等;組件部署包和服務(wù)器節(jié)點(diǎn)關(guān)聯(lián)信息包括組件部署包標(biāo)識(shí)、服務(wù)器節(jié)點(diǎn)標(biāo)識(shí)。步驟510,部署方案設(shè)置,這里的部署方案定義了一個(gè)分布式服務(wù)器節(jié)點(diǎn)集群中, 組件項(xiàng)目和具體服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。步驟512,部署方案執(zhí)行,即由部署管理服務(wù)端裝置根據(jù)步驟510中的部署方案進(jìn)行組件部署包在對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)上的部署。
圖6示出了根據(jù)本發(fā)明的實(shí)施例的組件的分布式部署的流程圖。如圖6所示,部署管理服務(wù)端裝置在對(duì)組件部署包進(jìn)行部署時(shí),具體步驟如下步驟602,掃描組件配置文件,這里的組件掃描和啟動(dòng)裝置基于OSGI動(dòng)態(tài)化的生命周期管理機(jī)制,通過對(duì)OSGI Bundle格式的組件部署資源包的啟動(dòng)、停止事件的監(jiān)控,實(shí)現(xiàn)對(duì)部署資源包內(nèi)組件配置文件的動(dòng)態(tài)掃描。步驟604,根據(jù)步驟602的掃描結(jié)果判斷組件的狀態(tài)屬性,若為靜態(tài)組件,則進(jìn)入步驟606,若為動(dòng)態(tài)組件,則進(jìn)入步驟618,其中,靜態(tài)組件是指那些直接可配置具體綁定信息,部署后直接被啟動(dòng)對(duì)外提供服務(wù)的組件,而動(dòng)態(tài)組件是指那些無(wú)法直接配置綁定信息, 部署后如果沒有被引用則不會(huì)創(chuàng)建實(shí)例及啟動(dòng)的組件。同時(shí),靜態(tài)組件和動(dòng)態(tài)組件分別又分為復(fù)合組件和原子組件。所以組件總共有如下四種類型靜態(tài)原子組件,設(shè)定其配置文件擴(kuò)展名為scomp ;靜態(tài)復(fù)合組件,設(shè)定其配置文件擴(kuò)展名為icomp ;動(dòng)態(tài)原子組件,設(shè)定其配置文件擴(kuò)展名為comp ;動(dòng)態(tài)復(fù)合組件,設(shè)定其配置文件擴(kuò)展名為ccomp。此外,動(dòng)態(tài)原子組件和動(dòng)態(tài)復(fù)合組件只有被靜態(tài)復(fù)合組件直接或者間接使用時(shí)才會(huì)相應(yīng)的創(chuàng)建實(shí)例并啟動(dòng)服務(wù)。步驟606,將組件配置文件加入OSGI服務(wù)掃描路徑。步驟608,OSGI框架掃描并啟動(dòng)靜態(tài)組件服務(wù)。步驟610,判斷該靜態(tài)組件是否存在依賴組件,這里的依賴組件是指與其他組件存在依賴關(guān)系,這里的組件依賴關(guān)系主要由兩種,如圖7所示,其中的復(fù)合組件A702由動(dòng)態(tài)原子組件B704、動(dòng)態(tài)原子組件C706和動(dòng)態(tài)復(fù)合組件D708構(gòu)成,那么稱復(fù)合組件A702依賴了動(dòng)態(tài)原子組件B704、動(dòng)態(tài)原子組件C706和動(dòng)態(tài)復(fù)合組件D708,這是第一種依賴關(guān)系,而第二種依賴關(guān)系為在復(fù)合組件A702內(nèi)部,動(dòng)態(tài)原子組件B704分別通過特定的服務(wù)調(diào)用了動(dòng)態(tài)原子組件C706和動(dòng)態(tài)復(fù)合組件D708,此處稱動(dòng)態(tài)原子組件B704依賴了動(dòng)態(tài)原子組件C706和動(dòng)態(tài)復(fù)合組件D708。當(dāng)復(fù)合組件A702啟動(dòng)時(shí),會(huì)通過對(duì)依賴關(guān)系的分析,啟動(dòng)依賴的所有組件對(duì)應(yīng)的服務(wù)。此外,本發(fā)明中組件的配置文件采用XML格式定義,具有第一種依賴關(guān)系的動(dòng)態(tài)組件在配置文件里通過〈import〉元素導(dǎo)入,比如對(duì)于上述的復(fù)合組件A702,引用部分定義如下<import resource = “ classpath:com/ufida/eip/test/componentB. comp“ /><import resource =" classpath:com/ufida/eip/test/componentC. comp" />〈import resource = " classpath:com/ufida/eip/test/componentD. ccomp" />其中 classpath 路徑"classpath:com/ufida/eip/test/componentB. comp,,為 B 組件704的唯一性路徑,可認(rèn)為是B組件704的id,通過此路徑便可從部署資源注冊(cè)中心查詢組件配置,組件部署所在的服務(wù)器節(jié)點(diǎn)等信息。第二種依賴關(guān)系則通過wire方式定義,同樣對(duì)于上述的復(fù)合組件A702,B組件704 對(duì)C組件706的調(diào)用依賴定義如下<bean class="com.ufida.eip.comp.wire.support.DynamicToDynamicWire"
>
〈property name="name" value="B2CWire"/>
〈property name="wireMode" value="AUTO"/>
〈property name="sourceRefPath" value="componentB.queryReferen
ce"/>
〈property name="targetRefPath" value="componentC.queryService"/
>
</bean>從上面的定義可以看出,組件的調(diào)用依賴是通過關(guān)聯(lián)一個(gè)組件上的引用和另一個(gè)組件上的服務(wù)建立起來(lái)的。調(diào)用依賴根據(jù)組件類型不同,可分為動(dòng)態(tài)_靜態(tài)調(diào)用依賴和動(dòng)態(tài)_動(dòng)態(tài)調(diào)用依賴, 上面的定義中B704和C706均為動(dòng)態(tài)組件,所以B704對(duì)C706的調(diào)用依賴為動(dòng)態(tài)-動(dòng)態(tài)調(diào)用依賴類型。明確定義組件依賴類型和具體依賴定義后,組件依賴關(guān)系的分析可采用通用技術(shù)實(shí)現(xiàn),比如XML解析技術(shù),Spring IOC技術(shù)等等,此處不再贅述。依賴關(guān)系的處理涉及到組件實(shí)例創(chuàng)建及啟動(dòng)管理,故放到圖9中進(jìn)行進(jìn)一步說明。步驟612,在步驟610判斷為存在依賴組件時(shí),分析得到依賴的遠(yuǎn)程組件。步驟614,創(chuàng)建或啟動(dòng)該遠(yuǎn)程組件實(shí)例,對(duì)于步驟612得到的遠(yuǎn)程組件可能是動(dòng)態(tài)組件或是靜態(tài)組件,若為動(dòng)態(tài)組件,則可以直接進(jìn)行創(chuàng)建或啟動(dòng)實(shí)例,而對(duì)于靜態(tài)組件,其創(chuàng)建或啟動(dòng)實(shí)例的過程又將從步驟610開始,也就是進(jìn)行下一層的解析,而且之后出現(xiàn)的每個(gè)靜態(tài)組件都將這樣處理,以層層解析的方式,直至得到最底層的組件。步驟616,若步驟610判斷靜態(tài)組件沒有遠(yuǎn)程依賴組件時(shí),啟動(dòng)原靜態(tài)組件。步驟618,將步驟604中判斷出的動(dòng)態(tài)組件注冊(cè)至部署資源注冊(cè)中心,登記組件所在的服務(wù)器節(jié)點(diǎn),這是為了之后在被其他組件調(diào)用時(shí),方便進(jìn)行查找。步驟620,注冊(cè)動(dòng)態(tài)組件類加載器,該加載器便于在OSGI框架里準(zhǔn)確的加載組件內(nèi)資源。圖8示出了根據(jù)本發(fā)明的實(shí)施例的服務(wù)器節(jié)點(diǎn)通信裝置的框圖。如圖8所示,服務(wù)器節(jié)點(diǎn)通信裝置800主要負(fù)責(zé)服務(wù)器節(jié)點(diǎn)間通信,當(dāng)機(jī)及網(wǎng)絡(luò)中斷檢測(cè);可支持按組件進(jìn)行實(shí)例管理。在服務(wù)器節(jié)點(diǎn)如節(jié)點(diǎn)A啟動(dòng)時(shí),會(huì)通過服務(wù)器節(jié)點(diǎn)通信裝置800注冊(cè)一個(gè)節(jié)點(diǎn)A 通信管理器806,該節(jié)點(diǎn)A的通信管理器806 —旦和其他節(jié)點(diǎn)如節(jié)點(diǎn)B的通信管理器812建立連接,則以后只要節(jié)點(diǎn)B或其他節(jié)點(diǎn)出現(xiàn)當(dāng)機(jī)或者網(wǎng)絡(luò)異常,與其發(fā)生過連接的節(jié)點(diǎn)通信管理器如節(jié)點(diǎn)A的通信管理器806就會(huì)得到通知事件,并由其他部分如組件實(shí)例管理器根據(jù)此通知事件進(jìn)行組件實(shí)例的清理。每個(gè)動(dòng)態(tài)組件啟動(dòng)時(shí),都會(huì)通過服務(wù)器節(jié)點(diǎn)通信裝置向其所部署的服務(wù)器節(jié)點(diǎn)注冊(cè)一個(gè)用于遠(yuǎn)程組件管理的組件管理器,如對(duì)于節(jié)點(diǎn)A處的組件1和組件2會(huì)分別注冊(cè)得到組件1管理器808和組件2管理器810,而對(duì)于節(jié)點(diǎn)B處的組件3和組件4會(huì)分別注冊(cè)得到組件3管理器814和組件4管理器816,則如組件1可以通過節(jié)點(diǎn)A通信管理器806遠(yuǎn)程訪問節(jié)點(diǎn)B處的組件3,通過對(duì)組件管理器的利用,從而可以創(chuàng)建、初始化及停止遠(yuǎn)程組件實(shí)例。圖9示出了根據(jù)本發(fā)明的實(shí)施例的為組件創(chuàng)建實(shí)例的流程圖。如圖9所示,為組件創(chuàng)建實(shí)例的流程如下步驟902,解析組件配置文件,分析組件的構(gòu)成,圖6中提到靜態(tài)組件會(huì)被觸發(fā)而創(chuàng)建實(shí)例,并啟動(dòng)服務(wù),而動(dòng)態(tài)組件則不會(huì),動(dòng)態(tài)組件只有在被靜態(tài)組件組裝依賴的時(shí)候, 才會(huì)創(chuàng)建相應(yīng)的實(shí)例,所以組件實(shí)例創(chuàng)建流程從最開始的時(shí)候,接收的是靜態(tài)組件配置文件。步驟904,判斷該組件是否由其他組件構(gòu)成,也就是說分析該組件與其他組件是否存在上述的第一種依賴關(guān)系,若存在則進(jìn)入步驟912,否則,進(jìn)入步驟906。步驟906,判斷該組件是否為靜態(tài)組件,若是,則進(jìn)入步驟908,否則進(jìn)入步驟910。步驟908,為該靜態(tài)組件創(chuàng)建實(shí)例并啟動(dòng)靜態(tài)組件。步驟910,為該動(dòng)態(tài)組件創(chuàng)建動(dòng)態(tài)組件實(shí)例,在圖6中,對(duì)于動(dòng)態(tài)組件只是進(jìn)行信息注冊(cè)等,而既不創(chuàng)建實(shí)例也不啟動(dòng)服務(wù),而這里,已經(jīng)判斷了其沒有依賴關(guān)系,且由配置文件解析得到,則直接創(chuàng)建實(shí)例。步驟912至步驟928,都是對(duì)導(dǎo)入的組件列表中的每一個(gè)組件路徑進(jìn)行的操作,其中,組件列表為步驟904中判斷由其他組件構(gòu)成時(shí),將參與構(gòu)成的組件的標(biāo)識(shí)記錄在組件列表中得到的。步驟912,通過路徑在本地加載導(dǎo)入的組件,這里由于需要依賴其他的組件,因此系統(tǒng)被依賴的組件能夠存在于本地。步驟914,判斷該組件是否存在于本地,若是,則返回步驟902,對(duì)該組件的狀態(tài)屬性和是否依賴于其他組件進(jìn)行解析,否則進(jìn)入步驟916。步驟916,判斷部署資源注冊(cè)中心是否存在相關(guān)信息,在生成部署包后,部署管理客戶端裝置會(huì)向部署資源注冊(cè)中心發(fā)送第一部署信息,且部署管理服務(wù)端裝置會(huì)在部署上述部署包時(shí),向部署資源注冊(cè)中心發(fā)送第二部署信息,從而可以通過對(duì)部署資源注冊(cè)中心的查詢,得到組件的信息。在判斷為是是,進(jìn)入步驟920,否則進(jìn)入步驟918。步驟918,提示依賴的組件沒有發(fā)布,然后結(jié)束。步驟920至步驟926為對(duì)每一個(gè)部署有該組件的服務(wù)器節(jié)點(diǎn)的操作。步驟920,通過服務(wù)器通信裝置里的遠(yuǎn)程組件管理器查詢目標(biāo)服務(wù)器節(jié)點(diǎn),這里的通信過程已經(jīng)通過圖8進(jìn)行了詳細(xì)說明。步驟922,判斷組件是否正常部署,若正常,則進(jìn)入步驟926,否則進(jìn)入步驟924。步驟924,通過記入日志以警告管理員服務(wù)器節(jié)點(diǎn)上的組件部署不正常。步驟926,記入有效組件部署信息列表,這里是指在查詢到所依賴的組件,并且該組件被正常部署的話,將該組件的標(biāo)識(shí)進(jìn)行記錄,并形成有效組件部署信息列表。步驟928,生成遠(yuǎn)程組件實(shí)例代理,這里將結(jié)合圖10對(duì)遠(yuǎn)程組件實(shí)例的創(chuàng)建過程進(jìn)行分析,具體過程如下步驟1002,連接遠(yuǎn)程服務(wù)器節(jié)點(diǎn),這是根據(jù)步驟926中形成的有效組件部署信息列表中的信息,連接到相關(guān)聯(lián)的組件所在的服務(wù)器節(jié)點(diǎn)。步驟1004,獲取遠(yuǎn)程組件管理器,該管理器用于管理對(duì)應(yīng)的組件的實(shí)例創(chuàng)建過程。步驟1006,調(diào)用創(chuàng)建命令,用于進(jìn)行實(shí)例的創(chuàng)建。步驟1008,記錄發(fā)起調(diào)用的組件實(shí)例,將向該組件發(fā)起過調(diào)用的組件記錄下來(lái),也就是說,對(duì)于組件之間的調(diào)用,需要進(jìn)行記錄和存儲(chǔ),方便之后的查找和使用。步驟1010,分析組件間調(diào)用依賴關(guān)系,對(duì)于調(diào)用該組件且具有依賴關(guān)系的組件,需要進(jìn)行步驟1012的操作。步驟1012,從組件管理器中按組件實(shí)例ID查找組件實(shí)例,對(duì)于創(chuàng)建的實(shí)例,都擁有唯一對(duì)應(yīng)的ID,則可以通過ID查找已經(jīng)創(chuàng)建的組件實(shí)例。步驟1014,根據(jù)查找結(jié)果,判斷實(shí)例是否存在,若存在,則可以對(duì)該實(shí)例直接進(jìn)行引用,否則進(jìn)入步驟1016。步驟1016,創(chuàng)建組件實(shí)例,可以看出,圖10的過程,是為了對(duì)依賴的組件進(jìn)行分析,并對(duì)已經(jīng)創(chuàng)建實(shí)例的組件進(jìn)行直接引用,而沒有創(chuàng)建的再進(jìn)行創(chuàng)建,從而節(jié)省資源和時(shí)間,方便管理。步驟930,創(chuàng)建復(fù)合靜態(tài)組件實(shí)例并啟動(dòng)。圖11示出了根據(jù)本發(fā)明的實(shí)施例的為組件創(chuàng)建實(shí)例的示意圖。如圖11所示,組件實(shí)例創(chuàng)建流程主要利用的是上述第一種依賴關(guān)系,解決的是按需創(chuàng)建組件實(shí)例的問題,并沒有說明動(dòng)態(tài)組件實(shí)例上的綁定服務(wù)是如何被啟動(dòng)的。遠(yuǎn)程組件實(shí)例管理裝置基于組件正向的調(diào)用型依賴關(guān)系,可有效解決按需啟動(dòng)組件實(shí)例上綁定服務(wù)的問題;基于組件反向的調(diào)用依賴關(guān)系,可解決服務(wù)器節(jié)點(diǎn)配置變化而導(dǎo)致的人工重啟問題,還可解決因?yàn)檎麄€(gè)組件依賴鏈中因?yàn)槟硞€(gè)組件實(shí)例失效,其他組件實(shí)例雖然正常運(yùn)行但卻無(wú)法提供有效服務(wù)的問題。下面基于圖11詳細(xì)描述基于正反向調(diào)用型依賴關(guān)系解決以上問題的工作原理假設(shè)復(fù)合靜態(tài)組件S 1102通過上述第一種方式依賴了動(dòng)態(tài)復(fù)合組件A 1104, 基于組件實(shí)例創(chuàng)建流程,創(chuàng)建復(fù)合靜態(tài)組件S 1102的實(shí)例Si,相應(yīng)的會(huì)創(chuàng)建復(fù)合組件A 1104、動(dòng)態(tài)原子組件B 1106、動(dòng)態(tài)原子組件C1108及動(dòng)態(tài)復(fù)合組件D 1110的組件實(shí)例,分別記為Ai,Bi,Ci及Di,其中,Ai記錄了反向組裝依賴關(guān)系{Si組裝依賴Ai};Bi記錄了反向組裝依賴關(guān)系{Ai組裝依賴Bi};Ci記錄了反向組裝依賴關(guān)系{Ai組裝依賴Ci},同時(shí)記錄了反向調(diào)用依賴關(guān)系{Bi 組裝依賴Ci};Di記錄了反向組裝依賴關(guān)系{Ai組裝依賴Di},同時(shí)記錄了反向調(diào)用依賴關(guān)系{Bi 組裝依賴Di}。組件掃描和啟動(dòng)裝置啟動(dòng)Si上的服務(wù)Ssi,服務(wù)Ssi實(shí)際上由服務(wù)Asi提供,SCA里稱這種自身并不真正提供服務(wù)實(shí)現(xiàn)的服務(wù)為升級(jí)服務(wù)(Promoting Service),同樣Asi由Bsi 提供,所以啟動(dòng)Ssi時(shí)會(huì)根據(jù)服務(wù)依賴關(guān)系去啟動(dòng)BS1。當(dāng)服務(wù)啟動(dòng)時(shí),通過對(duì)組件調(diào)用依賴的分析,即查詢引用Bei和引用Be2分別連接的服務(wù)Csi及服務(wù)Dsi,并啟動(dòng)Csi和Dsi ;如果組件C1108和組件D 1110同樣有調(diào)用依賴存在,則按同樣方法遞歸處理即可,通過這種方法可有效解決不被弓I用的服務(wù)也被啟動(dòng)的問題。
現(xiàn)在假設(shè)組件C 1108部署在服務(wù)器節(jié)點(diǎn)NodeC上,因?yàn)楣芾硇枰?,NodeC的配置發(fā)生變化,比如原來(lái)Csi提供http服務(wù)地址為http://192. 168. 1. 122 :8080/csl,現(xiàn)在修改 http服務(wù)端口為8088。NodeC配置一旦修改,需要重啟NodeC,組件C 1108相應(yīng)也被重啟, 而組件C重啟時(shí),組件管理器基于持久化機(jī)制恢復(fù)之前的組件實(shí)例Ci。組件實(shí)例Ci通過綁定信息版本,判斷是否服務(wù)綁定信息發(fā)生變化,如果沒有變化,則直接略過,如果綁定信息變化了,則取得記錄的反向依賴關(guān)系,得知Bi調(diào)用依賴了 Ci,取得Bi對(duì)應(yīng)的組件管理器,通過組件管理器更新組件Bi的服務(wù)綁定信息并重啟Bi。通過以上方法,可有效解決服務(wù)器節(jié)點(diǎn)配置變化而導(dǎo)致的人工重啟問題。另外如果整個(gè)組件依賴鏈中因?yàn)槟硞€(gè)組件實(shí)例失效,也是通過同樣的反向調(diào)用依賴關(guān)系的分析而實(shí)現(xiàn)的,工作原理相同,此處不再贅述。以上結(jié)合附圖詳細(xì)說明了本發(fā)明的技術(shù)方案,考慮到相關(guān)技術(shù)中,容易造成寶貴的服務(wù)器資源浪費(fèi),而當(dāng)某個(gè)組件停止運(yùn)行時(shí),往往導(dǎo)致管理員會(huì)重啟所有服務(wù)器,導(dǎo)致其他本可以正常運(yùn)行的服務(wù)中斷。因此,本發(fā)明通過提出了一種組件部署系統(tǒng)和一種組件部署方法,可以實(shí)現(xiàn)在分布式環(huán)境下對(duì)有復(fù)雜依賴關(guān)系的組件的方便部署和對(duì)實(shí)例的精細(xì)化管理,同時(shí)實(shí)現(xiàn)按需創(chuàng)建和啟動(dòng),避免對(duì)整體系統(tǒng)的影響。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種組件的分布式部署系統(tǒng),其特征在于, 包括客戶端、存儲(chǔ)裝置和服務(wù)器,其中,所述客戶端包括第一生成模塊,利用配置完成的組件項(xiàng)目生成組件部署包;第一通信模塊,連接至所述存儲(chǔ)裝置,用于將部署信息發(fā)送至所述存儲(chǔ)裝置,所述部署信息包括所述組件項(xiàng)目的信息、所述組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及所述組件部署包的信息;所述存儲(chǔ)裝置,連接至所述客戶端和所述服務(wù)器,存儲(chǔ)所述部署信息; 所述服務(wù)器包括第二通信模塊,連接至所述客戶端,用于接收所述組件部署包; 掃描模塊,掃描所述第二通信模塊接收到的所述組件部署包,并獲取所述組件部署包中的組件的狀態(tài)屬性;部署模塊,在所述狀態(tài)屬性為靜態(tài)的情況下,所述組件為靜態(tài)組件,將所述靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),在所述狀態(tài)屬性為動(dòng)態(tài)的情況下,所述組件為動(dòng)態(tài)組件,將所述動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并將所述組件與所述服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系存儲(chǔ)在所述存儲(chǔ)裝置中;創(chuàng)建模塊,為組件創(chuàng)建實(shí)例。
2.根據(jù)權(quán)利要求1所述的組件的分布式部署系統(tǒng),其特征在于,所述客戶端的所述第一通信模塊還用于將所述組件部署包發(fā)送至服務(wù)器節(jié)點(diǎn)上。
3.根據(jù)權(quán)利要求1所述的組件的分布式部署系統(tǒng),其特征在于,所述服務(wù)器還包括 第二生成模塊,為動(dòng)態(tài)組件生成加載器,所述加載器用于加載所述動(dòng)態(tài)組件中的資源。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的組件的分布式部署系統(tǒng),其特征在于,所述服務(wù)器還包括解析模塊,用于解析組件的配置文件,并對(duì)所述組件進(jìn)行第一判斷,所述第一判斷包括判斷所述組件是否由其他組件構(gòu)成,若判斷結(jié)果為否,則為所述組件創(chuàng)建實(shí)例,若所述判斷結(jié)果為是,則進(jìn)行第二判斷,所述第二判斷包括判斷所述其他組件是否位于本地,若所述其他組件位于本地,則對(duì)所述其他組件進(jìn)行所述第一判斷,若所述其他組件不位于本地,則通過查詢模塊查詢所述存儲(chǔ)裝置中存儲(chǔ)的所述其他組件的部署信息;所述查詢模塊,用于對(duì)存儲(chǔ)在所述存儲(chǔ)裝置中的部署信息進(jìn)行查詢; 檢測(cè)模塊,根據(jù)所述查詢模塊查詢到的所述部署信息,獲取部署有所述其他組件的服務(wù)器節(jié)點(diǎn),并檢測(cè)部署于所述服務(wù)器節(jié)點(diǎn)上的所述其他組件是否被正常部署,若是,則通過所述創(chuàng)建模塊為所述其他組件創(chuàng)建實(shí)例。
5.根據(jù)權(quán)利要求4所述的組件的分布式部署系統(tǒng),其特征在于,在所述創(chuàng)建模塊為所述其他組件創(chuàng)建實(shí)例前,還包括所述服務(wù)器通過所述第二通信模塊連接至所述服務(wù)器節(jié)點(diǎn),并通過所述檢測(cè)模塊獲取所述服務(wù)器節(jié)點(diǎn)上發(fā)起調(diào)用的實(shí)例的標(biāo)識(shí),然后通過所述查詢模塊查詢存儲(chǔ)在所述存儲(chǔ)裝置中的對(duì)應(yīng)于所述其他組件的部署信息,并獲取與所述其他組件存在調(diào)用關(guān)系的調(diào)用組件的標(biāo)識(shí),以及所述服務(wù)器還包括比較模塊,所述比較模塊用于比較所述實(shí)例的標(biāo)識(shí)和所述調(diào)用組件的標(biāo)識(shí),若所述實(shí)例的標(biāo)識(shí)中沒有所述調(diào)用組件的標(biāo)識(shí),則由所述創(chuàng)建模塊為所述調(diào)用組件創(chuàng)建實(shí)例。
6.一種組件的分布式部署方法,其特征在于,包括步驟202,利用配置完成的組件項(xiàng)目生成組件部署包,并存儲(chǔ)部署信息,所述部署信息包括所述組件項(xiàng)目的信息、所述組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及所述組件部署包的信息;步驟204,掃描所述組件部署包,獲取所述組件部署包中的組件的狀態(tài)屬性,若所述狀態(tài)屬性為靜態(tài),則所述組件為靜態(tài)組件,將所述靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),若所述狀態(tài)屬性為動(dòng)態(tài),則所述組件為動(dòng)態(tài)組件,將所述動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并存儲(chǔ)所述組件與所述服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。
7.根據(jù)權(quán)利要求6所述的組件的分布式部署方法,其特征在于,所述步驟202還包括將所述組件部署包發(fā)送至服務(wù)器節(jié)點(diǎn)上。
8.根據(jù)權(quán)利要求6所述的組件的分布式部署方法,其特征在于,所述步驟204還包括為動(dòng)態(tài)組件生成加載器,所述加載器用于加載所述動(dòng)態(tài)組件中的資源。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的組件的分布式部署方法,其特征在于,在所述步驟204之后,還包括步驟206,解析組件的配置文件,并對(duì)所述組件進(jìn)行第一判斷,所述第一判斷包括判斷所述組件是否由其他組件構(gòu)成,若判斷結(jié)果為否,則為所述組件創(chuàng)建實(shí)例,若所述判斷結(jié)果為是,則進(jìn)行第二判斷,所述第二判斷包括判斷所述其他組件是否位于本地,若所述其他組件位于本地,則對(duì)所述其他組件進(jìn)行所述第一判斷,若所述其他組件不位于本地,則查詢存儲(chǔ)的所述其他組件的部署信息;步驟208,根據(jù)所述其他組件的所述部署信息,獲取部署有所述其他組件的服務(wù)器節(jié)點(diǎn),并在檢測(cè)到部署于所述服務(wù)器節(jié)點(diǎn)上的所述其他組件被正常部署時(shí),為所述其他組件創(chuàng)建實(shí)例。
10.根據(jù)權(quán)利要求9所述的組件的分布式部署方法,其特征在于,在所述步驟208中,所述創(chuàng)建實(shí)例的過程還包括連接至所述服務(wù)器節(jié)點(diǎn),記錄所述服務(wù)器節(jié)點(diǎn)上發(fā)起調(diào)用的實(shí)例的標(biāo)識(shí),并查詢存儲(chǔ)的對(duì)應(yīng)于所述其他組件的部署信息,獲取與所述其他組件存在調(diào)用關(guān)系的調(diào)用組件的標(biāo)識(shí),若所述實(shí)例的標(biāo)識(shí)中沒有所述調(diào)用組件的標(biāo)識(shí),則為所述調(diào)用組件創(chuàng)建實(shí)例。
全文摘要
本發(fā)明提供了一種組件的分布式部署系統(tǒng)和方法,包括步驟202,利用配置完成的組件項(xiàng)目生成組件部署包,并存儲(chǔ)部署信息,部署信息包括組件項(xiàng)目的信息、組件項(xiàng)目中的至少一個(gè)組件的信息、多個(gè)組件之間的關(guān)聯(lián)信息以及組件部署包的信息;步驟204,掃描組件部署包,獲取組件部署包中的組件的狀態(tài)屬性,若狀態(tài)屬性為靜態(tài),則將靜態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),若狀態(tài)屬性為動(dòng)態(tài),則將動(dòng)態(tài)組件部署于對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn),并存儲(chǔ)組件與服務(wù)器節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。通過本發(fā)明的技術(shù)方案,可以實(shí)現(xiàn)在分布式環(huán)境下對(duì)有復(fù)雜依賴關(guān)系的組件的方便部署和對(duì)實(shí)例的精細(xì)化管理,同時(shí)實(shí)現(xiàn)按需創(chuàng)建和啟動(dòng),避免對(duì)整體系統(tǒng)的影響。
文檔編號(hào)H04L29/08GK102360308SQ20111029558
公開日2012年2月22日 申請(qǐng)日期2011年9月29日 優(yōu)先權(quán)日2011年9月29日
發(fā)明者程操紅 申請(qǐng)人:用友軟件股份有限公司