本發(fā)明涉及分布式存儲系統(tǒng)領域,具體涉及一種在分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的方法,其目的是用來解決當前分布式存儲系統(tǒng)中更新數(shù)據(jù)效率低下的問題,實現(xiàn)高效、低成本網(wǎng)絡數(shù)據(jù)的交換與更新。
背景技術:
一個完整的分布式存儲系統(tǒng)是由很多處在不同位置的節(jié)點通過網(wǎng)絡連接在一起形成的,海量的數(shù)據(jù)分布在整個網(wǎng)絡系統(tǒng)的不同節(jié)點中。連接到該分布式存儲系統(tǒng)的所有計算機都可以訪問任意一個節(jié)點中的數(shù)據(jù)。這些數(shù)據(jù)有的是只讀數(shù)據(jù),有的是可寫數(shù)據(jù),在讀寫數(shù)據(jù)的時候一個很重要的問題就是要保證每次讀到的數(shù)據(jù)是可信的。這里的可信數(shù)據(jù)不僅是指數(shù)據(jù)是真是存在,更重要的是這些數(shù)據(jù)是否為臟數(shù)據(jù),即雖然已經(jīng)被更新過,但在訪問中并沒有體現(xiàn)出來的數(shù)據(jù)。因為在分布式存儲系統(tǒng)中,存儲的數(shù)據(jù)量巨大,而且每個數(shù)據(jù)對象的副本數(shù)量非常多,在分布式存儲系統(tǒng)中,為了保證存儲系統(tǒng)工作的高性能,對于系統(tǒng)中的每個用戶都要盡量減小網(wǎng)絡的延遲同時要降低因網(wǎng)絡擁塞造成的影響。因此,如何維護各個節(jié)點中副本的一致性成為了一個很關鍵的問題。
針對上述問題,
本技術:
發(fā)明了一種基于時間戳機制的保持數(shù)據(jù)一致性實現(xiàn)方法,不必實時更新數(shù)據(jù),只需要判斷文件的時間戳,只有在發(fā)現(xiàn)節(jié)點上的文件時間戳有滯后的情況下,才發(fā)生數(shù)據(jù)傳輸,使用這種更新數(shù)據(jù)的方法降低了對網(wǎng)絡帶寬的要求,更加容易實現(xiàn)數(shù)據(jù)最終的一致性。
技術實現(xiàn)要素:
本申請所述發(fā)明提出了一種基于時間戳機制的數(shù)據(jù)一致性實現(xiàn)思路。發(fā)明采用如下技術方案:
一種在分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的方法,其特征在于,該方法包括如下步驟:當節(jié)點需要改動一個數(shù)據(jù)時,先通過廣播提交改動請求和自己當前副本的時間戳,此時該節(jié)點即為廣播源節(jié)點;其他節(jié)點收到廣播信息后,判斷自己是否有該文件副本;如果有,則在自己的副本較新時將自己的副本傳給廣播源節(jié)點;廣播源節(jié)點若收到多個節(jié)點傳來的副本,則選取最新的一個副本替換自己的副本,然后進行改動數(shù)據(jù)。
如上所述的在分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的方法,其特征還在于,其他節(jié)點收到廣播信息后,判斷自己是否有該文件副本的步驟還包括:如果沒有該文件副本則不進行任何操作。
如上所述的在分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的方法,其特征還在于,其他節(jié)點收到廣播信息后,是通過時間戳來判斷文件副本的新舊,如果沒有比廣播源節(jié)點新的副本則不進行任何操作。
如上所述所述的在分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的方法,其特征還在于,當節(jié)點進行一個數(shù)據(jù)改動時,在改動的數(shù)據(jù)上加上一個當前的時間戳。
如上所述的在分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的方法,其特征還在于,當該廣播源節(jié)點進行一個數(shù)據(jù)改動后,通知其他節(jié)點用最新副本更新節(jié)點副本。
附圖說明
圖1、分布式存儲系統(tǒng)中保持數(shù)據(jù)一致性的實現(xiàn)方法流程圖
具體實施方式
下面對本發(fā)明所述的具體實現(xiàn)方法進行更加詳細的闡述:
本申請所述的發(fā)明是基于時間戳機制而實現(xiàn)數(shù)據(jù)一致性。具體思路為在服務器系統(tǒng)中,每個節(jié)點對可寫數(shù)據(jù)進行改動以后不是將更新消息傳遞給其他節(jié)點,而是在改動的數(shù)據(jù)上加上一個當前的時間戳。當某個節(jié)點需要改動一個數(shù)據(jù)時,通過廣播提交改動請求和自己保留的副本的時間戳,告訴系統(tǒng)中所有節(jié)點自己需要改動哪個數(shù)據(jù)以及自己持有的數(shù)據(jù)的版本。當節(jié)點收到廣播信息后,判斷自己是否有該文件副本,如果沒有則不作處理,有則判斷自己副本的時間戳和廣播信息中的時間戳的先后順序,當自己的副本較新時則將自己的副本傳給廣播源節(jié)點。廣播源節(jié)點若收到多個節(jié)點傳來的副本時則選取最新的一個副本替換自己的副本,然后進行改動數(shù)據(jù)。
下面舉例說明本申請所述發(fā)明的具體實施方式。
假設在分布式存儲系統(tǒng)中,存在a、b、c、d、e五個節(jié)點,當節(jié)點a中的數(shù)據(jù)發(fā)生改動時,廣播改動內容并且保留了自己副本的時間戳,告訴系統(tǒng)中b、c、d、e自己改動了哪個文件以及自己持有數(shù)據(jù)的版本,當b、c、d、e收到廣播信息后,各個節(jié)點在自己的副本查找該文件,b節(jié)點發(fā)現(xiàn)沒有該文件,那么b節(jié)點不需要做任何動作;c、d、e節(jié)點發(fā)現(xiàn)自己副本中有該文件,則判斷自己副本的時間戳和a版本的時間戳的先后順序,c發(fā)現(xiàn)自己副本的時間戳沒有a版本的新,那么等待a節(jié)點的更新操作;d、e發(fā)現(xiàn)自己的版本的時間戳比a節(jié)點的要新,會將自己的副本傳遞給a,a節(jié)點對傳來副本的時間戳進行判斷,發(fā)現(xiàn)e的副本是最新的,那么會選擇最新的副本e來更新本地副本,同時通知c、d更新副本。
本申請所述方法的優(yōu)點在于使用這種方法對網(wǎng)絡的負載要求較小,因為只有每次需要更新數(shù)據(jù)的時候再去請求,看有沒有新的副本存在于別的節(jié)點,這種做法降低了分布式存儲系統(tǒng)中對網(wǎng)絡性能的要求。