摘 "要: 在分布式系統中,由于復制能夠增強性能,提供高可用性和容錯能力,因此它是保證分布式系統有效性的一個關鍵技術。為了保證數據安全、可用、可靠、可擴展性和服務的高效、連續性,分布式存儲系統需要完善的數據管理機制。主要討論數據復制的基本原則,用于復制數據管理的基本體系結構模型,副本對象上進行的一個操作通常涉及的5個階段,以及在這個模型下不同的復制數據的方式是如何提供容錯服務的,并在數據量大的情況下,對復制模型提出改進的方式。
關鍵詞: 分布式系統; 數據復制; 副本管理器; 容錯
中圖分類號: TN964?34 " " " " " " " " " 文獻標識碼: A " " " " " " " " " " " " " "文章編號: 1004?373X(2015)02?0035?04
Research on data replication of distributed system
ZHANG Qian, XIN Da?xin
(Xi’An Technological University, Xi’an 710021, China)
Abstract: In a distributed system, the replication can enhance performance, improve the capabilities of high availability and fault tolerance, so it is a key technology to ensure the effectiveness of the distributed system. In order to ensure data security, availability, reliability, scalability, efficiency and continuity of service, the distributed storage system needs a perfect data management mechanism. The basic principles of data replication, basic architecture model of the replicated data management, five stages usually involved in an action on a replica object, and principle how to provide fault tolerance service in different data replication modes with this model are discussed. An improving way of the replication model for dealing with large amount of data is proposed.
Keywords: distributed system; data replication; replica manager; fault tolerance
0 "引 "言
在分布式存儲系統中,對數據的拷貝能夠增強性能,提供高可用性和容錯能力,因此它是保證分布式系統有效性的一個關鍵技術。將創建的多個數據副本合理地分布在多個服務器節點上,用來分擔訪問請求的處理任務,可以在一定程度上降低節點失效率,縮短用戶響應時間[1?2]。本文將討論在數據復制過程中,副本管理器采用何種復制方式能夠更準確高效地完成數據副本的更新工作,分布式系統的復制模型,以及數據拷貝的方式。
1 "復制數據管理
在分布式存儲系統中不僅數據量巨大,而且為了保證系統的可靠性,每份數據對象的副本數量也很多,因此,維護各個節點中副本的一致性就成了一個很重要的問題[3]。在計算機科學領域中,數據的一致性問題已經存在了很長的時間,構成了分布式計算的基礎[4]。而實際上,統計學和管理科學是對于一致性問題較正式的研究源頭[5]。
1.1 "數據復制的基本原則
當執行一個操作時,用戶不需要知道存在多少個數據副本,僅僅對其中一項操作,而不管事實上的操作可能是針對一個以上的拷貝一起進行的,這是數據復制的其中一項原則即復制透明性。一致性是數據復制的另一項基本原則,然而,在不同的具體情況下,數據一致性在強度上是會有所不同的。給定對象的副本不一定是完全相同的,至少不要求在任何時間點都一樣,一些副本可能已經更新了最新的數據,但是一些副本可能還沒有收到這個更新。但是如果不同的客戶對同一個對象發出請求,卻得到不一致的結果,這通常是不可接受的。
1.2 "系統模型
副本由不同的副本管理器(Replica Manager,RM)來管理,副本管理器是包含了特定計算機上的副本,并且直接操作這些副本的組件。副本管理器所組成的集合可以是靜態的,也可以是動態的。在動態系統中,新的副本管理器可能會不斷出現,副本管理器可能崩潰,接著他們被認為離開了系統。而這在靜態的系統中不允許出現新的副本管理器,也不會出現新的副本管理器,但它們可能暫停工作很長時間。
如圖1所示副本管理的一般模型,副本管理器集合給用戶提供了某種服務。副本管理器存儲在服務器上,前端(Front End,FE)組件作為用戶訪問服務器的門戶,每個客戶發出的請求首先被一個前端組件處理,它的作用是由消息傳遞的方式,代替客戶,與多個副本管理器進行通信,而不是直接讓客戶進行通信。這種手段保證了復制透明性[6]。
lt;E:\王芳\現代電子技術201502\Image\05t1.tifgt;
圖1 用于復制數據管理的基本的體系結構模型
副本對象上進行的一個操作通常涉及5個階段,但是對于不同類型的系統,每個階段的動作都是不一樣的。
(1) 請求。前端將來自客戶的請求分給一個或多個副本管理器。一種形式是前端只和某一個副本管理器通信,然后由這個副本管理器與其他副本管理器通信;另一種形式是將這些副本管理器看成一個組,由前端將請求組播到各個副本管理器;
(2) 協調。接到請求后,副本管理器需要進行協調來保證執行的一致性,它們會對是否執行請求達成一致,并同時決定該請求相對于其他請求的次序;
(3) 執行。副本管理器執行請求,也包括執行的效果可以去除的試探性請求;
(4) 協定。副本管理器對將要提交的處理結果達成一致;
(5) 響應。一個或多個副本管理器給前端應答。一種形式是由一個副本管理器響應前端,還有一種情況是由前端接受一組副本管理器的應答,然后選擇或綜合成一個結果返回給客戶。
副本的撤銷也是一種必要情況,引起副本撤銷的原因有很多,例如副本所在節點的存儲空間不夠; 副本生命周期結束; 副本所在節點的處理能力達到極限;副本被訪問的頻率很低。生成一個副本的代價是比較高的,所以無謂的副本刪除要盡量避免[7]。
1.3 "副本復制策略
副本復制策略有5種,路徑復制、源請求復制、優先級復制、鄰居節點復制和隨機復制[8?9]:
(1) 路徑復制。將副本發送給請求路徑上的所有節點。實現原理簡單是它的優點,也很方便數據的查找;但是創建的副本數量會遠遠大于需求量,這就會增加維護副本的一致性的開銷;
(2) 源請求復制。只將副本發送給請求節點。當對目的節點請求時,若目的節點沒有過載,那么就可以讀取數據,若目標節點沒有多余的能力處理,就創建一個新副本,并且是在請求節點未過載的情況下,才把創建的新副本發給它,同時通知路徑上所有節點此請求節點上也存儲了該數據副本;
(3) 優先級復制。優先將副本發送向已經有副本的節點,直至這些節點達到飽和,再選擇其他節點來存儲數據副本;
(4) 鄰居節點復制。保存所有網絡數據的訪問歷史記錄,新建一份訪問率較高的副本,并發送給頻繁請求該副本的節點的鄰節點,當該節點再次請求訪問該數據時,就可以到它的鄰居節點上直接讀取數據;
(5) 隨機復制。在選擇一個或多個節點來存放數據副本時,采用隨機的方式,而隨機選擇的對象分為兩種,請求路徑上的節點以及整個網絡的節點。
2 "容錯服務
如果在副本管理器發生故障的條件下,服務還能夠保持響應用戶請求,同時用戶并不能區分該服務是在副本數據上實現的,還是被一個正確的副本管理器提供的,那么這個基于復制的服務就是正確的。
在可靠性理論中,一般都會用RAS來描述系統的健壯與完整性。RAS也就是可靠性(Reliability),可用性(Availability)和可維護性(Serviceablility)[10]。
2.1 "線性化能力
假設一個系統中的兩個副本管理器分別位于A和B兩個計算機上,它們都維護x和y兩個銀行賬戶的副本。客戶在本地計算機上查看和更新賬戶,如果本地的服務器出現故障,那么使用另一個服務器。當對客戶的操作響應結束后,副本管理器會在后臺相互傳播更新。x和y的初始余額為0.00。如表1所示。
客戶1在本地的副本管理器A上更新賬戶x余額為1.00,然后更新y余額為2.00,但是此時A發生故障,于是客戶1將這個操作放在副本管理器B上。現在客戶2在他的本地副本管理器B上讀取數據,查詢到y余額為2.00,但x仍為0.00,這是因為A發生故障,應用在它上的x的更新還沒有傳遞過來。
這個執行不符合銀行賬戶的規約,也就是不正確的,而對于復制對象有不同的正確性準則,最嚴格的正確系統是可線性化的,這個性質就是可線性化能力。
表1 不同客戶更新及查詢數據
一個被復制的共享對象服務,如果對于任何執行,存在一個由全體用戶發出的執行序列,并滿足下面的兩個準則,那么這個服務就認為是可線性化的:
(1) 操作的交錯序列,符合對象的單個正確副本所遵循的規約。
(2) 操作的交錯執行次序與實際運行中的次序實時一致。
2.2 "順序一致性
線性化能力中要求的實時性是現實中所需要的,客戶應該收到最新最近的數據。但是這是一種理想條件,受到網絡延遲及其他因素的制約。一個更能滿足現實需要并且相對嚴格的條件是順序一致性(Sequential Consistency)。在不要求實時的情況下,這個條件抓住了處理請求的順序實質。它規定:如果所有的進程以一定的順序執行操作,每一個進程的操作都以程序規定的順序出現,則任何操作的結果都是一樣的。順序一致存儲器不保證讀返回的值是1 nm,1 ms甚至1 min以前另一個進程寫入的,它只保證所有進程以相同的順序看見存儲器訪問[11]。
一個被復制的共享對象服務,如果對于任何執行,存在一個由全體用戶發出的執行序列,并滿足下面的2個準則,那么這個服務就認為是順序一致的:
(1) 操作的交錯序列符合對象的單個正確副本所遵循的規約。
(2) 操作在交錯執行中的次序,和在每個客戶程序中執行的次序一致。
2.3 "被動復制
在圖2中的復制模型中,任何時候都有一個主副本管理器和至少一個次副本管理器,稱為“從管理器”或“備份”。這個模型的實質就是在上面2.2節中提到的前端與服務交互方式中的一種情況,前端只和主副本管理器通信,然后由主副本管理器執行操作并將更新操作發送到服務中的其他備份管理器。如果主副本管理器出現故障,那么將從剩余的備份管理中提升一個稱為新的主副本管理器。
lt;E:\王芳\現代電子技術201502\Image\05t2.tifgt;
圖2 被動(主備份)模型
在主備份管理器出現故障時,如果某個備份變成新的主備份管理器并且新的系統配置從故障點正確接管的話,即滿足下面條件時,系統仍具有線性化能力:
(1) 主副本管理器被惟一的備份副本管理器代替
(2) 當接管主副本管理器時,剩余的副本管理器在哪些操作已經被執行上達成一致。
被動復制的缺點是開銷相對較大,試圖同步通信在每次組播時需要要幾個回合的通信,而且當主副本管理器發生故障時,組通信系統需要進行協商并傳遞試圖,這會導致更多的延時。
考慮到當用戶較多,與服務通信數量較大的問題,可以將這個模型做一些改進,客戶可以將讀的請求發送給備份副本管理器,這樣可以減輕主副本管理器的負載,雖然不能保證線性化,但是仍能提供具有順序一致性的服務給用戶。
2.4 "主動復制
如圖3中所示的主動復制模型中,副本管理器是一個狀態機,所有副本管理器被組織成一個組,并充當同等的角色。前端將用戶發出的請求消息組播到副本管理器組,組內的副本管理器按相同但獨立的方式來處理請求并作出響應。
lt;E:\王芳\現代電子技術201502\Image\05t3.tifgt;
圖3 主動復制模型
可以看出任何一個副本管理器的崩潰都不會對服務的性能產生影響,因為剩下的副本管理器能繼續正常處理請求并做出應答。這個系統具有順序一致性,所有的副本管理器處理同樣次序的請求,組播的可靠性保證每一個正確的副本管理器處理同樣的請求集合,全序保證以同樣的順序處理他們。主動復制系統并不具有線性化能力,因為副本管理器處理請求的全排序未必和客戶發出這些請求的實時次序相一致。
3 "結 "語
本文分析了分布式系統中的用于復制數據管理的基本的體系結構模型及它的執行過程,進而討論了向用戶提供容錯服務的復制模型,并在這個基礎上提出了一些改進。然而,現實中的實際情況是多變而復雜的,在解決實際問題時需要根據具體情況做出相應的處理,才能使得系統有更好的可用性和安全性。
參考文獻
[1] 徐小龍,鄒勤文,楊康.分布式存儲系統中數據副本管理機制[J].計算機技術與發展,2013(2):245?249.
[2] 葛建清.異質結構化對等網絡動態副本訪問負載均衡策略研究[D].上海:華東師范大學,2010.
[3] 王泰格,邵玉如,楊翌.分布式存儲系統介紹及其數據一致性實現方法探究[J].企業技術開發,2012(8):18?19.
[4] LYNCH N A. Distributed algorithms [M]. San Franciso, CA: Morgan Kaufmann, 1997.
[5] DE GROOT M H. Reaching a consensus [J]. American Statistical Association, 1974, 69(345): 118?121.
[6] COULOURIS George, DOLLIMORE Jean, KINDBERG Tim. Distributed systems concepts and design [M]. 金蓓弘,馬應龍,譯.北京:機械工業出版社,2013.
[7] 陳賡,余宏亮,張堃.對等網絡中基于位置信息和文件流行度的自適應復本管理機制算法[J].計算機學報,2009,32(10) : 1927?1937.
[8] Lü Q, CAO P, COHEN E, et al. Search and replication in unstructured peer?to?peer networks [C]// 16th International Conference on Supercomputing. New York: ACM Press, 2002: 11?15.
[9] BASSAM A A, CHEN W,ZHOU B B, et al. Effects of replica placement algorithms on performance of structured overlay networks [C]// Parallel and Distributed Processing Symposium. Nice: IPDPS, 2007: 111?117.
[10] 王偉娜.分布式存儲系統中容錯子系統的設計與實現[D].沈陽:東北大學,2008.
[11] 楊玲,李俊峰.分布式系統中存儲器的一致性問題[J].現在計算機,2005(4):2?9.