分布式存儲在數(shù)據(jù)存儲產業(yè)中的占比越來越高,得益于分布式Scale-out的高擴展性,以及高速網(wǎng)絡技術的發(fā)展,分布式存儲逐漸成為主流,解決海量跨源、跨域、跨協(xié)議的非結構化數(shù)據(jù)“存得下”,“管得好”以及高效互通的問題。
企業(yè)用戶希望從分布式存儲獲取哪些能力呢,可以概括為五點:高性能、低成本、高可靠、易管理、易擴展。針對這些核心訴求,鯤鵬BoostKit分布式存使能套件打造了全局緩存特性,本質上是一個分布式存儲使能中間件,即中間的軟件層,這里簡單將全局緩存支持或者規(guī)劃的特性總結為資源管理、系統(tǒng)加速以及企業(yè)高級特性三類,用于解決伙伴和企業(yè)對于數(shù)據(jù)存儲的核心需求。
以高性能需求為例,我們通過結合讀寫緩存來縮短讀寫訪問路徑,提供低時延訪問,結合數(shù)據(jù)聚合實現(xiàn)隨機寫入轉為順序寫入,大幅削減磁盤尋道、旋轉延遲對硬盤能力發(fā)揮的阻礙,以及結合全新設計的元數(shù)據(jù)管理引擎實現(xiàn)變長數(shù)據(jù)自適應管理。
全局緩存實現(xiàn)高性能、低成本、高可靠、易管理、易擴展,得益于其架構,以及算法創(chuàng)新,接下來我們分別分享其背后的設計思路。
全局緩存的軟件架構設計:遵循清晰、合適、易演進原則
(圖:全局緩存技術堆棧)
全局緩存是一個華為自研的分布式存儲緩存加速套件,支持一體化、自管理、可擴展部署,提供掉電保護,并且不存在單點故障問題。
整體的架構設計遵循清晰簡潔、合適和易演進的原則,從而把系統(tǒng)設計的足夠簡單,原因在于我們知道分布式存儲可以看作是分布式系統(tǒng)的集大成者,其不僅包含各種正常功能場景,比如我們前面提到的資源管理、系統(tǒng)加速以及企業(yè)特性,還包括非常多的異常流程,這些正常流程與異常流程正交以后導致我們系統(tǒng)復雜度非常容易膨脹。
雖然任何分布式系統(tǒng)都有正常和異常流程,但其實是有差別的,因為分布式存儲承載了用戶核心數(shù)據(jù),是不允許數(shù)據(jù)丟失或不一致的,業(yè)務恢復不僅要考慮RTO,還要考慮RPO,增加一個維度,帶來的復雜度不是翻倍,而是升維,本質上還是一個正交的過程。
基于此,整個架構設計過程都致力于降低系統(tǒng)復雜度,第一步就是充分解耦,從圖中可以看到,全局緩存從邏輯和部署都是與計算集群和存儲集群解耦的,相當于一層緩存加速中間件,從而可以實現(xiàn)自管理、獨立部署、獨立運行,不侵入Ceph等開源軟件,做到應用無感加速。
解耦之后,全局緩存借鑒微服務的思想,通過客戶端適配層、服務端適配層和存儲代理層等抽象外部接口依賴,相當于API網(wǎng)關,對外屏蔽系統(tǒng)內部的復雜性,最小化場景、協(xié)議以及軟件升級等帶來的適配開銷。
對于全局緩存的軟件架構,其整體可以看作一個微內核架構,除了管理工具和ZK等是獨立進程部署以外,為了避免數(shù)據(jù)面和控制面的耦合以及相互影響,我們還將數(shù)據(jù)面和控制面拆分成了獨立進程,這樣就可以避免故障場景等場景的相互耦合與影響。
但是我們知道,服務并非拆分的越細越好,為了實現(xiàn)高性能、低時延,全局緩存數(shù)據(jù)面服務整體部署成獨立進程,避免復雜的接口框架,消息通訊帶來的時延和調用棧的開銷;單純看數(shù)據(jù)面,內部采用模塊化解耦設計,包含多個子系統(tǒng),如多級讀寫Cache、元數(shù)據(jù)索引、數(shù)據(jù)聚合、數(shù)據(jù)持久化等子系統(tǒng),這些子系統(tǒng)之間通過內部接口調用進行交互,不需要走消息通訊,所以調用鏈路短,時延低,并且模塊化的設計可以使得協(xié)同開發(fā)與迭代變得高效和并行。
在模塊化設計之上,全局緩存也遵循solid等設計原則,例如讀寫緩存、元數(shù)據(jù)DB等依賴于持久化層提供的數(shù)據(jù)持久化服務,它們之間的交互遵循接口隔離和依賴倒置等原則,實現(xiàn)充分解耦,從而將N*M的復雜度量級降低到N+M。
緩存架構創(chuàng)新:讀寫分離、前后臺分離
針對緩存架構,首先,全局緩存采用了讀寫分離設計,從而實現(xiàn)流程、資源、介質、冗余策略的解耦,流程解耦例如避免寫緩存刷盤和讀緩存淘汰相互影響,資源解耦例如實現(xiàn)讀寫緩存獨立的配額控制,介質解耦例如支持RAM/SCM/SSD等不同介質加速,冗余策略解耦例如讀寫緩存支持不同的副本策略,這樣就可以提高緩存命中率和資源利用率。
其次,全局緩存采取前后臺分離的設計模式,將請求處理路徑分為前臺和后臺兩部分,前臺部分保證最快的響應應用的讀寫請求,應用只會感知到前臺部分的執(zhí)行時間,從而實現(xiàn)極低的應用訪問時延。在實現(xiàn)讀寫分離以及前后臺分離的緩存架構的基礎上,可以進行緩存的執(zhí)行流編排,全局緩存的架構及其執(zhí)行流可以做到從設計上屏蔽或緩解緩存原生的一致性問題和雪崩、擊穿、穿透等問題。例如,針對一致性問題,數(shù)據(jù)狀態(tài)是在分布式緩存池中維護,客戶端無狀態(tài),不存在源端狀態(tài)同步開銷;全對稱分布式架構,結合去中心化路由算法,實現(xiàn)數(shù)據(jù)精準路由,數(shù)據(jù)精準定位到主節(jié)點;結合協(xié)商的執(zhí)行流編排,保障分段逐級命中最新數(shù)據(jù),例如首先命中寫Cache臟數(shù)據(jù),然后L1讀Cache,L2讀Cache,最后才是后端存儲,命中即返回,從設計上保證不會讀到老數(shù)據(jù)。
高性能、低成本核心算法設計
在全局緩存特性中,我們應用了規(guī)模化的降本增效算法,這些算法集結了華為公司海內外研究所,以及高校老師的全球智慧,也是全局緩存實現(xiàn)性能領先、成本領先的核心技術保障。
高性能算法主要包括讀路徑加速和寫路徑加速兩類,針對寫路徑加速,我們知道,HDD磁盤的尋道和旋轉延遲是訪問時延的大頭, HDD對IO數(shù)量和放大非常敏感,以8K數(shù)據(jù)為例,如果是隨機寫入,一般可以做到單盤100 IOPS量級,而順序寫入主流硬盤可以達到3W+ IOPS量級,所以上述的緩存前后臺分離架構的前提是要與高效的算法配合,不然由于后端刷盤來不及,很快就會導致緩存寫滿轉透寫。
為此,通過IO聚合算法實現(xiàn)全周期Append-only模式的磁盤友好寫入,IO聚合過程可以轉化為一個帶約束的組合優(yōu)化問題,并結合啟發(fā)式方法實現(xiàn)最小空間浪費;數(shù)據(jù)聚合以后,需要結合自研的TeraDB KV數(shù)據(jù)庫實現(xiàn)小對象到聚合對象的映射管理,命名TeraDB的原因是每臺服務器管理的元數(shù)據(jù)量上限大概是700GB,接近1TB;針對元數(shù)據(jù)管理,全局緩存采用了LSM的結構,LSM對小塊的頻繁更新比較友好,但是由于其分層結構,對讀取不友好,針對此問題,全局緩存設計了自適應的布隆過濾器來實現(xiàn)批量檢測Key存在性,提高讀性能,另外由于非結構化數(shù)據(jù)本身數(shù)據(jù)大小多變,我們還設計了變長粒度樹,實現(xiàn)大小對象的自適應管理,既提高了查詢效率,又避免了資源浪費,大幅節(jié)省元數(shù)據(jù)開銷。
那么,實現(xiàn)了IO聚合與映射就可以了嗎?并非如此,因為數(shù)據(jù)更新和刪除還是以聚合之前的粒度進行,那么在數(shù)據(jù)更新或刪除以后,我們需要進行垃圾回收來釋放空間,垃圾回收會引入寫放大,這就是我們需要支付的開銷,控制寫放大就成了我們是否可以實現(xiàn)性能提升的關鍵因素。
針對讀路徑,我們結合豐富的模式識別與挖掘算法,例如結合時間序列預測挖掘流式模型,多模特征聚類挖掘熱點模型,頻繁模式挖掘得到關聯(lián)模型,以及粗放式冷熱識別得到工作集關聯(lián)模型,基于這些Pattern挖掘算法,輔以全局負反饋調整,可以實現(xiàn)精準的模式挖掘以及預取門限、預取長度等參數(shù)的自適應整定,在特征不明顯的多源混合場景實現(xiàn)70%以上緩存命中率,模式較為規(guī)整的負載下實現(xiàn)接近100%的緩存命中率。
算法創(chuàng)新思路之一:理論為基石,探究算法極限
舉兩個示例,第一個是剛才提到的如何實現(xiàn)理論最優(yōu)的寫放大,針對垃圾回收寫放大問題,工業(yè)界一般認為最優(yōu)回收算法,或者說寫放大最小的回收算法,是貪心算法,所以在優(yōu)化寫放大過程中不存在算法設計,只有數(shù)據(jù)結構設計,例如是通過分級鏈,還是通過優(yōu)先隊列去管理回收對象。
但其實并非如此,針對這個問題,全局緩存研發(fā)團隊結合學術論文的分析,實現(xiàn)了基于邏輯時鐘驅動的垃圾回收建模推導,并通過主動分區(qū)實現(xiàn)理論最優(yōu)寫放大算法和數(shù)據(jù)結構設計,推導發(fā)現(xiàn)在均勻Workload負載下,貪心算法確實是最優(yōu)的,原因在于均勻Workload下面其不具備后效性;但是在非均勻Workload下面,貪心算法并不是最優(yōu)的,而我們知道真實的業(yè)務負載基本都是非均勻Workload。
具體的推導過程是我們將每次數(shù)據(jù)更新寫入當成邏輯時鐘,來驅動系統(tǒng)的狀態(tài)進行變化,狀態(tài)主要就是每個聚合對象的垃圾量,然后套用Lambert方程進行時空特征建模,得到垃圾生成模型,轉換成最優(yōu)化問題并求取數(shù)值解,實現(xiàn)OP超供容量的主動分區(qū);這樣,在非均勻Workload下,結合主動分區(qū)實現(xiàn)最優(yōu)OP配額控制,得到理論最優(yōu)解,從右側圖中可以看出寫放大收益可以達到30%以上,并且比CB等復雜算法的效果更好。
算法創(chuàng)新思路之二:算法與架構配合,最大化算法效果
針對讀路徑加速算法示例,我們不單獨講算法原理,來切換一個視角,主要介紹下如何通過預取算法與預取架構配合,最大化發(fā)揮前面提到的智能預取、數(shù)據(jù)淘汰等算法的效果。
在預取架構方面,全局緩存創(chuàng)新性的提出Client端推薦引擎與Server端執(zhí)行引擎分離的智能預取架構,相對于業(yè)界流行的分布式緩存預取模式,兼具單機推薦的高效&準確性,以及緩存池的高資源利用率。
(1)作為對比,相對于標號1 Server端本地推薦這種模式,由于我們的數(shù)據(jù)未經(jīng)源端打散,推薦引擎天然具備全局Trace視圖,從而可以進行全局精準推薦,同時由于推薦引擎部署在客戶端,在共享卷等場景,也不會發(fā)生多源擾鄰,可以精準匹配用戶Workload。
(2)相對于標號2的Server端中心化推薦這種模式,可以做到不存在單點故障,還可以減少數(shù)據(jù)推送和執(zhí)行策略拉取兩跳網(wǎng)絡開銷,如圖中黃色箭頭所示,從而避免緩存?zhèn)蚊?,所謂的偽命中指的是已經(jīng)下發(fā)預取請求,由于推薦、執(zhí)行鏈路過長導致請求到達時,預取數(shù)據(jù)還未加載到緩存。
針對成本目標,BoostKit全局緩存通過EC Turbo、數(shù)據(jù)壓縮、數(shù)據(jù)壓緊等創(chuàng)新算法,提升分布式存儲有效容量,幫助用戶降低成本。EC Turbo支持4+2~22+2大比例EC,用戶可用容量提升2~2.75倍;自研的GLZ數(shù)據(jù)壓縮算法結合原理級、結構級、指令級三級優(yōu)化,實現(xiàn)對比LZ4、gZip等業(yè)界流行算法壓縮率高30%,并且系統(tǒng)性能也可以提高30%,從而實現(xiàn)成本、性能雙收益;數(shù)據(jù)壓緊算法配合壓縮算法一起使用,通過減少壓縮后數(shù)據(jù)因數(shù)據(jù)對齊產生的補零空間浪費,實現(xiàn)更緊湊的數(shù)據(jù)落盤,壓縮率能夠繼續(xù)提升30%。
總結來說,鯤鵬BoostKit全局緩存結合EC Turbo、數(shù)據(jù)壓縮、數(shù)據(jù)壓緊等算法突破,相對于開源方案可以實現(xiàn)3倍以上用戶可用容量提升,大幅節(jié)省TCO;后續(xù)還將推出全局數(shù)據(jù)重刪特性,進一步提升數(shù)據(jù)縮減率,并覆蓋備份存儲等場景。
目前,鯤鵬BoostKit全局緩存與某大型運營商開展了聯(lián)合創(chuàng)新,分別采用3臺X86服務器和3臺鯤鵬服務器組成2個服務集群,其他硬件保持相同,然后進行緩存命中極限性能測試。測試數(shù)據(jù)顯示,全局緩存端到端性能達到14W IOPS/節(jié)點,以及1ms穩(wěn)定時延;相對來說,X86硬件+開源BCache+開源Ceph,則為1.2W IOPS/節(jié)點,同時時延只能做到26ms,全局緩存實現(xiàn)了10倍的性能優(yōu)勢。
如果要了解更多的全局緩存相關的部署使用方法和學習資源,登錄hikunpeng.com——鯤鵬社區(qū)BoostKit專區(qū)獲取詳細信息。
- 面向全球!華為發(fā)布IOC機場智能運控中心等五大航空解決方案
- 微軟停止中國區(qū)運營?系外包公司,約2000人項目組被裁撤
- 第九屆華為ICT大賽中國總決賽收官 84支隊伍晉級全球總決賽
- 聯(lián)想集團黃建恒:SSG業(yè)務已連續(xù)15個季度雙位數(shù)增長
- 聯(lián)想集團ISG總裁:已將多款暢銷服務器進行升級
- 全球超大規(guī)模數(shù)據(jù)中心數(shù)量五年翻倍,2024年新增137個!
- 華為楊超斌:行業(yè)智能化是開啟產業(yè)新紀元的磅礴引擎
- 華為郭振興:2025年行業(yè)數(shù)智化將呈現(xiàn)五大特征
- 加速行業(yè)智能化!華為攜手伙伴共筑解決方案競爭力,共贏時代新機遇
- 華為李鵬:AI正深刻改變每一個行業(yè),攜手伙伴共贏全面智能化時代
免責聲明:本網(wǎng)站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。