2020年最後一個月的第一天,AWS官方部落格釋出文章稱:Amazon S3實現了原生支援強一致性。從2006年上線至今,Amazon S3一直採用最終一致性的實現方案。14年來,隨著上層業務型別從簡單的資料歸檔擴充套件到更為複雜的資料分析場景,儲存模型由基本的寫入讀取升級為更多資料覆蓋寫且時效性要求更高的遍歷讀取,Amazon S3的最終一致性方案已經無法滿足這一需求。尤其是以Hadoop為代表的大資料分析場景,要求資料寫入之後快速讀取,底層儲存支援強一致性成為剛需。
什麼是資料一致性
從資料讀寫的角度,如果前一刻寫入新資料,後續某個時間能準確讀到最新資料,這時我們說資料是一致的。按照寫入新資料和準確讀到新資料的時間視窗(即不一致視窗)長短,分為強一致性、弱一致性和最終一致性。
強一致性
資料一致性最理想的情況是,無論資料何時被更新,使用者總能立即讀取到最新的資料,這叫強一致性。這種是對使用者最友好的,就是使用者上一次寫什麼,下一次就保證能讀到什麼。
弱一致性
強一致性之外統稱為弱一致性,即資料更新之後,無法保證使用者能立即讀到最新資料,但是一段時間之後可以讀到最新資料。遺憾的是,弱一致性沒有保證不一致視窗到底有多長。
最終一致性
弱一致性中有一個特例——最終一致性,它限定了不一致性視窗的時間,保證使用者最終一定能讀取到正確資料。
圖1.圖解最終一致性
如圖所示,應用端寫入內容為“1”的物件,寫完後讀到正確的“1”;之後覆蓋寫入“2”,這時讀取操作就會遭遇不一致視窗,應用端可能讀到舊資料“1”;但最終一致性能夠保證過了不一致視窗,應用端能讀取到正確的“2”。Amazon S3最初就是採用最終一致性方案。
為什麼不能用強一致性解決一切?
看完前面內容,有人可能會問:既然強一致性無“死角”,那所有的分散式系統為啥不都採用強一致性?強如Amazon S3竟也要退而求其次選擇最終一致性呢?這就不得不提分散式領域那個如雷貫耳的原理——CAP原理。
CAP原理是指在一個分散式系統中,C(Consistency:一致性)、A(Availability:可用性)、P(Partitiontolerance:分割槽容錯性)這三個要素最多同時實現兩點,不可能三者兼顧。而對於分散式系統,分割槽容忍性是基本要求,否則就失去了價值。因此在設計分散式系統時,就只能在一致性和可用性之間做平衡。如果一味追求強一致性,就無法保證資料的可用性了。
圖2:CAP原理
以Amazon S3為例,其最初的應用場景多是資料歸檔,比如將一張商品圖片上傳到S3儲存做長期歸檔,後續只會預覽圖片而不會做其他修改。這種場景不要求“資料寫入立即可讀”,可以接受“不一致性視窗”的存在,而且犧牲一定的一致性可以換取更高的可用性,所以Amazon S3採用了最終一致性的方案。
大資料分析場景,為何強一致性成為剛需?
為什麼需要強一致性?
在大資料分析場景下,資料持續高併發讀寫,資料寫入成功即被計算程式立即讀取,計算程式讀不到準確資料就會導致計算結果不準確或不可信。因此,儲存系統必須要保證資料的強一致性。
Amazon S3是如何解決強一致性問題的?
以Amazon S3對接Hadoop為例,解決方式之一是增加額外的元件S3 Guard,由S3 Guard內部的Metadata Store來單獨記錄元資料的改動,以確保強一致性。具體流程大致如下:
1.假設當前Budget A目錄下有檔案“File A”,此時在相同目錄下新建檔案“File B”;
2.S3內部不會立即更新元資料資訊(因為S3採用最終一致性),在額外增加的Metadata Store中,元資料資訊會被立即更新;
3.“File B”建立後,應用端對目錄執行list操作;
4.S3 Guard將同時向S3和Metadata Store查詢元資料並進行結果彙總,嚮應用端返回最新資料狀態;
5.應用端獲取到最新資料,強一致性得到保證。
圖3.透過S3 Guard的方式保證強一致性
雖然透過S3 Guard來確保一致性,但這顯然增加了系統的複雜性以及部署S3 Guard產生的額外成本。有沒有更好的方案呢?
MOS原生支援強一致性,為大資料提供強大底座
作為私有化部署的物件儲存產品,杉巖MOS在設計之初就考慮到了複雜場景的業務需求,原生支援強一致性方案,MOS可直接對接Hadoop平臺而無需類似S3 Guard這樣的額外元件,消除了額外成本,而且架構更加簡單。
圖4.MOS支撐大資料應用,架構更簡單
MOS作為大資料應用的數字底座,無縫相容Hadoop、Spark等主流平臺,並針對大資料場景的業務特點,在多個層面進行了方案最佳化:S3介面原生支援資料強一致性,確保計算結果準確可信;基於資料內容感知和強大的元資料管理能力,加速資料預取;一份資料能夠同時提供給多個計算流程使用,提升分析效率。MOS為資料分析和智慧應用帶來極大便利,無疑是企業應對大資料挑戰、實現數字化升級的得力幫手。