深挖:華為存儲與天翼云分布式數據庫的聯合創新路徑
分布式數據庫面臨數據庫可靠性、性能、成本挑戰,2022年6月24日,天翼云&華為 聯合創新中心正式開啟,雙方將基于華為閃存存儲,共同探索數據庫云原生的發展方向。圍繞多寫存儲引擎、高性能高可用存儲持續創新,打造更易維護、更高可用、更經濟的分布式云原生數據庫。
1 分布式數據庫面臨可靠性、性能、成本挑戰
自1970年IBM的數學家Edgar F. Codd提出關系模型,關系數據庫已有50余年歷史,期間關系模型沒有發生大的變化,而數據庫體系架構則經歷了以ORACLE為代表的商業數據庫(IOE)—>以互聯網產商去IOE為代表的分布式架構+開源數據庫—>云原生數據庫的三次大的轉變,以適應業務的要求。

圖 1數據庫體系架構演變
在后兩次的架構發展中,MySQL開源數據庫扮演著重要的角色。它具有靈巧高效、易于使用的優勢,因而應用廣泛、生態成熟。業界大多都選擇了MySQL開源數據庫加分布式架構替代商業數據庫。但隨著業務的發展,MySQL自身和架構的先天問題也日益突出:
數據可靠性問題:基于開源數據庫的分布式數據庫以日志復制回放生成多副本實現數據持久化和高可用。受日志處理機制限制,在業務壓力大或網絡抖動時容易出現較大延遲,造成數據丟失風險或集群故障;
連續性故障問題:傳統的故障處理方式是使系統運行在降級狀態,但MySQL基于本地盤的部署方式從降級狀態恢復到正常狀態需要全量數據恢復,導致系統降級狀態時間極長,二次故障風險大增;
性能影響:分布式事務和分布式查詢在強ACID(AICD:原子性、隔離性、一致性和永久性)場景中有明顯的性能下降,這很大程度抵消了分布式改造帶來的好處;
擴展性差:由于數據庫只能讀寫本服務器內磁盤的數據,增加實例進行性能擴展往往要花數小時甚至一天以上時間復制數據,同時即使只需要增加計算資源,也必須對應增加一份本地存儲;
高成本:高成本一方面來自解決上述問題而增加的硬件投入和軟件改造、運維成本,另一方面來自于非解耦資源池無法實現資源的按量分配和按需分配導致的資源浪費。
2 分布式數據庫云原生改造思路和實踐
以上問題大多涉及到數據庫架構體系,僅從數據庫本身進行優化難以根本解決,同時更換數據庫代價大且時間長,因此業界當前主流做法是,采用對數據庫進行云原生改造的方式來解決問題。云原生數據庫的主要特點包括:
● 采用容器化、不可變基礎設施(數據存儲在外置存儲,計算實例生成后不再變更)等云原生技術架構,解決故障快速切換和資源彈性擴展問題;
● 通過存算分離實現能力下移,尤其是可靠性能力和密集數據處理能力下移到存儲,在利用存儲能力快速提升數據庫系統可靠性和性能的同時,降低了數據庫開發難度。但這一策略同時也對存儲的能力提出更高的要求。
● 通過存算分離實現解耦的資源池化,提升資源利用效率和分配速度;
實現云原生數據庫架構第一步是保留MySQL等開源數據庫的主從部署、本地數據訪問架構,僅將算力轉移到容器、將數據轉移到外置存儲的平滑演進方案;第二步則是通過數據庫存儲引擎改造徹底實現多實例共享存儲的協同優化方案。
2.1 容器化+存算分離改造,以平滑演進模式向云原生邁出第一步
TeleDB首先采用容器化+存算分離改造的方案實現向云原生數據庫的平滑演進:

