專利名稱:群集范圍的讀復制更新的系統和方法
技術領域:
本發明涉及計算機系統和方法,其中在群集數據處理系統中的節點之間共享公共數據,同時保留數據完整性和一致性。更具體地,本發明涉及改進的數據一致性技術,其不需要分布式鎖或特別的消息傳遞協議,并且在其中數據讀操作能夠與數據更新操作并發地運行,而無需鎖或消息,從而顯著提高其性能。
背景技術:
作為背景,群集數據處理系統表示一種計算環境,其中多個分離的計算機(被稱為節點)合作提供公共數據處理服務或功能。經常是這樣的情況群集的節點共同地共享必須在整個群集中保持一致狀態還能夠在每一節點上進行本地操作的可變數據。例如,在分布式數據庫系統中,管理分布式數據存儲池的數據庫服務器節點必須各自維護當前哪些服務器節點是群集成員的一致視圖。每一節點知道在其他節點上發生的狀態改變并且在這些節點之間協調這些狀態改變是必需的。
在過去,群集系統使用了全局的居中鎖或對共享可變數據的居中訪問的租用。不過,獲得這些鎖或租用的進程必定導致大量開銷。在很少修改數據的情況下,這種開銷被極大地浪費。存在使獲得鎖/租用的等待時間與實際的盤I/O(輸入/輸出)的等待時間重疊的所謂“優化加鎖”技術的許多方法,在所述技術中,在任何提交均有可能失效的假設下,進程執行數據更新,因為自事務開始以來已經由另一進程改變了至少一個被提交的數據對象。與此相反,在所謂的“悲觀加鎖”的情況下,進程在執行任何更新事務之前明確地獲得一個鎖。也存在加時間戳和具有版本的技術用于維護數據一致性,但是這些技術需要使用特定數據版本的進程以某種方式進行登記,以使該版本避免被過早丟棄。在所有這些情況中,均需要群集范圍的加鎖/租用,即使工作負載完全為只讀的。盡管存在用于將鎖存儲于高速緩存中的許多技術,以便獲得兼容鎖時無需其后的I/O,但這仍會導致檢測該鎖仍被存儲于高速緩存中的開銷。
作為對于面向鎖/租用的互斥的可選方案,群集數據處理系統也能夠使用基于消息的協議,如兩階段提交。所述的兩階段提交協議是使群集中的節點同意提交事務的一種分布式算法。所述協議導致所有節點或者提交事務或者終止事務。將算法的兩階段斷開為提交請求階段和提交階段。在提交請求階段中,作為與事務有關的協調者的節點發送通知消息到所有其他節點,并等待來自其他節點的響應,其中每一節點或者同意請求或者提出終止回復。在提交階段中,如果所有節點已同意提交,則協調者發送提交消息,隨后所有的節點提交事務。否則,協調者發送終止消息。
盡管基于消息的互斥協議通常是有效的,但一個主要的缺點在于其易于被阻塞。例如,在兩階段提交協議中,當節點等待消息時將會阻塞。這意味著為了由已阻塞的進程所擁有的資源鎖而競爭的其他進程將不得不等待所述的鎖被解開。此外,單個節點將持續等待,即使所有其他節點均已失效。如果協調者永久性地失效,則一些成員將無法解決其事務。
前述情況推動搜索克服了前述問題的新的面向群集的互斥技術。尤其需要的是一種改進的技術,其不會負擔管理分布式鎖或租用的開銷,并且其不需要與直到接收到響應之前一直阻塞的等待消息的進程進行廣泛的消息交換。
發明內容
通過用于同步更新群集數據處理系統中的共享可變數據的方法、系統和計算機程序產品,解決了前述問題并獲得本領域的進展。在群集的每一節點執行數據單元更新操作,同時對于閱讀單元保留所述的共享可變數據的更新之前的視圖,所述閱讀單元可能正引用所述的更新之前的視圖。進行請求(如通過登記回調)在群集范圍的過渡期之后延遲移除所述共享可變數據的更新之前的視圖。執行過渡期檢測處理用于確定何時出現群集范圍的過渡期。當出現所述的群集范圍的過渡期時,執行對共享可變數據的更新之前的視圖的延遲移除。這種延遲移除允許閱讀單元忽略所有的消息傳遞和加鎖操作,其顯著地提高它們的性能。
在本發明的示例性實施例中,更新操作能夠首先在啟動更新的節點上執行,接著在群集數據處理系統中的其他節點上執行。在此實施例中,啟動更新的節點能夠首先執行其更新操作,并接著將更新通知到其他節點。更新啟動也能夠被用于執行群集范圍的過渡期檢測。具體地,能夠通過啟動更新的節點執行群集范圍的過渡期檢測,所述的節點從經過了本地過渡期或靜態的群集數據處理系統中的其他節點接收報告。也能夠在群集數據處理系統的所有節點上,例如通過維護經過了本地過渡期或靜態的節點計數的每一節點執行群集范圍的過渡期檢測。最后,群集范圍的過渡期能夠基于經過了本地過渡期或在可選方案中經過了本地靜態的群集數據處理系統中的所有節點。
從以下本發明的示例性實施例的更具體描述中,本發明前述的和其他的特征和優點將變得明顯,如附圖中所說明的,在附圖中圖1A-1D是根據傳統的讀復制更新機制的經過數據單元替換的數據單元的鏈表的圖解表示;圖2A-2C是根據傳統的讀復制更新機制的經過數據單元刪除的數據單元的鏈表的圖解表示;圖3是說明其中四個進程經過了靜態的過渡期的流程圖;圖4是示出了代表本發明能夠實現于其中的一個示例性環境的群集數據處理系統的功能框圖;圖5是示出了圖4的群集數據處理系統中的讀復制更新實例的功能成分的功能框圖;
圖6A、6B和6C是在圖4的群集數據處理系統的單一節點上根據本發明進行更新的數據單元的圖解表示;圖7是在圖4的群集數據處理系統的每一節點上根據本發明進行更新的數據單元的圖解表示;圖8是示出了可根據本發明執行的示例性群集范圍的過渡期處理的流程圖;以及圖9是示出了可根據本發明執行的群集范圍的過渡期處理的可選示例的流程圖。
具體實施例方式
能夠將本發明實現為已知作為讀復制更新的互斥技術的擴展。這種互斥技術通常被用于多處理器/單OS(操作系統)環境中,但是就申請者的知識而言,所述互斥技術并未被擴展到群集。讀復制更新技術允許訪問共享數據用于讀而不使用鎖,寫到共享存儲器、存儲器屏障、原子指令或其他計算上昂貴的同步機制,同時仍允許并發地更新(修改、刪除、插入等等)數據。所述技術很好地適合于多處理器計算環境,在所述多處理器計算環境中,與更新操作(更新單元)的數量比較起來,訪問共享數據組的讀操作(閱讀單元)的數量很大,并且其中對于每一讀操作使用其他互斥技術(例如鎖)的開銷成本將很高。作為示例,一種情況是網絡路由選擇表,其最多每隔幾分鐘更新一次,但每秒鐘搜索數千次,在此情況中,讀方面對鎖的獲取將非常繁重。
讀復制更新技術以兩個階段實現數據更新。在第一(初始更新)階段,用暫時性保留將更新的數據的兩個視圖的方式執行實際的數據更新。一個視圖是為了當前可能正引用數據的操作的利益而維護的舊(更新之前)數據狀態。另一個視圖是可用于為了更新之后訪問數據的操作的利益的新(更新之后)數據狀態。在第二(延遲更新)階段,在“過渡期”之后移除舊數據狀態,所述的“過渡期”的長度足以確保所有正執行的操作將不再維護對更新之前的數據的引用。
圖1A-1D說明了使用讀復制更新在數據單元A、B和C的組中修改數據單元B。將數據單元A、B和C安置于以非循環方式進行遍歷的單向鏈表中,其中每一單元包含指向鏈表中的下一單元的指針(或者對于最后的單元的NULL指針),此外還存儲了某項數據。假定全局指針(未示出)指向作為鏈表第一個成員的數據單元A。本領域的技術人員將理解,能夠使用各種常規編程構造中的任何一種而實現所述的數據單元A、B和C,所述的編程構造包括但不局限于通過C語言的“struct”變量定義的數據結構。
假定圖1A-1D的數據單元鏈表通過多個并發閱讀單元進行遍歷(不加鎖),并不時地通過刪除、插入或修改鏈表中的數據單元的更新單元進行更新。在圖1A中,數據單元B正被閱讀單元r1所引用,如數據單元下的垂直箭頭所示。在圖1B中,更新單元u1希望通過修改數據單元B而更新鏈表。u1不是簡單地更新此數據單元而不顧r1正在引用它的事實(這可能使r1崩潰),而是保留B同時生成B的更新版本(圖1C中示為數據單元B’)并將其插入鏈表。這通過u1獲得自旋鎖、為B’分配新存儲器、復制B的內容到B’、按照需要修改B’、更新從A到B的指針以使其指向B’以及解開該自旋鎖而完成。因此,例如閱讀單元r2的所有隨后(更新之后)遍歷該鏈表的閱讀單元將通過遇到B’而看到更新操作的結果。另一方面,舊閱讀單元r1將不受影響,因為保留了B的初始版本以及其指向C的指針。盡管r1當前在讀陳舊的數據,但存在許多能夠被容忍的情況,例如當數據單元跟蹤在計算機系統外部的部件的狀態(例如網絡連通性)并出于通信延遲的原因而必須容忍舊數據的時候。
在更新之后的隨后某個時間,r1將繼續其對鏈表的遍歷,并將移開其對B的引用。此外,將存在沒有其他閱讀單元被授權訪問B的一個時間。在參考如上所述的表示過渡期終止的這個時間上,u1能夠釋放B,如圖1D所示。
圖2A-2C說明了使用讀復制更新在數據單元A、B和C的單向鏈表中刪除數據單元B。如圖2A所示,假定閱讀單元r1當前引用B,而更新單元u1希望刪除B。如圖2B所示,更新單元u1更新從A到B的指針以使A現在指向C。這樣,不會干擾r1,但隨后的閱讀單元r2看到了刪除的結果。如圖2C所示,r1隨后將移開其對B的引用,在過渡期終止之后允許釋放B。
在讀復制更新機制的語境中,過渡期表示訪問由讀復制更新所守衛的數據單元的所有運行進程已經過“靜態”的點,在所述的“靜態”中,所述進程不再維護對該數據單元的引用,不再維護在該數據單元上的鎖,或者不再對數據單元狀態做出任何假定。通過約定,對于操作系統的內核碼路徑,語境(進程)轉換、空循環以及用戶模式執行均表示對于任一給定CPU的靜態(此處未列出的其他操作也能夠進行如此表示)。
在圖3中,示出了在四個單獨的CPU上運行的周期性地經過靜態(由雙豎條所表示)的四個進程0、1、2和3。過渡期(由豎虛線所表示)包含了其中所有四個進程已經過一個靜態的時間幀。如果四個進程0、1、2和3是遍歷圖1A-1D或圖2A-2C的鏈路的閱讀單元進程,則在過渡期之前引用舊數據單元B的這些進程在過渡期之后均不維護對B的引用。通過跟隨由更新單元插入的鏈接,由這些進程所引導的所有過渡期之后的搜索將繞過B。
存在可被用于在過渡期之后實現延遲數據更新的各種方法,包括但不局限于使用回調處理,如標題為“用于在使用執行歷史和線程監控的多處理器系統中達到降低互斥開銷并維護一致性的裝置和方法(ApparatusAnd Method For Achieving Reduced Overhead Mutual-Exclusion AndMaintaining Coherency In A Multiprocessor System Utilizing ExecutionHistory And Thread Monitoring)”的共同轉讓的美國專利號5,727,209中所描述的。在此將美國專利號5,727,209的內容并入作為參考。
回調處理技術期望共享數據單元的更新單元將執行建立被更新數據的新視圖的初始(第一階段)數據更新操作,并接著指定用于執行移除被更新數據的舊視圖的延遲(第二階段)數據更新操作的回調功能。更新單元將向讀復制更新子系統登記回調功能(下文中稱為回調),以使能夠在過渡期末端執行所述的回調。讀復制更新子系統跟蹤對于每一處理器的未決回調,并監控每個處理器的靜態活動,以便檢測當前過渡期何時終止。當當前過渡期終止時,執行適于處理的所有計劃中的回調。
在基于群集的數據處理系統中,不能使用在單OS系統中所使用的常規過渡期處理技術,因為數據處理節點的群集中的過渡期的概念可能不同。此外,數據更新的實現是不同的,因為每一節點必須與其他節點協調地執行它本身的本地更新操作。
現在轉到圖4,說明了示例性的群集數據處理系統(群集)2,其中對應于標號41、42、43和44示出了任意選擇的多個處理節點。根據性能要求、設計優選和其他因素能夠使用任何適當的計算機系統實現處理節點41、42、43和44。盡管在圖4中未示出,但這樣的每一節點常規地包括一個或多個處理器、程序存儲器、用于與其他節點通信的通信接口以及可選擇的例如磁盤驅動器或光盤驅動器的數據存儲系統。分別在每一處理節點41、42、43和44中執行的是其功能分布于整個群集2中的軟件應用6的實例61、62、63和64。假定軟件6使用在每一處理節點41、42、43和44的程序存儲器中存在的一組共享可變數據8。具體地,每一處理節點41、42、43和44分別維護共享可變數據8的拷貝81、82、83和84用于由其各自軟件實例61、62、63和64所使用。因為在每一處理節點41、42、43和44上維護共享可變數據6,所以數據必須總是在整個群集2中處于一致的狀態。
在可從國際商業機器公司得到的IBMTotalStorageSAN卷控制器產品中找到例示了就參考圖4而言所描述的群集特征的一個基于群集的數據處理系統,但其并未限制前述描述的普遍性。在其當前版本中,SAN卷控制器被實現為四個數據處理節點的群集,它的作業是為客戶端虛擬化SAN(存儲區域網絡)內的一組RAID存儲設備,所述的客戶端的數據存儲于其中。SAN卷控制器管理存儲設備,并建立出現于客戶端作為常規SCSI盤的它的虛擬盤表示。
SAN卷控制器系統的操作完整性需要每一節點維護關于所管理存儲設備的狀態的一致的一組配置數據,如存在什么設備以及每一設備的狀態。每一節點還需要維護關于群集狀態的一致的一組配置數據,如它的成員資格。由各種進程、線程或在一些節點上運行的其他執行語境(閱讀單元)周期性地讀這些配置數據,并由額外的進程、線程或其他執行語境(更新單元)周期性地更新這些配置數據。照這樣,SAN卷控制器中的節點必須實現適當的基于群集的互斥協議,以便為閱讀單元維護所要求的一致性,因為更新單元在各種節點上執行更新。
現在回到圖4的群集配置,類似于SAN卷控制器中的配置數據,將由各種閱讀單元周期性地讀在處理節點41、42、43和44上維護的共享可變數據8,并也將由各種更新單元周期性地更新所述的共享可變數據8,所有的閱讀單元和更新單元表示關聯于分布式軟件6的進程、線程或其他執行語境。標號101、102、103和104說明了可在處理節點41、42、43和44上周期性執行的單獨的數據讀操作(閱讀單元)。標號121、122、123和124說明了可在處理節點41、42、43和44上周期性執行的單獨的數據更新操作(更新單元)。出于本描述的目的,假定執行讀操作遠遠比執行更新更頻繁,從而滿足使用讀復制更新的一個基本前提。
由數據更新單元121、122、123和124執行的更新可以包括修改、插入或刪除包括共享可變數據6的一部分的任何數據單元。為使采用在整個群集2中維護數據一致性的方式的這種更新更容易,將一些處理節點41、42、43和44編程,以通過周期性地執行各自的讀復制更新實例141、142、143和144作為其操作系統功能的一部分而實現讀復制更新(RCU)子系統14。
如圖5所示,讀復制更新子系統14包括回調登記部件18作為其功能的一部分。回調登記部件18作為到讀復制更新子系統14的APl(應用程序接口),其能夠被更新單元121、122、123和124調用以登記用于在由更新單元本身所執行的初始(第一階段)更新之后的延遲(第二階段)數據單元更新的請求。如同在關于常規的讀復制更新處理中已知的,這些更新請求涉及移除陳舊數據單元,并將被處理作為讀復制更新子系統14內的回調。讀復制更新子系統14另外包括過渡期檢測部件20、回調處理部件22。以下更詳細地描述了這些部件的功能。
根據本發明,當例如處理節點41的更新單元141的更新單元想要更新共享可變數據8的單元時,它用不影響可能正并行使用更新之前的數據視圖的閱讀單元的方式執行數據單元對它本地拷貝的本地更新。如圖6A所示,如果更新單元121希望修改正被閱讀單元r1使用的數據單元A,它將首先建立例如閱讀單元r2的隨后的閱讀單元將看到的數據元素A的拷貝A’。如圖6B所示,為了r1的利益而保留初始數據單元A,并且更新單元121在它的讀復制更新子系統實例141的回調登記部件18中登記回調,如在關于常規的讀復制更新處理中已知的。除前述之外,更新單元121發送包含了已修改的數據單元A’的拷貝的更新請求到它的每一同等更新單元122、123和124。這樣的每一同等更新單元122、123和124將為了隨后閱讀單元的利益而安置已修改數據單元A’,并接著在關聯于每一同等讀復制更新子系統實例142、143和144的回調登記部件18中登記回調。
通過目前存在于所有處理節點41、42、43和44上的新的數據單元A’的拷貝,每一讀復制更新子系統實例141、142、143和144的過渡期檢測部件20執行過渡期檢測功能(見下),在此之后,每一讀復制更新子系統實例141、142、143和144的過渡期處理部件22移除數據單元A。圖7中示出了在每一處理節點41、42、43和44上執行的整個更新順序。如所能夠看到的,所有的對等更新單元122、123和124對它們的數據單元A的拷貝(A2、A3和A4)執行同樣的更新處理,并在它們各自的讀復制更新子系統142、143和144的回調登記部件18中登記回調。從而在所有節點上維護了數據一致性。
對于涉及刪除數據單元的更新,更新處理是類似的,除了沒有涉及到已修改的數據單元。由啟動更新單元發送的更新請求將簡單地導致同等更新單元為了隨后閱讀單元的利益而實現刪除,并接著在過渡期后登記用于移除已刪除數據單元的回調,以便當前閱讀單元不被影響。對于涉及插入新數據單元的更新,不需要回調處理。啟動更新單元簡單地需要將新數據單元的拷貝分發到其同等更新單元,用于將所述的拷貝并入到每一同等更新單元的共享可變數據82、83和84中。
能夠以多種方式執行對群集2內的過渡期的檢測。一個方法是基于每個節點的過渡期實現群集范圍的界線。當每一處理節點41、42、43和44已經對于其內部(內部節點)數據使用了讀復制更新處理,并被編程用于檢測關于在每一特定節點上運行的處理器的周期時,能夠使用這種實現。假定于每一處理節點41、42、43和44上存在這種本地過渡期檢測智能,則能夠以多種方式進行對群集范圍的過渡期的檢測。圖8和9說明了兩個可選方案。
在圖8的步驟30中,讀復制更新子系統實例141、142、143和144中其一的過渡期檢測部件20,即關聯于在啟動節點上的啟動更新單元的過渡期檢測部件20將過渡期請求廣播到關聯于同等節點的其他每一讀復制更新子系統實例中的過渡期檢測部件20。在步驟32,同等節點開始過渡期跟蹤,并當本地過渡期過去時進行響應。當在步驟34中由啟動更新的節點確定所有同等節點已報告了本地過渡期時,該啟動更新的節點批準同等節點通過移除它們的更新之前的舊數據的拷貝而完成數據更新。
圖9說明了群集范圍的過渡期檢測的另一可選方案,其中每一處理節點41、42、43和44維護在每一節點上在本地已過去的過渡期的數量的累積計數。在步驟40中,在每一讀復制更新子系統實例141、142、143和144中的過渡期檢測部件20啟動累積的過渡期計數。在步驟42中,啟動本地過渡期檢測處理以跟蹤本地過渡期活動。步驟44測試本地過渡期是否已經過去。如果本地過渡期已經過去,則在步驟46中將過渡期指示廣播到其他節點。這能夠以多種方式完成,例如,通過將過渡期指示借道到在群集系統中常規地被用于監控節點操作耐久性的類型的常規的心跳消息上。在廣播過渡期指示之后,在步驟48中終止本地過渡期處理,并且在步驟50中增加累積的過渡期計數。如果在步驟44中確定本地過渡期還未過去,則步驟52測試另一節點是否已報告了過渡期。如果另一節點還未報告過渡期,在步驟44重新開始處理。如果已報告了過渡期,則在步驟50中增加累積的過渡期計數。在步驟54中,進行測試以確定是否所有節點已報告了過渡期。如果它們并未都報告過渡期,則處理返回到步驟44。如果所有節點均已報告了過渡期,則在步驟56中每一讀復制更新實例141、142、143和144中的過渡期檢測部件20將調用其回調處理部件22以實現延遲更新處理。
注意,對于相對小的群集,能夠使用示出了這些節點的位圖,而代替使用對已經過過渡期的節點的數量進行計數的計數器。對于大的群集,能夠使用組合樹。
如上所述,過渡期檢測的前述實例假定每一處理節點41、42、43和44被編程用于檢測本地過渡期。在不存在這種編程的情況下,群集范圍的過渡期檢測能夠基于每一節點的靜態定義,所述的靜態定義被選擇用于確保給定節點上沒有閱讀單元能夠維護對該節點的共享可變數據8的更新之前的舊版本的引用,所述的舊版本將在回調處理期間被移除。一旦選擇了適當的靜態定義,則可將任一適當的技術用于檢測群集范圍的過渡期何時已經過去,作為所有節點經過了靜態的結果。例如,根據所使用的適當定義,可用靜態代替過渡期而使用圖8和9的過程中的任一個。
因此,已公開了一種用于管理群集數據處理系統中的共享可變數據的技術,其中能夠用不影響并行閱讀單元的方式執行對共享數據的更新。有利地,為了訪問被更新的數據,閱讀單元既不需要獲得鎖也不需要參與信息接發。它們能夠完全地繼續進行而不知道正在執行的并行更新,從而顯著地提供了它們的性能。
將要理解,前述概念可被不同地包含于數據處理系統、機器實現的方法和計算機程序產品中的任一個中,其中在一個或多個數據存儲媒體上記錄編程方法,用于控制數據處理系統執行所需功能。所述媒體可以為常規地用于商業軟件銷售的類型的便攜式光存儲盤。這種媒體能夠單獨地存儲本發明的編程方法,或者連同操作系統或結合了讀復制更新功能的其他軟件產品一起存儲。也能夠將所述編程方法存儲于便攜式磁媒體(如軟盤、閃速存儲器棒等等)之上或與并入計算機平臺中的驅動器系統所結合的磁媒體(如盤驅動器)上。
盡管已描述了本發明的各種實施例,但應該顯而易見,根據本發明能夠實現許多變化和可選實施例。因此,應該理解,除了根據所附權利要求及其同等物的精神之外,不以任何方式限制本發明。
權利要求
1.一種用于同步對群集數據處理系統中的共享可變數據的更新的方法,所述方法包括在所述群集數據處理系統的每一節點上執行數據單元的更新操作,同時為閱讀單元保留所述的共享可變數據的更新之前的視圖,所述閱讀單元可能正引用所述的更新之前的視圖;請求在群集范圍的過渡期之后延遲移除所述共享可變數據的所述更新之前的視圖;檢測何時出現群集范圍的過渡期;以及在檢測所述的群集范圍的過渡期之后執行所述的延遲移除;由此,訪問所述的共享可變數據的閱讀單元能夠繼續進行而無需加鎖或消息傳遞,從而提高它們的性能。
2.根據權利要求1的方法,其中所述的更新操作首先在啟動更新的節點上執行,接著在所述群集數據處理系統中的其他節點上執行。
3.根據權利要求2的方法,其中所述的啟動更新的節點將所述的更新通知到所述的其他節點。
4.根據權利要求1的方法,其中所述的請求步驟包括在每一節點上登記回調。
5.根據權利要求1的方法,其中所述的群集范圍的過渡期檢測由啟動更新的節點執行。
6.根據權利要求5的方法,其中所述的群集范圍的過渡期檢測由所述啟動更新的節點執行,所述啟動更新的節點從經過本地過渡期或靜態的所述群集數據處理系統中的其他節點接收報告。
7.根據權利要求1的方法,其中所述的群集范圍的過渡期檢測在所述的群集數據處理系統的所有節點上執行。
8.根據權利要求7的方法,其中所述的群集范圍的過渡期檢測由維護經過本地過渡期或靜態的節點的計數的所述的群集數據處理系統的每一節點執行。
9.根據權利要求1的方法,其中所述的群集范圍的過渡期基于經過了本地過渡期的所述群集數據處理系統中的所有節點。
10.根據權利要求1的方法,其中所述的群集范圍的過渡期基于經過了本地靜態的所述群集數據處理系統中的所有節點。
11.一種具有多個數據處理節點的群集數據處理系統,所述系統適用于同步對共享可變數據的更新,并包括用于在所述群集數據處理系統的每一節點上執行數據單元的更新操作同時為閱讀單元保留所述的共享可變數據的更新之前的視圖的更新裝置,所述閱讀單元可能正引用所述的更新之前的視圖;用于請求在群集范圍的過渡期之后延遲移除所述共享可變數據的所述更新之前的視圖的請求裝置;用于檢測何時出現群集范圍的過渡期的過渡期檢測裝置;以及用于在檢測所述的群集范圍的過渡期之后執行所述的延遲移除的移除裝置;由此,訪問所述的共享可變數據的閱讀單元能夠繼續進行而無需加鎖或消息傳遞,從而提高它們的性能。
12.根據權利要求11的系統,其中所述的更新裝置包括首先在啟動更新的節點上執行更新操作,接著在所述群集數據處理系統中的其他節點上執行更新操作。
13.根據權利要求12的系統,其中所述的啟動更新的節點適用于將所述的更新通知到所述的其他節點。
14.根據權利要求11的系統,其中所述的請求裝置包括在每一節點上的回調登記裝置。
15.根據權利要求11的系統,其中所述的過渡期檢測裝置關聯于所述的啟動更新的節點。
16.根據權利要求15的系統,其中所述的過渡期檢測裝置包括關聯于所述啟動更新的節點的裝置,用于從經過本地過渡期或靜態的所述群集數據處理系統中的其他節點接收報告。
17.根據權利要求11的系統,其中所述的過渡期檢測裝置包括用于在所述的群集數據處理系統的所有節點上執行群集范圍的過渡期檢測的裝置。
18.根據權利要求17的系統,其中所述的過渡期檢測裝置包括關聯于所述的群集數據處理系統的每一節點的裝置,用于維護經過本地過渡期或靜態的節點的計數。
19.根據權利要求11的系統,其中所述的群集范圍的過渡期基于經過了本地過渡期的所述群集數據處理系統中的所有節點。
20.根據權利要求11的系統,其中所述的群集范圍的過渡期基于經過了本地靜態的所述群集數據處理系統中的所有節點。
21.一種用于同步更新群集數據處理系統中的共享可變數據的計算機程序產品,所述計算機程序產品包括一個或多個數據存儲媒體;存儲于所述數據存儲媒體上的裝置,用于將數據處理平臺編程通過如下步驟進行操作在所述群集數據處理系統的每一節點上執行數據單元的更新操作,同時為閱讀單元保留所述的共享可變數據的更新之前的視圖,所述閱讀單元可能正引用所述的更新之前的視圖;請求在群集范圍的過渡期之后延遲移除所述共享可變數據的所述更新之前的視圖;檢測何時出現群集范圍的過渡期;以及在檢測所述的群集范圍的過渡期之后執行所述的延遲移除;由此,訪問所述的共享可變數據的閱讀單元能夠繼續進行而無需加鎖或消息傳遞,從而提高它們的性能。
22.根據權利要求21的計算機程序產品,其中所述的更新操作首先在啟動更新的節點上執行,接著在所述群集數據處理系統中的其他節點上執行。
23.根據權利要求22的計算機程序產品,其中所述的啟動更新的節點將所述的更新通知到所述的其他節點。
24.根據權利要求21的計算機程序產品,其中所述的請求步驟包括在每一節點上登記回調。
25.根據權利要求21的計算機程序產品,其中所述的群集范圍的過渡期檢測由啟動更新的節點執行。
26.根據權利要求25的計算機程序產品,其中所述的群集范圍的過渡期檢測由所述啟動更新的節點執行,所述啟動更新的節點從經過本地過渡期或靜態的所述群集數據處理系統中的其他節點接收報告。
27.根據權利要求21的計算機程序產品,其中所述的群集范圍的過渡期檢測在所述的群集數據處理系統的所有節點上執行。
28.根據權利要求27的計算機程序產品,其中所述的群集范圍的過渡期檢測由維護經過本地過渡期或靜態的節點的計數的所述的群集數據處理系統的每一節點執行,。
29.根據權利要求21的計算機程序產品,其中所述的群集范圍的過渡期基于經過了本地過渡期的所述群集數據處理系統中的所有節點。
30.根據權利要求21的計算機程序產品,其中所述的群集范圍的過渡期基于經過了本地靜態的所述群集數據處理系統中的所有節點。
全文摘要
用于同步更新群集數據處理系統中的共享可變數據的系統、方法和計算機程序產品。在群集的每一節點上執行數據單元的更新操作,同時為閱讀單元保留所述的共享可變數據的更新之前的視圖,所述閱讀單元可能正引用所述的更新之前的視圖。進行請求在群集范圍的過渡期之后延遲移除所述共享可變數據的更新之前的視圖。執行過渡期檢測處理用于檢測何時出現群集范圍的過渡期。當出現群集范圍的過渡期時,執行對所述共享可變數據的更新之前的視圖的延遲移除。這種延遲移除允許閱讀單元省略所有的消息傳遞和加鎖,其顯著地提高了它們的性能。
文檔編號G06F15/16GK1821965SQ200510115128
公開日2006年8月23日 申請日期2005年11月10日 優先權日2004年11月30日
發明者P·E·麥肯尼, J·薩特蘭 申請人:國際商業機器公司