專(zhuān)利名稱(chēng):一種分布式存儲(chǔ)系統(tǒng)及其更新和查詢方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其是涉及ー種具備高可用性的分布式存儲(chǔ)系統(tǒng)。
背景技術(shù):
面對(duì)數(shù)據(jù)量爆發(fā)性的增長(zhǎng),當(dāng)前的數(shù)據(jù)庫(kù)技術(shù)還存在很多迫切需要解決的技術(shù)問(wèn)題。對(duì)于數(shù)據(jù)庫(kù)而言,記錄正確的處理結(jié)果只是最基本的要求,在這之外,數(shù)據(jù)庫(kù)還要做到如何提高處理速度,數(shù)據(jù)的可用性,數(shù)據(jù)的安全性和數(shù)據(jù)集的擴(kuò)張性。大數(shù)據(jù)對(duì)以上四方面提出了更高的要求。根據(jù)物理法則,提高冗余度是提高數(shù)據(jù)可用性的唯一途徑。目前主要是通過(guò)硬件級(jí)別的冗余,通訊鏈路級(jí)的冗余,軟件的冗余和數(shù)據(jù)冗余。為提高高可用性常常使用數(shù)據(jù)冗余的實(shí)現(xiàn)方法。傳統(tǒng)的數(shù)據(jù)冗余方案有以下幾種,各有不足之處1、通過(guò)數(shù)據(jù)復(fù)制,所有目前的數(shù)據(jù)復(fù)制技術(shù)(同步或異歩),例如磁盤(pán)鏡像(EMC的TimeFinder系列)、數(shù)據(jù)庫(kù)文件復(fù)制(如DoubleTake, Veritas and Legato)以及數(shù)據(jù)庫(kù)廠商自帶的數(shù)據(jù)庫(kù)備份工具都只能產(chǎn)生被動(dòng)復(fù)制數(shù)據(jù)集。通常,為了實(shí)現(xiàn)復(fù)制功能,需要消耗掉主服務(wù)器5% (異步)到30% (同歩)的處理能力。被動(dòng)更新的數(shù)據(jù)一般只用于災(zāi)難恢復(fù)。被動(dòng)更新數(shù)據(jù)集還有兩個(gè)致命的問(wèn)題一旦主處理機(jī)故障造成數(shù)據(jù)損壞,被動(dòng)更新的數(shù)據(jù)集也會(huì)被破壞。這種方法容易使系統(tǒng)處于單節(jié)點(diǎn)危險(xiǎn)的時(shí)間增長(zhǎng),并且降低了系統(tǒng)的利用率。2、整機(jī)備份的雙機(jī)熱備。這種方式在任何時(shí)刻都是一臺(tái)服務(wù)器在運(yùn)行,雖然系統(tǒng)的響應(yīng)速度沒(méi)有降低,但是系統(tǒng)的利用率卻下降了 50%。3、異步主動(dòng)復(fù)制數(shù)據(jù)集這種技術(shù)是先把事務(wù)處理交給主服務(wù)器來(lái)完成,然后這些事務(wù)處理再被串行地交給備份服務(wù)器以執(zhí)行同樣的操作來(lái)保證數(shù)據(jù)的一致性。這種技術(shù)生成的數(shù)據(jù)集和主數(shù)據(jù)集有一個(gè)時(shí)間差,所以僅適用于災(zāi)難恢復(fù)、數(shù)據(jù)挖掘、報(bào)表統(tǒng)計(jì)以及有限的在線應(yīng)用。所有的商用數(shù)據(jù)庫(kù)都支持異步主動(dòng)復(fù)制技木。這種辦法的難度在于復(fù)制隊(duì)列的管理上,這個(gè)隊(duì)列是用來(lái)屏蔽主服務(wù)器和備份服務(wù)器之間的速度差異的。因?yàn)橹鞣?wù)器可以盡可能地利用所有軟硬件的并發(fā)性來(lái)處理并發(fā)的事務(wù),而備份服務(wù)器只能串行地復(fù)制,在高負(fù)荷事務(wù)處理的情況下,復(fù)制隊(duì)列經(jīng)??赡芤绯?。因?yàn)闆](méi)有任何辦法來(lái)控制事務(wù)處理請(qǐng)求的速度,在高負(fù)荷事務(wù)處理的情況下,復(fù)制隊(duì)列只能經(jīng)常性地重建。4、同步主動(dòng)復(fù)制數(shù)據(jù)集這種技術(shù)要求所有的并發(fā)事務(wù)處理在所有的數(shù)據(jù)庫(kù)服務(wù)器上同時(shí)完成。ー個(gè)直接的好處就是沒(méi)有了隊(duì)列的管理問(wèn)題,同時(shí)也可以通過(guò)負(fù)載均衡實(shí)現(xiàn)更高的性能和更高的可用性。這種技術(shù)也有兩種完全不同的實(shí)現(xiàn)方法完全串行化和動(dòng)態(tài)串行化。完全串行化的事務(wù)處理來(lái)自于主數(shù)據(jù)庫(kù)的事務(wù)處理引擎,RAC, UDB, MSCS (SQLServer2005)和ASE是用完全串行化并結(jié)合兩階段提交協(xié)議來(lái)實(shí)現(xiàn)的,這種設(shè)計(jì)的目標(biāo)就是為了獲得ー份可用于快速災(zāi)難恢復(fù)的數(shù)據(jù)集。這種系統(tǒng)有兩個(gè)關(guān)鍵的問(wèn)題。第一,兩階段提交協(xié)議是ー種“ALL OR NOTHING”的協(xié)議。仔細(xì)研究?jī)呻A段提交協(xié)議后就能發(fā)現(xiàn),為了獲取這備份數(shù)據(jù)集,事務(wù)處理的可用性會(huì)降低一半。第二,完全串行化的做法又引進(jìn)了主-從數(shù)據(jù)庫(kù)服務(wù)器速度不匹配的問(wèn)題。強(qiáng)制同步造成整個(gè)系統(tǒng)的速度被降低到完全串行化的水平。
發(fā)明內(nèi)容
本發(fā)明要解決的問(wèn)題是提供ー種分布式存儲(chǔ)系統(tǒng),尤其適合大容量數(shù)據(jù)的高可用性存儲(chǔ)。為解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案是ー種分布式存儲(chǔ)系統(tǒng),所述的存儲(chǔ)系統(tǒng)包括由至少ー個(gè)節(jié)點(diǎn)組成的安全組(Saf eGr oup ),所述的節(jié)點(diǎn)用以保存數(shù)據(jù)。進(jìn)ー步的,所述的節(jié)點(diǎn)可以保存同一安全組(SafeGroup)內(nèi)其它節(jié)點(diǎn)的副本。進(jìn)ー步的,所述的副本為鏡像備份。進(jìn)ー步的,所述的同一安全組(SafeGroup)內(nèi)所有節(jié)點(diǎn)都保存相同的片數(shù)據(jù)。進(jìn)ー步的,所述的節(jié)點(diǎn)按自己的節(jié)點(diǎn)編號(hào)選擇同樣編號(hào)的分片的片數(shù)據(jù)為自身節(jié)點(diǎn)的主數(shù)據(jù)。進(jìn)ー步的,所述的各節(jié)點(diǎn)上的數(shù)據(jù)上都有各自的系統(tǒng)全局的事務(wù)編號(hào)。根據(jù)本發(fā)明的另ー個(gè)方面,本發(fā)明還提供了ー種分布式存儲(chǔ)系統(tǒng)的查詢方法,包括將查詢請(qǐng)求發(fā)送給系統(tǒng);發(fā)起節(jié)點(diǎn)根據(jù)查詢請(qǐng)求以及系統(tǒng)中可用節(jié)點(diǎn)的情況生成查詢計(jì)劃;發(fā)起節(jié)點(diǎn)將查詢計(jì)劃發(fā)送到系統(tǒng)中的每個(gè)可用節(jié)點(diǎn);每個(gè)可用節(jié)點(diǎn)各自運(yùn)算該節(jié)點(diǎn)內(nèi)的主數(shù)據(jù);每個(gè)可用節(jié)點(diǎn)將運(yùn)算結(jié)果返回發(fā)起節(jié)點(diǎn)進(jìn)行匯總。根據(jù)本發(fā)明的另ー個(gè)方面,本發(fā)明還提供了ー種分布式存儲(chǔ)系統(tǒng)的更新方法,包括為系統(tǒng)加分布式鎖;申請(qǐng)系統(tǒng)全局事務(wù)編號(hào),再把更新請(qǐng)求發(fā)送到主分片及所有鏡像分片所在的節(jié)點(diǎn);各節(jié)點(diǎn)更新自己的分片,并對(duì)新加入的數(shù)據(jù)打上全局事務(wù)編號(hào)標(biāo)記;最后釋放分布式鎖。由于采用上述技術(shù)方案,使得單個(gè)節(jié)點(diǎn)各自操作自己的數(shù)據(jù),可充分利用節(jié)點(diǎn)各自的處理能力。從而使得系統(tǒng)具有高可用性、高查詢并行度、和大數(shù)據(jù)容量的管理和擴(kuò)展能力,由于數(shù)據(jù)副本的粒度與硬件自然分布的粒度相同,因而并能夠有效降低管理和維護(hù)成本。
圖1是本發(fā)明ー種分布式存儲(chǔ)系統(tǒng)的ー個(gè)實(shí)施例的示意2是本發(fā)明的一個(gè)實(shí)施例中ー個(gè)安全組(SafeGroup)中各節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)示意圖
具體實(shí)施例方式圖1為本發(fā)明的一個(gè)實(shí)施例的示意圖,由圖1可以看出,該實(shí)施例包括三個(gè)安全組,每個(gè)安全組各包括三個(gè)節(jié)點(diǎn),其中每個(gè)節(jié)點(diǎn)都具備一定的事務(wù)處理能力,每個(gè)系統(tǒng)中的節(jié)點(diǎn)都可以通過(guò)網(wǎng)絡(luò)或者其它方式互相連接,可以通過(guò)網(wǎng)絡(luò)或者其它連接方式互相訪問(wèn)。每個(gè)安全組(SafeGroup )也互相連接,也可以互相訪問(wèn)。圖2為實(shí)施例中某一安全組(SafeGroup)中所包括的三個(gè)節(jié)點(diǎn)中所存儲(chǔ)的內(nèi)容的示意圖,由圖2可以看出,每個(gè)節(jié)點(diǎn)除了存儲(chǔ)有自身的數(shù)據(jù)以外,還保存有本系統(tǒng)中其它節(jié)點(diǎn)的鏡像數(shù)據(jù),并且存儲(chǔ)的內(nèi)容相同。本實(shí)施例的元數(shù)據(jù)包括系統(tǒng)中所有可用節(jié)點(diǎn)的列表,以及所有節(jié)點(diǎn)與其所在安全組之間的對(duì)應(yīng)關(guān)系表,以及當(dāng)前最大全局事務(wù)編號(hào)。相對(duì)于Hadoop HDFS(—種分布式文件系統(tǒng)),本實(shí)施例的數(shù)據(jù)副本以節(jié)點(diǎn)為粒度;而HDFS的數(shù)據(jù)副本以分塊(一般64MB為ー個(gè)數(shù)據(jù)塊)為粒度。正因?yàn)槿绱耍琀DFS的元數(shù)據(jù)需要管理所有數(shù)據(jù)塊及其副本與其所在節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,當(dāng)HDFS管理的數(shù)據(jù)規(guī)模很大時(shí),其元數(shù)據(jù)的規(guī)模也相當(dāng)可觀。因而,HDFS在管理元數(shù)據(jù)時(shí)的代價(jià)較高,系統(tǒng)擴(kuò)容、縮容及數(shù)據(jù)重分布時(shí),需要遷移和修改大量元數(shù)據(jù)。本實(shí)施例中,由于數(shù)據(jù)副本粒度和系統(tǒng)物理上部署的粒度相同(節(jié)點(diǎn)級(jí)),無(wú)需存儲(chǔ)任何數(shù)據(jù)與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,因而元數(shù)據(jù)十分簡(jiǎn)單。系統(tǒng)擴(kuò)容、縮容以及數(shù)據(jù)重分布時(shí),僅需修改節(jié)點(diǎn)列表、節(jié)點(diǎn)和安全組對(duì)應(yīng)關(guān)系表,元數(shù)據(jù)維護(hù)代價(jià)極大降低。同吋,輕量級(jí)的元數(shù)據(jù),使本實(shí)施例的元數(shù)據(jù)管理策略既能適應(yīng)帶內(nèi)式部署,也可以適應(yīng)帶外式部署;而對(duì)于公知方案(如HDFS)來(lái)說(shuō),過(guò)于重量級(jí)的元數(shù)據(jù)幾乎限定了其部署方式只能采取帶外式元數(shù)據(jù)管理方案。本實(shí)施例通過(guò)Paxos協(xié)議的ー種開(kāi)源實(shí)現(xiàn)(TOTEM : —種基于令牌環(huán)的通訊及分布式一致性協(xié)議)來(lái)實(shí)現(xiàn)分布式鎖、以及元數(shù)據(jù)的同歩。本實(shí)施例能夠有效降低方案管理和維護(hù)成本。在做分布式查詢計(jì)劃時(shí),不需要像Hadoop那樣,從元數(shù)據(jù)服務(wù)器上獲取數(shù)據(jù)位置,而只需簡(jiǎn)單的將同樣的查詢計(jì)劃發(fā)送到一個(gè)安全組里的所有節(jié)點(diǎn),它們各自運(yùn)算其中一部分?jǐn)?shù)據(jù)即可,不存在元數(shù)據(jù)服務(wù)器的單點(diǎn)瓶頸問(wèn)題。本實(shí)施例在更新數(shù)據(jù)時(shí),先加分布式鎖,并獲取全局事務(wù)編號(hào),再將更新請(qǐng)求發(fā)送至需更新的數(shù)據(jù)分片及其鏡像分片所在的相應(yīng)節(jié)點(diǎn)。各節(jié)點(diǎn)并行執(zhí)行更新操作,并為本次更新的數(shù)據(jù)設(shè)置全局事務(wù)編號(hào)標(biāo)記。如果某個(gè)節(jié)點(diǎn)的更新操作失敗,則將此節(jié)點(diǎn)置為“不可用”狀態(tài)?!安豢捎谩睜顟B(tài)的節(jié)點(diǎn)在后臺(tái)進(jìn)行數(shù)據(jù)同步工作,當(dāng)其數(shù)據(jù)恢復(fù)到與同組可用節(jié)點(diǎn)相同狀態(tài)時(shí),恢復(fù)其可用狀態(tài)。當(dāng)這次更新涉及的每個(gè)節(jié)點(diǎn)都更新成功或被置為“不可用”狀態(tài)時(shí),數(shù)據(jù)更新完畢,釋放分布式鎖。本實(shí)施例在查詢時(shí),先從系統(tǒng)元數(shù)據(jù)中獲取所有可用的節(jié)點(diǎn)的集合;再將查詢請(qǐng)求發(fā)送至這些可用節(jié)點(diǎn),對(duì)于“不可用”狀態(tài)的節(jié)點(diǎn),對(duì)其主分片數(shù)據(jù)的查詢請(qǐng)求將被重定向至同組的其他可用節(jié)點(diǎn)。本實(shí)例存儲(chǔ)數(shù)據(jù)分片時(shí)進(jìn)行了預(yù)先水平分割,每生成2GB數(shù)據(jù)就水平分裂一次。在做擴(kuò)容或縮容時(shí),只需移動(dòng)這些2GB的分片,使得最終的數(shù)據(jù)分布近似均勻,即可實(shí)現(xiàn)數(shù)據(jù)重分布,而元數(shù)據(jù)則幾乎不需要修改。本實(shí)例可以服務(wù)于關(guān)系模型(因?yàn)樗椒指畈粫?huì)打破關(guān)系模型的字段約束),但不限于關(guān)系模型。只要對(duì)數(shù)據(jù)分布特征有類(lèi)似需求的數(shù)據(jù)模型都可以適用。由以上可以看出,本發(fā)明對(duì)于以下四個(gè)方面都有著明顯的提高
1、提高處理速度増加系統(tǒng)中節(jié)點(diǎn)的個(gè)數(shù),即增加系統(tǒng)的數(shù)據(jù)副本數(shù),系統(tǒng)總的副本數(shù)越多,單個(gè)副本的數(shù)據(jù)量會(huì)越少,并發(fā)處理速度越快。2、數(shù)據(jù)的可用性數(shù)據(jù)更新時(shí),ー個(gè)安全組中只需一個(gè)節(jié)點(diǎn)成功,更新的數(shù)據(jù)即可用;查詢時(shí),正常情況下,可以通過(guò)多個(gè)節(jié)點(diǎn)并發(fā)運(yùn)算達(dá)到最大性能,有節(jié)點(diǎn)不可用時(shí),可以把對(duì)這個(gè)節(jié)點(diǎn)主分片的運(yùn)算重定向至其他節(jié)點(diǎn)。3、數(shù)據(jù)的安全性和單機(jī)系統(tǒng)的數(shù)據(jù)安全性相同。4、數(shù)據(jù)集的擴(kuò)張性在擴(kuò)張數(shù)據(jù)的時(shí)候,數(shù)據(jù)以直接拷貝數(shù)據(jù)文件按的方式遷移,且無(wú)需大量維護(hù)元數(shù)據(jù),極大的降低了系統(tǒng)擴(kuò)展的操作成本。以上對(duì)本發(fā)明的一個(gè)實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,但所述內(nèi)容僅為本發(fā)明的較佳實(shí)施例,不能被認(rèn)為用于限定本發(fā)明的實(shí)施范圍。凡依本發(fā)明申請(qǐng)范圍所作的均等變化與改進(jìn)等,均應(yīng)仍歸屬于本發(fā)明的專(zhuān)利涵蓋范圍之內(nèi)。
權(quán)利要求
1.一種分布式存儲(chǔ)系統(tǒng),其特征在于所述的存儲(chǔ)系統(tǒng)包括由至少一個(gè)節(jié)點(diǎn)組成的安全組(SafeGroup),所述的節(jié)點(diǎn)用以保存數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的分布式存儲(chǔ)系統(tǒng),其特征在于所述的節(jié)點(diǎn)可以保存同一安全組(SafeGroup)內(nèi)其它節(jié)點(diǎn)的副本。
3.根據(jù)權(quán)利要求2所述的分布式存儲(chǔ)系統(tǒng),其特征在于所述的副本為鏡像備份。
4.根據(jù)權(quán)利要求2所述的分布式存儲(chǔ)系統(tǒng),其特征在于所述的節(jié)點(diǎn)上的數(shù)據(jù)被分為與同一安全組(SafeGroup )內(nèi)節(jié)點(diǎn)個(gè)數(shù)相同的片數(shù)。
5.根據(jù)權(quán)利要求4所述的分布式存儲(chǔ)系統(tǒng),其特征在于所述的同一安全組(SafeGroup)內(nèi)所有節(jié)點(diǎn)都保存相同的片數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的分布式存儲(chǔ)系統(tǒng),其特征在于所述的節(jié)點(diǎn)按自己的節(jié)點(diǎn)編號(hào)選擇同樣編號(hào)的分片的片數(shù)據(jù)為自身節(jié)點(diǎn)的主數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的分布式存儲(chǔ)系統(tǒng),其特征在于所述的各節(jié)點(diǎn)上的數(shù)據(jù)上都有各自的系統(tǒng)全局的事務(wù)編號(hào)。
8.—種如權(quán)利要求7所述的分布式存儲(chǔ)系統(tǒng)的更新方法,包括 為系統(tǒng)加分布式鎖; 申請(qǐng)系統(tǒng)全局事務(wù)編號(hào),再把更新請(qǐng)求發(fā)送到主分片及所有鏡像分片所在的節(jié)點(diǎn); 各節(jié)點(diǎn)更新自己的分片,并對(duì)新加入的數(shù)據(jù)打上全局事務(wù)編號(hào)標(biāo)記; 最后釋放分布式鎖。
9.一種如權(quán)利要求6所述的分布式存儲(chǔ)系統(tǒng)的查詢方法,包括 將查詢請(qǐng)求發(fā)送給系統(tǒng); 將查詢請(qǐng)求發(fā)給系統(tǒng)中某個(gè)節(jié)點(diǎn)(發(fā)起節(jié)點(diǎn)); 發(fā)起節(jié)點(diǎn)根據(jù)查詢請(qǐng)求以及系統(tǒng)中可用節(jié)點(diǎn)情況生成查詢計(jì)劃; 發(fā)起節(jié)點(diǎn)將查詢計(jì)劃發(fā)送到系統(tǒng)中的每個(gè)可用節(jié)點(diǎn); 每個(gè)可用節(jié)點(diǎn)各自運(yùn)算該節(jié)點(diǎn)內(nèi)的主數(shù)據(jù); 每個(gè)可用節(jié)點(diǎn)將運(yùn)算結(jié)果返回發(fā)起節(jié)點(diǎn)進(jìn)行匯總。
全文摘要
本發(fā)明提供了一種分布式存儲(chǔ)系統(tǒng),所述的存儲(chǔ)系統(tǒng)包括由至少一個(gè)節(jié)點(diǎn)組成的安全組(SafeGroup),所述的節(jié)點(diǎn)用以保存數(shù)據(jù),所述的節(jié)點(diǎn)可以保存同一安全組(SafeGroup)內(nèi)其它節(jié)點(diǎn)的副本。此外,本發(fā)明還提供了針對(duì)于此分布式存儲(chǔ)系統(tǒng)的更新和查詢方法。本發(fā)明的有益效果是使得系統(tǒng)具有高可用性、高查詢并行度、和大數(shù)據(jù)容量的管理和擴(kuò)展能力,并能夠有效降低管理和維護(hù)成本。
文檔編號(hào)G06F17/30GK103034739SQ20121059410
公開(kāi)日2013年4月10日 申請(qǐng)日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
發(fā)明者任景彪, 孟祥斌, 施寧, 崔維力, 武新, 趙偉 申請(qǐng)人:天津南大通用數(shù)據(jù)技術(shù)有限公司