用于系統(tǒng)配置同步的分布式狀態(tài)模型的制作方法
【專利說明】用于系統(tǒng)配置同步的分布式狀態(tài)模型
【背景技術(shù)】
[0001] 在其中組件被部署到不同的計算機或節(jié)點的應(yīng)用部署中,一個節(jié)點上的部署常常 依賴于另一節(jié)點上的部署的狀態(tài)。例如,一個節(jié)點上的主應(yīng)用可能需要處于指定的狀態(tài),然 后冗余或輔助應(yīng)用的部署才能夠在另一節(jié)點上進行?,F(xiàn)有的系統(tǒng)通常使用單個點(諸如集 中式協(xié)調(diào)系統(tǒng)或中央儲存庫)來編排每一個節(jié)點上的部署。
[0002] 集中式協(xié)調(diào)系統(tǒng)或中央儲存庫可W控制每一個節(jié)點上的部署,并確保每一節(jié)點上 的應(yīng)用都W所希望的順序部署。當(dāng)每一應(yīng)用部署從一種狀態(tài)移動到下一狀態(tài)時,在繼續(xù)之 前,中央儲存庫驗證其他節(jié)點處于所需的狀態(tài)。然而,在現(xiàn)有系統(tǒng)中跨多個節(jié)點部署應(yīng)用的 情況下,節(jié)點不能夠直接確定應(yīng)用在其他節(jié)點上的狀態(tài)。
【發(fā)明內(nèi)容】
[0003] 提供本概述W便W簡化形式介紹將在W下詳細(xì)描述中進一步描述的一些概念。本 概述并不旨在標(biāo)識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護 主題的范圍。
[0004] 在典型的數(shù)據(jù)中屯、或云計算應(yīng)用部署中,不同的組件位于不同的計算機或節(jié)點 上。每一個組件都需要被部署并被配置,W使應(yīng)用正確地工作。在部署和配置過程中,需要 不同的組件之間的協(xié)調(diào),才能進行適當(dāng)?shù)呐渲谩?br>[000引"所希望的狀態(tài)配置"提供一種用于協(xié)調(diào)計算機或節(jié)點之間的配置步驟的機制。協(xié) 調(diào)基于特定的狀態(tài)一一即,節(jié)點A上的配置步驟將等待另一節(jié)點B到達特定的狀態(tài),然后節(jié) 點A才能繼續(xù)其配置。此協(xié)調(diào)將在不使用中央儲存庫或中央?yún)f(xié)調(diào)系統(tǒng)的情況下完成?,F(xiàn)有配 置系統(tǒng)沒有在不使用中央?yún)f(xié)調(diào)系統(tǒng)的情況下協(xié)調(diào)計算機或節(jié)點或節(jié)點之間的配置步驟的 途徑。
[0006] 示例實施例的一些方面包括:
[0007] -不要求中央?yún)f(xié)調(diào)系統(tǒng)或中央儲存庫;
[0008] -能夠等待計算機或節(jié)點上的配置到達特定狀態(tài);
[0009] -能夠查詢計算機或節(jié)點的狀態(tài);W及
[0010] -能夠等待一個W上的計算機或節(jié)點到達所希望的狀態(tài)。
[0011] 同步模型是被動的,其特征在于,依賴的節(jié)點查詢它依賴的節(jié)點的狀態(tài),而并非要 求該節(jié)點向正在等待的節(jié)點顯式地發(fā)送消息。不需要正在被等待的機器采取行動。通過拉 取模型進行同步,其中,依賴的節(jié)點查詢目標(biāo)的狀態(tài),而并非依賴于目標(biāo)積極地通知正在等 待的節(jié)點。
[0012] 附圖簡述
[0013] 為了進一步闡明本發(fā)明的各實施例的W上和其他優(yōu)點和特征,將參考附圖來呈現(xiàn) 本發(fā)明的各實施例的更具體的描述。可W理解,運些附圖只描繪本發(fā)明的典型實施例,因此 將不被認(rèn)為是對其范圍的限制。本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和解釋, 附圖中:
[0014] 圖I示出了分布式狀態(tài)模型,其中不同節(jié)點上的資源提供者基于遠(yuǎn)程節(jié)點上的部 署的狀態(tài)來控制本地應(yīng)用的部署。
[0015] 圖2示出了使用本發(fā)明的一個實施例的節(jié)點。
[0016] 圖3示出了使用示例配置文本的分布式數(shù)據(jù)庫應(yīng)用的兩個節(jié)點。
[0017] 圖4是示出了根據(jù)本發(fā)明的一個實施例的用于配置計算設(shè)備的方法或過程的流程 圖。
[0018] 圖5是示出了根據(jù)另一實施例的用于配置資源的方法或過程的流程圖。
[0019] 圖6示出了用于在不同的節(jié)點或機器上配置應(yīng)用和資源的合適的計算和聯(lián)網(wǎng)環(huán)境 的示例。
【具體實施方式】
[0020] 所希望的狀態(tài)配置提供分布式狀態(tài)模型,其中一個節(jié)點可W等待一個或多個其他 節(jié)點到達指定的狀態(tài)。運是通過將同步建模為可W被配置的特殊資源來實現(xiàn)的。
[0021] 一般而言,使用資源提供者來配置資源。預(yù)期每個資源都定義描述資源的哪些屬 性可W被配置的架構(gòu)。資源的配置的實施是通過資源提供者來管理的。資源提供者定義兩 個功能來將資源置于所希望的狀態(tài):
[0022] -Test-TargetResource(測試一目標(biāo)資源)-判斷資源是否處于所希望的狀態(tài);W 及
[0023] -Set-TargetResource(設(shè)置一目標(biāo)資源)-將資源設(shè)置為所希望的狀態(tài)。資源提供 者定義運兩個功能W使用系統(tǒng)。
[0024] 通過展示特殊同步資源來實現(xiàn)跨節(jié)點的同步。資源提供者功能按如下方式表現(xiàn): [002引Test-化rgetResource功能檢查遠(yuǎn)程機器或節(jié)點上的所需的資源是否處于指定的 狀態(tài)。
[0026] Set-化rgetResource功能等待直到遠(yuǎn)程機器或節(jié)點上的所需資源處于指定的狀 態(tài),然后將資源設(shè)置為所希望的狀態(tài)。
[0027] 通過配置同步資源W到達所希望的狀態(tài),所希望的狀態(tài)配置系統(tǒng)等待遠(yuǎn)程節(jié)點或 機器上的資源到達特定的狀態(tài)。資源不取決于狀態(tài)轉(zhuǎn)換來觸發(fā),它已經(jīng)完成。相反,同步資 源觀察所需的遠(yuǎn)程節(jié)點,W判斷它們是否處于所希望的狀態(tài)。當(dāng)向其中所有其他節(jié)點都處 于它們的最終狀態(tài)的現(xiàn)有的集群中添加新的依賴節(jié)點時,新節(jié)點簡單地驗證所需的遠(yuǎn)程資 源處于所希望的狀態(tài)。新節(jié)點不需要觀察遠(yuǎn)程資源中的狀態(tài)變化;它簡單地確定遠(yuǎn)程資源 的當(dāng)前狀態(tài)。
[0028] 圖1示出了分布式狀態(tài)模型,其中節(jié)點101-103上的資源提供者基于數(shù)據(jù)中屯、或云 計算環(huán)境中的其他節(jié)點上的資源部署的狀態(tài)來控制一個節(jié)點上的應(yīng)用的部署。每一個節(jié)點 101-103(M1-M3)都具有五個本地狀態(tài)(S1-S5)。本地地,每一個節(jié)點都按順序從狀態(tài)Sl移動 到狀態(tài)S5。然而,在某些情況下,節(jié)點在本地地移動到下一狀態(tài)之前必須等待遠(yuǎn)程節(jié)點處于 特定狀態(tài)。例如,在本地狀態(tài)S3,節(jié)點IOl(Ml)不能繼續(xù),直到節(jié)點102、103(M2,M3)兩者都到 達指定的狀態(tài)S5。
[0029] 節(jié)點102和103(M2,M3)各自都獨立地從本地狀態(tài)Sl移動到本地狀態(tài)S3。然而,在移 出本地狀態(tài)S3之前,每一個節(jié)點M2、M3都必須等待節(jié)點Ml到達其本地狀態(tài)S2。當(dāng)節(jié)點M2、M3 到達本地狀態(tài)S3時,它們各自都使用Test-化巧etResource功能104來確定節(jié)點Ml的當(dāng)前狀 態(tài)。在一個實施例中,節(jié)點M2、M3上的狀態(tài)S3查詢節(jié)點Ml的狀態(tài)S2, W判斷S2是否處于所希 望的狀態(tài)。如果節(jié)點Ml上的S2處于所希望的狀態(tài),那么節(jié)點M2和M3上的每一狀態(tài)S3都處于 所希望的狀態(tài),流程移到M2和M3上的本地狀態(tài)S4和S5。然而,當(dāng)節(jié)點M2、M3不在所希望的狀 態(tài)時,那么節(jié)點M2、M3上的S3使用Set-化rgetResource功能來觀察S3的狀態(tài),并檢測節(jié)點Ml 上的S2的W后的狀態(tài)變化W到達所希望的狀態(tài)。
[0030] 節(jié)點Ml設(shè)置本地資源,并從狀態(tài)Sl移動到S3,但是必須等待遠(yuǎn)程節(jié)點M2,M3到達狀 態(tài)S5。當(dāng)節(jié)點Ml到達本地狀態(tài)S3時,它使用Test-TargetResource功能105來確定節(jié)點M2和 M3的當(dāng)前狀態(tài)。當(dāng)該功能返回節(jié)點M2和M3不在本地狀態(tài)S5時,那么狀態(tài)S3節(jié)點Ml使用Set-化rgetResource功能來觀察節(jié)點12、]\0上的狀態(tài)55,并檢測節(jié)點12和13上的55^到達所希 望的狀態(tài)。
[0031] 圖2示出了使用本發(fā)明的一個實施例的節(jié)點201、211。每一個節(jié)點201、211都可^ 是不同的機器,諸如分布式網(wǎng)絡(luò)上的服務(wù)器或工作站計算機,或可W是在同一個設(shè)備上運 行的許多獨立實體中的一個,諸如虛擬機。每一個節(jié)點上的資源提供者202、212都管理資源 203、 213的配置。資源提供者202,212配置并實現(xiàn)它們的相應(yīng)的本地資源203、213的功能。當(dāng) 需要與其他節(jié)點同步時,資源提供者202、212也