當前位置:
首頁 > 最新 > 跨AZ數據複製方案中的EC與XOR技術

跨AZ數據複製方案中的EC與XOR技術

在雲服務中, 為了提高數據的持久性和可用性,通常將數據存儲在多個AZ(Availability Zone)之中,每一個AZ擁有獨立的供電系統和網路設備,這樣,單AZ的故障並不會導致數據的丟失或服務的不可用。 對於雲服務而言,如果擁有了跨AZ 的數據同步和業務多活能力,就可以宣稱,該服務按年計算可以達到4個9的可用性和11個9的持久性。本文主要介紹跨AZ數據複製方案中所涉及的ECXOR技術。

跨AZ數據複製

如何將數據同步到多個AZ中,有多種做法,一種比較流行的方案,就是將數據的多個副本放置在不同的AZ中,如下圖所示:

至於如何實現數據複製,有兩種方式:

Master-Slave複製

Quorum複製

這兩種方式均能達成跨AZ的數據同步複製能力以及數據的強一致性語義保障,只是在架構上存在比較大的差異。但無論哪個方案,在網路帶寬上,都存在一個比較顯著的問題:如果進行全量數據的複製,對帶寬的擠占就非常嚴重,儘管AZ之間會設有專線連接,帶寬也很大。因此,如何縮減同步的數據量,減少對網路帶寬的擠占,就顯得至關重要。另外,如何降低整體的存儲空間佔用,也是一個非常重要的問題。

常用的方法有如下兩種:

壓縮數據傳輸

網路優化中的位元組重刪技術

但如果碰到圖片和視頻數據,上面兩種方法就基本失效了,這時,需要引入另外兩種技術:EC與XOR

EC技術

EC(英文全稱為"Erasure Code")本質上是一種編碼技術,它在n份原始數據的基礎上,增加m份數據,並能通過n+m份中的任意n份數據,還原為原始數據。即如果有任意小於等於m份的數據失效,仍然能通過剩下的數據還原出來。

舉例:

Data 首先被均分成 ,計算出 兩個校驗分片。 將6份分片數據存儲在不同的地方, 即使任意兩個分片數據被損壞了,都可以還原出原始數據Data。 假設共有三個AZ,那麼,每一個AZ中只需要存儲2個分片的數據即可:

這樣就可以顯著減少跨AZ數據傳輸降低數據複製對帶寬的佔用(AZ的出口帶寬減少了一半)。

但EC會帶來如下問題:

增加了CPU消耗,用於計算校驗分片

讀取時需要從多個AZ中獲取數據,時延敏感型業務將會受到明顯的影響。

一個數據分片出現問題時,需要跨AZ讀取數據進行修復。

下圖簡單描述了如何進行數據修復的原理:

關於對EC的改進,業界也有一些解決方案, 如LRC碼蝴蝶碼。EC可以有效減少跨AZ之間的網路帶寬佔用,對於很多應用場景,它的缺點其實也是完全可以容忍的。

但在真正實現該方案的時候,在架構、組網、安全方面會有很大的挑戰。因為每一個AZ都是獨立的存在,他們之間除了在大二層網路上互通以外,在四層網路上通常是隔離的,因此需要打通不同AZ的數據存儲伺服器之間的網路。至於EC的分片如何進行合理放置,也需要設計合理的布局和分配演算法。在工程實現上,會有很大的挑戰。

XOR技術

XOR的含義,等同於我們所理解的同名位操作符,即,異或操作。

EMC第一次將XOR應用在了"消減"跨AZ間的多副本數據,它的原理分步介紹如下:

Step 1

AZ1中的主副本1與AZ2中的主副本2(主副本1與主副本2不相關),在AZ3中分別擁有一個備副本1備副本2

Step 2

將AZ3中的備副本1與備副本2進行XOR操作後,得到副本3

Step 3

清除備副本1備副本2的數據,僅保留異或後的副本3

故障後恢複數據的方法

如果AZ1中的主副本1發生故障,將AZ2中的主副本2與AZ3中的副本3進行XOR操作,即可還原出AZ1中的主副本1

可以看出來,XOR主要用來減少備副本所佔用的存儲空間,而不是減少網路傳輸的數據量。對於跨Region間的數據複製,它是非常適用的。

總結

本文簡單討論了跨AZ數據複製方案中的EC與XOR技術,EC技術不僅可以有效減少網路傳輸數據量,也能夠有效降低因為多副本帶來的存儲空間冗餘,而XOR技術則主要為了減少存儲空間冗餘


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 NoSQL漫談 的精彩文章:

TAG:NoSQL漫談 |