1. 程式人生 > >跨AZ資料複製方案中的EC與XOR技術簡介

跨AZ資料複製方案中的EC與XOR技術簡介

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

跨AZ複製

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

至於如何實現資料複製,有兩種方式:

  1. Master-Slave複製

  1. Quorum複製

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

常用的方法有如下兩種:

  1. 壓縮資料傳輸

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

但如果碰到圖片和視訊資料,上面兩種方法就基本失效了。這時,需要引入另外兩種技術:

  • 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會帶來如下問題:

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

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

  3. 一個數據分片出現問題時,需要跨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技術則主要為了減少儲存空間冗餘。