華為雲GaussDB NoSQL雲原生多模資料庫的超融合實踐

耀阳居士發表於2024-05-30

華為雲GaussDB NoSQL雲原生多模資料庫的超融合實踐

舉報
華為雲GaussDB NoSQL雲原生多模資料庫的超融合實踐 GeminiDB-Redis部落格 發表於 2021/11/16 13:37:30
2w+ 0 0
【摘要】 中國資料庫大會分享,主題為GaussDB NoSQL架構設計。

引言

本屆中國資料庫技術大會(DTCC),不管是公有云資料庫廠商,還是傳統資料庫廠商,都在關注雲原生的技術實踐,分享了很多存算分離、DBaaS、Kubernetes等與資料庫深度結合的案例。

在NoSQL專題會場,熱度最高的一場演講來自華為雲資料庫團隊,由廣入深,乾貨滿滿。

本文整理自華為雲資料庫NoSQL架構師餘汶龍的專題分享——雲原生多模資料庫GaussDB NoSQL架構設計,總結了當前資料庫的發展趨勢、GaussDB NoSQL關鍵技術解密以及核心競爭力。

資料庫發展趨勢

1. 行業市場

中國信通院最新研究透露出兩個重要資訊:

  • 未來幾年,中國資料庫市場將保持23.4%的年複合增長率,中國資料庫市場在全球的份額,將從2020年的5.2%提升到12.3%
  • 中國的國產資料庫產品雖然以關係型為主,非關係型為輔,但從2000年以後,以圖、時序等為代表的非關係型產品發展勢頭越來越好,截止2020年底,國產NoSQL資料庫廠商已經佔到了40%

1.png

2. 行業趨勢

受大環境的影響,國內金融、電信、政企等行業為防止潛在的供應鏈風險,技術層面存在自研需求,這使得我們的國產資料庫產業進入蓬勃發展的初期。

但我國資料庫行業發展還面臨2個核心問題:

  • 如何縮小“高要求的存量資料應用”與“仍處於發展初期階段的供給能力”之間的差距;
  • 如何匹配“創新型資料應用”與“資料庫技術演進”的合理對映關係。

如何回答上述兩個問題,可以從中國信通院最新的趨勢總結裡找到答案:“多模實現一庫多用,簡化開發運維成本”、“雲原生降低硬體依賴,更方便的享受新興技術紅利”。

因此,為了更好的相容歷史資料應用(比如原先用Redis),並支援好未來的創新應用(新增Influx),可以在多模與雲原生領域提前做好相關佈局。

2.png

3. 雲原生資料庫演進方向

資料庫的發展,按傳統物理機部署到雲化,大概經歷了三代。

  • 第一代是純物理機、裸硬碟部署,從業人員必須關心硬體的各種細節,包括機型、系統、硬碟、組網等等;
  • 第二代是雲化的初級階段,從業人員把資料庫部署從物理機,遷移到虛擬機器VM,把物理硬碟,換成了雲盤EVS。但這一代有個明顯的缺點,EVS是個3副本可靠的服務,再加上資料庫自身的高可用,那麼儲存成本就放大了3倍;並且備機其實是資源浪費的,沒有提供服務;
  • 第三代是雲化的高階階段,這個階段將資料庫的資源,徹底分成儲存和計算兩層,其中計算資源部署在更輕量級的容器之上,而儲存資源部署在分散式儲存池之上。很顯然,這是與雲原生結合更徹底的方式,充分享受了架構的彈性、便捷,而且輕鬆實現了多點讀寫的全負荷分擔能力。

3.png

4. 存算分離,分而治之

雲原生資料庫有兩個重要的特點。首先是存算分離。

存算分離是一種分層的設計思想:

  • 從邏輯到功能進行明確的劃分,讓計算層更聚焦服務、產品、協議處理等事件;
  • 儲存層更聚焦資料本身的複製、安全、擴縮容等等。

4.png

5. 多模歸一,一生萬物

雲原生資料庫第二個重要的特點,是多模。

多模實際上是一種“歸一”,也是一種“派生”。以大家熟悉的NoSQL為例,MongoDB是有Mongod/Mongos/Config等元件,而對應的Cassandra其實也有Coordinate Node/Data Node等元件。雖然這些元件名字不同,但背後做的事情是一樣的,即:叢集管理、副本管理、擴縮容管理、以及管控等功能。

其實,完全可以把這些功能抽象成統一的架構,即“多模歸一”。在這套統一架構之上,我們再新增別的引擎就很容易了。可以快速複用當前的成熟架構,提供不同的協議介面即可,即“一生萬物”。

5.png

6. GaussDB NoSQL概況

接下來介紹這次分享的主角——雲原生多模資料庫GaussDB NoSQL。

當前GaussDB NoSQL已經支援MongoDB、Cassandra、Redis、InfluxDB等4款引擎;全球客戶1000+,足跡遍佈金融、政府、電信、網際網路等行業;總資料量超過10PB,每日新增超過10TB。

