多數(shù)據(jù)中心間復(fù)制技術(shù)的較量
2017-06-26 16:28:44
ModelId=2&Id=782">
? ? ??雖然數(shù)據(jù)中心的建設(shè)規(guī)模越來(lái)越大,但也不可能無(wú)限制地?cái)U(kuò)容下去,這和數(shù)據(jù)中心所處的位置、環(huán)境、技術(shù)水平、公共設(shè)施等都有關(guān)系。很多時(shí)候,要在多地建設(shè)很多座數(shù)據(jù)中心,有時(shí)是應(yīng)用的需要,有時(shí)是資源限制,也有時(shí)是為了數(shù)據(jù)備份,甚至到現(xiàn)在還出現(xiàn)了很多新鮮的概念:比如微型數(shù)據(jù)中心,云端數(shù)據(jù)中心等,不再一味地強(qiáng)調(diào)建設(shè)超大超強(qiáng)的數(shù)據(jù)中心,俗話說(shuō)“三個(gè)臭皮匠頂一個(gè)諸葛亮”,未來(lái)的數(shù)據(jù)中心可以以數(shù)量取勝,而不是個(gè)體的大與小。那么問(wèn)題來(lái)了,多個(gè)數(shù)據(jù)中心之間如何協(xié)調(diào)工作,才能達(dá)到“1+1大于2”的效果?這就涉及到數(shù)據(jù)中心之間的數(shù)據(jù)復(fù)制技術(shù),必須學(xué)會(huì)用好復(fù)制技術(shù),才能玩轉(zhuǎn)多數(shù)據(jù)中心。
單主復(fù)制技術(shù)
? ? ??單主復(fù)制指的是只有一個(gè)主數(shù)據(jù)中心有數(shù)據(jù)寫權(quán)限,完成數(shù)據(jù)的寫入工作,同時(shí)向其它數(shù)據(jù)中心同步數(shù)據(jù),其它數(shù)據(jù)中心只提供只讀服務(wù)。單主復(fù)制技術(shù)相當(dāng)于將主數(shù)據(jù)中心的數(shù)據(jù)COPY多份,放到其它數(shù)據(jù)中心中,供更多人去訪問(wèn),但是這些數(shù)據(jù)只有讀權(quán)限,對(duì)于那些交互式的訪問(wèn),這種復(fù)制技術(shù)行不通。為了不影響主數(shù)據(jù)中心的寫入性能,同步數(shù)據(jù)一般采用異步方式復(fù)制,這樣由于時(shí)間上的不完全同步,當(dāng)主數(shù)據(jù)中心失效時(shí),其它數(shù)據(jù)中心的數(shù)據(jù)會(huì)有少量丟失,還有多個(gè)數(shù)據(jù)中心只有一個(gè)主數(shù)據(jù)中心執(zhí)行寫數(shù)據(jù)操作,工作效率低,寫數(shù)據(jù)量少,同樣也會(huì)影響復(fù)制到其它數(shù)據(jù)中心的數(shù)據(jù)量,最終影響的是整個(gè)數(shù)據(jù)中心系統(tǒng)的效率。
多主復(fù)制技術(shù)
? ? ??既然單主復(fù)制技術(shù)的寫數(shù)據(jù)效率太低,于是就出現(xiàn)了多主復(fù)制技術(shù)。多主實(shí)現(xiàn)了多個(gè)數(shù)據(jù)中心都可以寫數(shù)據(jù),當(dāng)然也支持讀數(shù)據(jù)。多主復(fù)制技術(shù)需要解決寫請(qǐng)求順序的問(wèn)題,不同數(shù)據(jù)中心所處的位置不同,相同的寫操作在不同的數(shù)據(jù)中心執(zhí)行的效果和時(shí)間并不同,這就容易出現(xiàn)數(shù)據(jù)的差異,導(dǎo)致寫數(shù)據(jù)錯(cuò)誤或者有延遲,這是數(shù)據(jù)中心的應(yīng)用所不能容忍的,這樣一般選擇在地理位置上接近的數(shù)據(jù)中心進(jìn)行同時(shí)寫數(shù)據(jù),時(shí)延可以得到保障,所以這類多主復(fù)制技術(shù)一般是部署在兩個(gè)數(shù)據(jù)中心上,由兩個(gè)位置較近的數(shù)據(jù)中心同時(shí)完成寫數(shù)據(jù),同時(shí)兩個(gè)數(shù)據(jù)中心向其它數(shù)據(jù)中心復(fù)制數(shù)據(jù),其它數(shù)據(jù)中心支持?jǐn)?shù)據(jù)的讀訪問(wèn),如果要實(shí)現(xiàn)多于兩個(gè)數(shù)據(jù)中心同時(shí)寫數(shù)據(jù),多主復(fù)制技術(shù)就不適合了。
第二階段提交技術(shù)
? ? ??兩階段提交是在分布式系統(tǒng)上實(shí)現(xiàn)事務(wù)的一種協(xié)議,分布式系統(tǒng)的一個(gè)難點(diǎn)是如何保證架構(gòu)下多個(gè)節(jié)點(diǎn)在進(jìn)行事務(wù)性操作的時(shí)候保持一致性。二階段提交技術(shù)首先假設(shè)存在一個(gè)節(jié)點(diǎn)作為協(xié)調(diào)者,其他節(jié)點(diǎn)作為參與者,所有節(jié)點(diǎn)之間可以進(jìn)行網(wǎng)絡(luò)通信。同時(shí)所有節(jié)點(diǎn)都采用預(yù)寫式日志,即使節(jié)點(diǎn)損壞日志數(shù)據(jù)也不會(huì)消失。二階段提交技術(shù)也適用于多數(shù)據(jù)中心之間數(shù)據(jù)復(fù)制,在數(shù)據(jù)中心里選出一個(gè)協(xié)調(diào)者,其它充當(dāng)參與者,按照第二階段提交算法來(lái)實(shí)現(xiàn)多數(shù)據(jù)中心之間的數(shù)據(jù)復(fù)制。不過(guò),第二階段提交技術(shù)也有很大限制,這種方案雖沒(méi)有單點(diǎn)錯(cuò)誤,但由于額外的協(xié)調(diào)通訊,它會(huì)提高延遲,一個(gè)寫操作時(shí)間就要達(dá)到 200 毫秒的級(jí)別,大大降低吞吐量和增加延遲,不適用于那些對(duì)吞吐量和時(shí)延要求比較高的數(shù)據(jù)中心。在協(xié)調(diào)者數(shù)據(jù)中心在執(zhí)行過(guò)程中,所有參與節(jié)點(diǎn)都是事務(wù)阻塞型的,當(dāng)參與者發(fā)生故障,協(xié)調(diào)者需要給每個(gè)參與者額外指定超時(shí)機(jī)制,超時(shí)后整個(gè)事務(wù)失敗,沒(méi)有容錯(cuò)機(jī)制,參與者可能會(huì)一直阻塞下去。如果協(xié)調(diào)者在發(fā)出commit消息之后宕機(jī),而唯一接收到這條消息的參與者同時(shí)也宕機(jī)了,那么即使協(xié)調(diào)者通過(guò)選舉協(xié)議產(chǎn)生了新的協(xié)調(diào)者,這條事務(wù)的狀態(tài)也是不確定的,沒(méi)人知道事務(wù)是否已經(jīng)被提交。顯然第二階段提交技術(shù)也存在問(wèn)題,當(dāng)然還有第三階段提交技術(shù),相比第二階段提交增加了超時(shí)機(jī)制,并在第一階段和第二階段之間增加了一個(gè)準(zhǔn)備階段,保證了在最后提交階段之前各參與節(jié)點(diǎn)的狀態(tài)是一致的。既然第三階段提交比第二階段好,為何是第二提交階段技術(shù)總為人所提及,這是因?yàn)榈谌A段提交會(huì)存在數(shù)據(jù)不一致的問(wèn)題,這大大限制了技術(shù)的應(yīng)用。
Paxos一致性算法
? ? ??Paxos是萊斯利蘭伯特于1990年提出的一種基于消息傳遞的算法,被認(rèn)為是一致性算法中最為有效的一種,其解決了一個(gè)分布式系統(tǒng)中數(shù)據(jù)一致性問(wèn)題。Paxos為保證每個(gè)節(jié)點(diǎn)執(zhí)行相同的命令序列,需要在每一條指令上執(zhí)行Paxos,以保證每個(gè)節(jié)點(diǎn)看到的指令一致。若在多數(shù)據(jù)中心之間部署Paxos,可以實(shí)現(xiàn)數(shù)據(jù)的完全一致性。將Paxos算法部署到數(shù)據(jù)中心,可以實(shí)現(xiàn)所有的跨數(shù)據(jù)中心一切操作,特別用來(lái)協(xié)調(diào)狀態(tài)在數(shù)據(jù)中心間轉(zhuǎn)移。如果你的應(yīng)用為一個(gè)數(shù)據(jù)中心提供數(shù)據(jù),當(dāng)它需要把數(shù)據(jù)轉(zhuǎn)移到另外一個(gè)數(shù)據(jù)中心時(shí),這些協(xié)調(diào)的工作就需要通過(guò) Paxos ,Paxos 還會(huì)用來(lái)管理 memcache 和離線處理。因?yàn)镻axo算法中也有不少的判斷和交互過(guò)程,這直接導(dǎo)致的就是數(shù)據(jù)的處理時(shí)延高,讀寫效率下降,但數(shù)據(jù)基本不會(huì)丟失,并且數(shù)據(jù)中心之間的數(shù)據(jù)也完全一致。