存算分離是否成為開源分散式資料庫主流架構?

danny_2018發表於2022-09-22

隨著軟體定義儲存的不斷髮展,越來越多的開源分散式資料庫在特殊的資料存取領域站穩了腳跟。而這些百花齊放的解決方案,不免讓大家眼花繚亂。企業的IT架構是否會隨著這些技術的發展而呈現革命性的變化?存算分離架構是否會成為開源分散式資料庫發展下的主流架構?這些問題都需要在一定的理論和實踐沉澱之後來得出結論。

存算耦合架構,路在何方?

一切故事的起點都始於2000年。那一年基礎設施的效能遠沒有如今這麼強大,HDD的效能吞吐大約在50MB/s,即使透過多塊HDD並行接入也只能提高到1GB/s。網路配置更是相形見絀,主流解決方案的頻寬僅是百兆級別,跨網路遠端訪問資料的效率實在太低。時勢造英雄,劃時代的一天來臨,Google前瞻性的提出了the Google File System(GFS)檔案系統,首次採用標準的x86伺服器和普通硬碟搭建了大規模叢集。GFS透過計算和儲存耦合的架構,在同一個叢集中實現了計算和儲存功能,同時另闢蹊徑,拋棄了“移動儲存到計算”策略而採取“移動計算到儲存”的設計,利用本地的高IO效率來置換網路間傳輸的效率,徹底解決了分散在低效網路上各儲存節點間的海量資料訪問問題。

圖1 Google File System架構

GFS開創了存算耦合架構的先河,繼承與發揚這個理念的集大成者Hadoop更是將其提升到了一個新的高度。隨著Hadoop掀起的分散式浪潮,針對存算耦合架構深層次的思考也呼之欲出,存算分離還是存算一體?

縱觀過去的20年,我們在算力、網路、儲存方向的發展上都有了質的飛躍,然而橫向對比卻又不難發現三者並不是等效發展。網路,從此前主流 100Mb 到如今10GbE就緒,甚至邁進25GbE、40 GbE,趕超了100多倍;儲存,HDD 硬碟的效能提升雖然沒有網路的大飛躍,但得益於SDD製程和工藝的迭代,儲存領域也有了相當顯著的進步,NVME的應用已經爐火純青;而回到算力上,即便是處理器工藝已經邁入7nm,算力的提升也遠不及前兩者的跨越。非平衡的三元演進趨勢,加之數字化轉型中不同階段衍生出的差異性需求,迫切的期待創造一個更加隨心的架構形態。

存算分離架構(Disaggregated Storage and Compute Architecture)似乎更像是當下的眾望所歸,充分契合如今的資訊科技格局與各行業務境況,其得天獨厚的優勢也相得益彰:

更靈活的選擇。計算資源與儲存空間的配置互不制約,即使身處在形態各異的業務場景,都可以因地制宜構建個性化的配比,充分匹配業務的每一項資源要求。

更高效的擴容。計算資源先達到瓶頸,儲存空間先達到瓶頸,都能夠進行獨立、按需擴容,持續保障存算資源的高效使用,杜絕存算一體擴容時帶來的資源浪費。

更安全的隔離。存、算各司其職,形成邏輯隔離。計算節點不再承擔資料儲存,計算節點動態增減甚至是故障當機,無需大量資料的遷移,絲毫不影響資料儲存的可靠性與完整性。

有意思的是,若我們以發展的眼光去審視存算一體(Process In Memory)架構,同樣是一番美好的前途願景:存算一體架構不再關注存算的配比,而將計算及儲存核心的實現歸集於同一塊晶片上,所有的計算全部在儲存內部實現,無需資料的讀出和寫入,完全沒有外部開銷,效能全面超越的同時降低了計算和儲存的綜合運維管理成本,極富競爭力。彩虹固然絢麗,但我們也得直視前夕的飄搖風雨:存算一體架構的實現究其根本是晶片的高緯挑戰。目前基於SRAM或DRAM的存算一體方案受限於儲存器廠商對工藝和製程的客觀約束,都無法深入到儲存單元實現計算和儲存的完全耦合。同時存算晶片也無法滿足高密度、高精度雙重標準兼備下的融合計算,晶片開發設計的生態亟待打造。最後,計算高效能的標準疊加儲存的高容量要求極大限制了存算一體架構的應用落地場景,計算和儲存的完美融合仍是一座靜待征服的高峰。

聊罷存算架構的耦合,讓我們將視線重新迴歸到架構實踐上,哪個方向正在運用存算分離呢?非常重要的一個應用場景便是分散式資料庫,例如Aurora就已於雲原生服務側率先落地了計算與儲存的分離。

圖2 Aurora體系結構

Aurora體系結構整體呈現share disk共享磁碟模式,介面與解析均在計算層,logging和儲存從資料庫引擎剝離到了分散式雲端儲存環境中,透過將共享儲存構建為跨多個資料中心的獨立容錯和自愈的服務,基於持續非同步複製的機制,使得儲存層中的資料免受效能差異、單節點故障等多重影響。雲端儲存資料持久化以及高效同步,對於Aurora的穩定支撐與持續最佳化起著決定性的作用。