圖 2平滑演進云原生數據庫架構與原架構對比
2.1.1 容器化和存算分離“根”技術解決可靠性和資源利用率問題
根技術能帶來多方面的價值,在技術架構的確定中起著最關鍵作用,TeleDB的平滑演進方案就是抓住容器化和存算分離架構兩大根技術,使TeleDB初步具備了云原生數據庫能力,實現了可靠性和擴展性的提升及成本下降。
容器化實踐:
● 計算資源池化:在容器化前,要提高資源利用率,需要在物理機上部署多個數據庫實例或使用虛擬機。多實例方式很難實現實例間資源隔離和定量分配,而虛擬機對性能的影響限制了使用場景。采用容器后可以實現對CPU、內存的定量分配,實例被隔離在容器內,而且性能損耗很小,非常適合數據庫業務;
● 實現運維自動化和知識代碼化沉淀:容器聲明式API可將DBA的運維經驗轉化為自動化的故障與運維處理能力。TeleDB開發了一套Operator資源控制器,實現了數據庫集群的發放與管理,降低了運維成本,提升了可靠性;
● 為存算分離架構提供支撐:Kubernetes容器平臺提供了CSI插件存儲管理機制,實現了存儲的動態分配和擴容等功能,這正是原來用物理機部署時所欠缺的。
存算分離架構實踐:
● 存儲資源池化:存算分離使存儲與計算解耦,不會因為單個服務器上的計算或存儲中任意資源不足就不能分配資源,從而同時提升了計算和存儲的使用效率;
● 實現彈性伸縮:如果在擴容時發現服務器上資源不足,原來也需要將實例通過全量復制數據的方式搬遷到其它服務器,現在如果計算資源不足,可通過容器漂移快速搬遷,搬遷時間由天縮短為分鐘級,存儲資源不足則可直接動態擴容。
● 容器漂移和快速補從:
本地盤部署時,服務器故障后需要重建實例并全量復制數據這一過程耗時且牽扯運維人員精力,甚至業務高峰時很長時間都無法完成修復或擴容進而影響業務。
存算分離后容器既可漂移到其它服務器實現故障快速恢復,也可以作為從節點重新加入集群后增量同步數據,使數據恢復速度由小時級/天級縮短為分鐘級。
2.1.2 容器化+存算分離改造實現資源利用率提升40%
經過初步的云原生改造,相同硬件條件下,通過靈活的調度以及細粒度的資源控制,數據庫部署密度提升2倍以上,同時資源利用率提升了40%以上。TeleDB的可靠性得到提升,成本下降,同時應對互聯網化業務以及疫情中對資源的突發需求的能力有了很大提升。
2.2 數據庫存儲引擎+高性能高可用存儲協同,邁出云原生第二步
2.2.1 容器化+存算分離方案難以解決的問題
容器化+存算分離方案以最簡單的方式釋放了云原生架構的價值。但對比其它云原生應用,這種方案并未完全實現無狀態化,分離后存儲和網絡能力也制約了云原生架構價值的發揮:
● 未能徹底解決數據可靠性問題:由于保留了以日志同步多副本的方式,數據丟失或故障風險未解決;
● 擴展能力仍有不足:在擴展讀實例時,仍要全量復制數據,無法快速擴展;
● 多重冗余:由于保留了數據庫多副本,外置存儲上的多副本未起到提升可靠性的作用,反而抵消了成本優化效果并造成性能下降;
● 性能受限:網絡、存儲能力以及保留數據庫高可用方案影響了數據庫的整體性能,導致方案的使用場景受到了限制。
2.2.2 多寫存儲引擎技術創新,打造共享存儲多寫云原生數據庫
多寫存儲引擎成為根技術新方向
針對以上問題,仍需要根技術創新來解決。除容器化之外,采用數據庫多寫存儲引擎、高性能存儲網絡協議和專門研發的高性能高可用存儲來實現存算分離,同時利用存儲在數據處理上的優勢將大量原需要數據庫實現的功能下移到存儲上實現,這種數據庫與存儲通過多寫存儲引擎協同優化的架構已成為業界云原生數據庫的主流。
使用多寫存儲引擎可徹底實現數據庫無狀態化,可以獲得更短的故障恢復時間、更佳的性能、更好的擴展性,顯然選擇多寫多讀方案作為數據庫/存儲協同優化的根技術是更好的選擇。
華為數據存儲-天翼云,優勢互補攜手創新
高性能存儲網絡、高性能、高可用的企業級存儲和多寫存儲引擎跨多個技術領域,技術難度高,制約了云原生數據庫的普及與發展。為推動分布式數據庫云原生架構實現,華為與天翼云合作,以華為多寫存儲引擎和全閃存存儲OceanStor Dorado為數據底座,依托天翼云TeleDB數據庫,構建分布式云原生數據庫。其特點如下:
● 高可用、易兼容:靈活的容器化高可用策略,大幅提升數據庫服務可用性、故障恢復能力。結合TeleDB優化的數據庫引擎,具備與開源MySQL的原生兼容性的同時,兼具極致的擴縮能力,便于業務平滑遷移;
● 支持多寫:利用華為多寫存儲引擎,實現各實例完全相同的數據庫讀寫能力,無數據延遲,相比一寫多讀模式故障恢復速度更快,多實例性能擴展無需改造應用,實現技術跨越發展;
● TeleDB容器化+共享存儲多寫實現數據庫無狀態化:多個實例共享一份數據,避免多重冗余,消除日志復制的數據不一致風險。無狀態化徹底解除計算和存儲的捆綁,擴容計算實例不需要復制數據和增加存儲成本;
● 高可靠:利用華為OceanStor Dorado全閃存存儲的分布式AA負載均衡架構、RAID2.0持久化技術、亞健康管理、SSD磨損均衡/反磨損均衡等能力,不但滿足了數據庫數據持久化能力下沉到存儲對可靠性的嚴苛要求,還補齊了數據庫快速數據重構、亞健康故障處理、SSD介質延壽和故障主動處理等能力,使數據庫綜合可靠性能能力有了大幅度提升;

● 高性能:華為OceanStor Dorado全閃存存儲+多寫存儲引擎IO路徑優化,相比原生MySQL數據庫提升整體性能約100%;
● 高性能無損網絡:支持基于以太網的RDMA組網,相比IB組網可實現高性能、低成本、通用性好的存儲網絡;
3 充分發揮數據庫多寫能力、關鍵能力向存儲下沉成為下一步探索的方向
云原生數據庫通過保留數據庫SQL引擎的方式實現對原有數據庫生態的兼容,但由于架構的變化,存儲底座能力的發揮必須通過數據庫的整合才能實現。TeleDB在基于MySQL數據庫的開發與應用中有豐富的經驗,為實現存算分離架構、發揮華為閃存存儲高可用、高性能和綜合成本優勢起了至關重要的作用。未來雙方將繼續合作探索如何充分發揮數據庫多寫能力、通過TeleDB數據庫體系化方案實現關鍵能力向存儲下沉從而進一步提升數據庫的性能、可靠性,降低成本,推動云原生數據庫開放架構的成熟。
本文作者——龐毅 華為數據存儲資深產品經理
蘇飛 天翼云科技有限公司數據庫技術專家





























