跨AZ資料複製方案中的EC與XOR技術簡介
跨AZ複製
如何將資料同步到多個AZ中,有多種做法,一種比較流行的方案,就是將資料的多個副本放置在不同的AZ中,如下圖所示:
至於如何實現資料複製,有兩種方式:
-
Master-Slave複製
-
Quorum複製
這兩種方式均能達成跨AZ的資料同步複製能力以及資料的強一致性語義保障,只是在架構上存在比較大的差異。但無論哪個方案,在網路頻寬上,都存在一個比較顯著的問題:如果進行全量資料的複製,對頻寬的擠佔就非常嚴重,儘管AZ之間會設有專線連線,頻寬也很大。因此,如何縮減同步的資料量,減少對網路頻寬的擠佔,就顯得至關重要。另外,如何降低整體的儲存空間佔用,也是一個非常重要的問題。
常用的方法有如下兩種:
-
壓縮資料傳輸
-
網路優化中的位元組重刪技術
但如果碰到圖片和視訊資料,上面兩種方法就基本失效了。這時,需要引入另外兩種技術:
-
EC
-
XOR
EC
EC(英文全稱為”Erasure Code”)本質上是一種編碼技術,它在n份原始資料的基礎上,增加m份資料,並能通過n+m份中的任意n份資料,還原為原始資料。即如果有任意小於等於m份的資料失效,仍然能通過剩下的資料還原出來。
舉例:
Data 首先被均分成 {D1,D2,D3,D4},計算出 {C1,C2}兩個校驗分片。 將6份分片資料儲存在不同的地方, 即使任意兩個分片資料被損壞了,都可以還原出原始資料Data。 假設共有三個AZ,那麼,每一個AZ中只需要儲存2個分片的資料即可:
這樣就可以顯著減少跨AZ資料傳輸,降低資料複製對頻寬的佔用(AZ的出口頻寬減少了一半)。
但EC會帶來如下問題:
-
增加了CPU消耗,用於計算校驗分片
-
讀取時需要從多個AZ中獲取資料,時延敏感型業務將會受到明顯的影響。
-
一個數據分片出現問題時,需要跨AZ讀取資料進行修復。
下圖簡單描述瞭如何進行資料修復的原理:
關於對EC的改進,業界也有一些解決方案, 如LRC碼
但在真正實現該方案的時候,在架構、組網、安全方面會有很大的挑戰。因為每一個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技術則主要為了減少儲存空間冗餘。