GaussDB NoSQL關鍵技術

1. Compaction解除安裝

GaussDB NoSQL採用LSM做儲存引擎,正常情況下,前臺的讀寫會受到後臺的Compaction任務的影響,從而導致時延抖動。

因此,我們設計了單獨的Compaction任務節點,透過共享的方式,訪問使用者的資料並進行Compact,再將Compact的結果應用到使用者的可見版本中。這樣做的話,就將使用者前臺的IO和後臺IO分離,解決了時延抖動問題。

a.png

2. Flush解除安裝

根據LSM引擎的寫入流程,可以知道,一個資料要寫入DB中,需要經歷兩次IO:

  • 寫WAL
  • flush memtable

而這兩次IO寫的其實是相同資料,完全可以省掉一次。因此,我們藉助共享儲存的能力,獨立出一個後臺任務節點。當使用者前臺節點需要flush memtable的時候,由後臺任務節點讀取WAL,並轉化成L0層的SST,再應用版本,並通知前臺刪除memtable。這樣就極大節省了使用者前臺的IO開銷。

b.png

3. 分裂

GaussDB NoSQL在分片策略上,採取的是Hash + Range的結合方式,因此擴容或處理熱點的時候會很靈活。

比如,當chunk數量足夠多時,只需要移動chunk就可以擴容;而當某個chunk成為訪問熱點時,對它做分裂就可以解決區域性熱點問題。

c.png

4. 3AZ容災

作為資料庫產品,容災特性是很重要的,它可以避免極端情況給使用者業務帶來的災難性損失。

GaussDB NoSQL有統一的容災設計,即儲存和計算可以實現3AZ部署,同時儲存層資料實現3副本強一致複製。因此在任意時間,掛掉了任意機房的儲存,都不會丟資料;而掛掉計算,也會被其他AZ的計算節點接管後設資料,不會讓訪問完全中斷。

d.png

以Redis為例看GaussDB競爭力

接下來,以使用最廣泛的NoSQL引擎Redis為例,具體介紹GaussDB NoSQL的優勢。

1. 強一致

社群版Redis,主從複製是非同步的,容易造成資料堆積,也有當機丟資料風險。

GaussDB(for Redis)(下文簡稱高斯Redis)則是採用強一致同步的,當使用者的資料寫入高斯Redis並收到返回OK,這意味著高斯Redis已經實現了強一致的複製,資料的安全性很高。當然,這裡的複製過程採用了組提交、使用者態檔案系統、RDMA等技術來降低同步複製的時延。

x.png

2. 高可用

高斯Redis的資料儲存是共享的,即Shared Everything,因此可以容忍最多N-1個節點故障,而不影響資料的訪問。

y.png

3. 彈性伸縮

高斯Redis實現了分層彈性,將資源準確的劃分成計算資源、儲存資源,真正做到了按需擴容:

  • 當使用者的計算不足時,只需要擴充套件計算節點;
  • 當儲存空間不夠時,只需要擴充套件儲存空間即可。

同時,擴容過程也足夠流暢:

  • 計算擴容的過程,不需要複製資料,只需要修改路由對映即可,對業務側的影響很小;
  • 儲存擴容更簡單,只需要修改配額即可,對業務側零影響。

所以計算、儲存的擴容都足夠輕量級,可極速完成且對業務干擾極小。

z.png

4. 全負荷分擔

存算分離的設計,讓我們把資料複製交給了儲存,計算層則完全解放。

每個節點都可以承擔使用者的讀寫請求,這跟開源Redis的主上讀寫來比較,實現了2倍擴充套件。

zz.png

總結

  • 雲原生是技術趨勢

雲原生是大勢所趨,越來越多廠商和從業者都在提倡雲原生,而華為雲GaussDB NoSQL不僅僅基於雲原生,還實現了多模架構,實現了多副本強一致、高可用、彈性伸縮、高效能等能力,以及具備資源複用、開發運維統一等好處。

  • 華為雲GaussDB NoSQL提供超融合數字化解決方案

華為雲GaussDB NoSQL的多模特性,提供高併發、低時延的Redis,助力秒殺、推薦、熱搜等場景;提供大容量、高頻寫的Cassandra,助力海量儲存以及檢索等場景;提供非結構化、靈活擴充套件的MongoDB,助力大資料分析、交易等場景;提供時序特徵的InfluxDB,助力邊緣計算、工業生產、實時監控等場景。

以上場景涵蓋數字工業的方方面面,提供了完整的一體化解決方案,方便使用者一站式使用。

tail.png

附錄

本文作者:華為雲資料庫GaussDB(for Redis)團隊

杭州/西安/深圳簡歷投遞:yuwenlong4@huawei.com

更多產品資訊&優惠活動:GaussDB(for Redis)官網

更多技術文章請關注:GaussDB(for Redis)官方部落格

相關文章