不妨讓我們對存算分離的“存”多一分尋味,Aurora儲存服務的核心設計準則即是最小化前端寫請求的延遲,貼合高頻交易的業務場景快速響應業務請求,將大部分儲存邏輯的處理移動到後臺,覆蓋多重手段去平衡前端和後臺的負載健康,藉助CRC校驗實現壞塊的主動發現與修復,從而各儲存節點依靠logging最終完成資料對齊。Aurora的創新,更側重所依賴的共享儲存,不是簡單的資料共享,而是一個擁有架構獨立、自動同步、容錯、構建高可靠性的共享儲存服務系統,這就對存算分離架構提出了一個新的標準,也開闊了一個新的發展方向。

對於存算分離架構的理解,一般理解的焦點都在“分離”上,而Aurora的實踐更生動闡釋了古典文學上“形散神聚”的意義,存算既已分離,我們的目光也應志在長遠:如何將存與算在兩個獨立的個體間建立功能、效能、機制上的全棧協作,存算通達,功能並進,是一個更有意思、更富挑戰、更耐人尋味的話題。放眼當下,我們似乎能從另一輛飛馳的分散式快車上——超融合(Hyperconvergence Infrastructure)解決方案,找到一個粗淺的現實釋義:超融合,融合的是基礎架構的計算和儲存,計算和儲存不再是孤島,Hypervisor計算層能夠高效、直接的透過底層開放生態與分散式儲存聯動,嵌入高階功能實現精確的Metadata後設資料管理;超融合,分離的也是計算和儲存,但是是自身向上服務的功能層,計算層專注支撐虛擬化業務應用的擬態執行,儲存層則作為資料的核心承載,藉助分散式的動態彈性派生出多種相容的儲存協議,持續提供儲存服務。

存算架構的耦合,是分離還是一體?大道至簡,殊途同歸,資訊科技的發展仍充滿著諸多不確定性的驚喜,期待著存算分離架構下更多成熟方案的落地實踐,同樣也對存算一體的卓越效能超越懷有希冀,心向光明,未來可期。

張俊禧 長安銀行儲存架構師:

存算一體的架構隨著運用的深入突顯出了一些弊端,而存算分離的技術優勢在於:儲存冗餘性高、資源擴容靈活、CPU利用率高。存算分離架構很可能成為開源分散式資料庫發展下的主流架構。

存算一體的分散式架構還沒能撼動傳統IT架構的主流地位,存算分離的技術架構卻異軍突起成為分散式應用的寵兒,是舊瓶裝新酒迴歸傳統,還是破繭重生的技術革新,本文將對儲存與計算的分分合合發表自己的看法。

為了突破傳統資料庫效能的瓶頸,分散式資料庫應運而生,更好的支撐了雙十一這類業務量暴漲的場景。存算一體的架構使用廉價的伺服器加本地盤的方式,構建出分散式伺服器叢集,將計算和儲存融合呈現,採用多副本的方式保證資料冗餘和系統的可靠性,突破了傳統IT架構不能靈活擴容,採購成本高的弊端,很好地契合了分散式資料庫的部署要求。但是存算一體的架構隨著運用的深入突顯出了一些弊端:

1)存算一體不可避免地存在CPU的爭搶。由於伺服器的CPU資源不僅要承擔虛擬機器或容器計算的需求,還需要用於分散式儲存複雜的資料管理任務,有限的CPU在業務繁忙的情況下往往顧此失彼。

2)計算和儲存資源擴容不可能一致的同比例的被消耗,往往一項緊張,而另一項存在過剩。存算一體的分散式架構每次擴容同時新增了CPU和硬碟容量,導致資源利用率不高。

3)由伺服器構建的儲存冗餘性不足。通常存算一體的分散式系統其本盤不做RAID保護,靠多副本實現資料冗餘,冗餘多高資源利用率低。伺服器的可靠性有限,伺服器故障導致失效硬碟多,副本冗餘度降低,重構所需的漫長。資料分散的均衡性需要依賴廠商調節最佳化的實力。

存算分離的技術優勢在於:

1)儲存冗餘性高。特別是高階儲存從體系架構設計出發提供了超高的故障容忍能力,可靠性高。

2)資源擴容靈活。計算資源可以在業務繁忙時按需擴容給,由於所有計算節點訪問共同的儲存資源,計算資源新增非常靈活迅速。

3)CPU利用率高。儲存不消耗計算節點的CPU資源,計算節點專職負責資料庫的運算,而且儲存效能的提升有利於充分發揮伺服器CPU利用率。

來自 “ twt社群 ”, 原文作者:twt社群;原文連結:https://mp.weixin.qq.com/s/oUux7q8fgELBM0HYVlPUWg,如有侵權,請聯絡管理員刪除。

相關文章