衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

云原生數據庫GaiaDB架構設計解析

jf_WZTOguxH ? 來源:百度智能云技術站 ? 2023-12-14 14:48 ? 次閱讀

1 云原生數據庫和 GaiaDB

目前,云原生數據庫已經被各行各業大規模投入到實際生產中,最終的目標都是「單機 + 分布式一體化」。但在演進路線上,當前主要有兩個略有不同的路徑。

一種是各大公有云廠商選擇的優先保證上云兼容性的路線。它基于存算分離架構,對傳統數據庫進行改造,典型產品有 AWS Aurora、阿里云 PolarDB、騰訊云 TDSQL-C、百度智能云 GaiaDB。

數據庫作為公有云上的核心基礎設施,第一要務是實現用戶上云的平滑性。目前像云網絡、云主機,云盤都實現了完全透明兼容。云原生數據庫也必須實現從語法、使用習慣、再到生態上的全面兼容。因此,基于現有生態做分布式化改造成為了一條首選的演進路線。使用存算分離路線的云原生數據庫可以完美兼容傳統的使用習慣,為交易類場景提供低延遲的寫事務能力,同時讀擴展性與存儲擴展性借助了分布式存儲的池化能力,也得到了很大增強。

另外一種路徑是先搭建一套分布式框架,然后在其中填充數據庫邏輯。OceanBase 和 TiDB 就是其中兩個比較典型的產品。它們將事務的子系統和鎖的子系統拆分為單獨的模塊。計算層通過與這些模塊交互,可讓多個節點均支持寫請求。然后由統一的新事務 + 鎖中心節點來進行仲裁。這樣,對需要較多計算資源的寫負載場景會有較好的提升。由于事務和鎖都需要跨網絡進行交互,因此事務延遲相對較高,在鎖負載較重的情況下會成為一定的瓶頸。

目前這兩個路線并不是涇渭分明,獨立發展的,大家都在向著統一的目標演進。因此我們可以看到,存算分離路線在逐漸增強 SQL 的多級并行能力,同時也在探索和支持多個寫節點的庫表級/行級的多寫能力。同時分布式事務路線也在積極探索在小數據規模下的單機部署架構。

所以在未來,這兩個路線會不斷融合。業務的數據規模不管多大,都可以平穩快速地運行在數據庫系統上,而不需要用戶去過分關注分區、索引、事務模型等信息。就像十年前如何在機器之間存儲海量小文件還是一個后端研發工程師的必修課,而隨著 S3 存儲的出現,用戶再也不需要考慮如何通過哈希等方式來保證單個文件夾不會保存太多文件一樣。

wKgZomV6pW6AEvWOAAKPSDgVp6Q953.jpg

GaiaDB 是從百度智能云多年數據庫研發經驗積累中逐漸迭代而來。GaiaDB 于 2020 年發布首個版本,首次實現了基于存算分離的大容量存儲和快速彈性能力,解決了百度內部的歷史庫、歸檔庫等大容量存儲需求。

緊接著,為了滿足集團內大部分核心業務的跨地域熱活準入門檻和就近讀性能需求,GaiaDB 于 2021 年發布了地域級熱活功能??绲赜驘峄钊匀皇褂么鎯油降姆桨?,同步延遲與吞吐都相較邏輯同步有很大提升,從地域可以實現與主地域接近相同的同步能力,不會成為拖慢整體系統的短板,也不會像邏輯同步那樣在大事務等場景下出現延遲飆升的問題。

所以 2.0 版本上線后,GaiaDB 逐漸接入了手百、貼吧、文庫等多個核心產品線,解決了業務在跨地域場景下的延遲與性能痛點。

隨著業務的逐漸上云,多可用區高可用的需求慢慢凸顯,如何實現單機房故障不影響服務成為了很多業務上云的關注點。為此 GaiaDB 打造了可支持跨可用區熱活的 3.0 版本,每個可用區都可以實時提供服務并且不增加額外的存儲成本。而在今年, GaiaDB 推出了更加智能化的 4.0 架構,性能進一步提升,功能完整度也在持續完成覆蓋。

wKgaomV6pW6AaL0qAALit4rltBY566.jpg

接下來整體介紹一下 GaiaDB。目前 GaiaDB 已經實現了線上全行業場景覆蓋,最大實例達到了數百 TB,不僅兼容開源生態,還實現了 RPO=0 的高可靠能力。在成本方面,由于在架構設計上采用了融合的技術理念,GaiaDB 不依賴特殊硬件和網絡環境也可以保證性能,實現云上云下一套架構。

wKgZomV6pW6AdihdAALyJ9wXHZY332.jpg

2 GaiaDB 的高性能&多級高可用設計

接下來我來分享一下 GaiaDB 的性能核心設計理念——通過融合和裁剪,將數據庫和分布式存儲進行深度融合,為全鏈路的同步轉異步化提供條件,從而實現極致的性能與通用性。

我們可以看到,如果數據庫簡單使用通用分布式協議和單機存儲引擎,如左圖所示,那么數據庫需要處理主從同步,需要有 CrashSafe 所需要的物理日志。同時,一致性協議也要有主從同步,要寫自己的 WAL 以及持久化快照。而單機引擎同樣需要 CrashSafe 以及一套日志系統和數據存儲邏輯。

我們發現,多層日志的嵌套帶來了層層延遲與寫放大。更復雜的是,數據流中嵌套多層邏輯后,也給系統整體數據安全帶來了一定挑戰。同時由于多層之間需要串行等待,所以在加入了網絡延遲后會給數據庫帶來很大的性能下降。雖然可以使用定制化硬件與網絡來縮短網絡和磁盤落盤的延遲以降低鏈路耗時,但這又引入了新的不確定性并導致了更高的成本。

GaiaDB 的解決思路是將事務和主從同步邏輯、日志邏輯、快照和存儲持久化邏輯重新組合和排布。

首先是將分布式協議的主從同步邏輯融合進數據庫計算節點中。由于計算層本身就需要處理主從同步、事務和一致性問題,相關的工作量增加并不大。這樣一來,最直接的收益就是將兩跳網絡和 I/O 精簡為一跳,直接降低了鏈路延遲。

其次 GaiaDB 將多層增量日志統一改為使用數據庫 Redo 物理日志,由 LogService 日志服務統一負責其可用性與可靠性。

除此之外,GaiaDB 也將持久化、快照和數據庫回放功能融合入存儲節點。由于存儲層支持了數據庫回放能力,可以很輕松實現數據頁級別的 MVCC。這樣全鏈路只剩下了數據庫語義,數據流簡單可靠,邏輯大大簡化。

wKgZomV6pW6ARpYvAAJjGokMHp4213.jpg

下面我們一起來看下共識模型上的改變。

像 Raft 協議是需要兩跳網絡才能實現一次提交確認的,右上角就是 Raft 的數據流架構:CN 節點將寫發送給 Leader 后,需要等待 Leader 發送給 Follower 并至少收到一個返回后才能成功。

這里就帶來了兩跳網絡和 I/O 的同步等待問題。而 GaiaDB 則是計算節點直接發送給多個 Log 服務并等待多數派返回,這樣不依賴任何特殊硬件與網絡就降低了延遲。這樣系統里不管是事務的一致性還是多副本一致性,統一由計算節點統籌維護,所有的增量日志也統一為數據庫物理日志,整體數據流簡單可控。

對于數據風險最高的 Crash Recovery 場景,由于統一使用了數據庫語義,整體流程更加健壯,數據可靠性更高,降低了數據在多種日志邏輯之間轉換和同步帶來的復雜度風險。而在性能方面,由于存儲層自身具備回放能力,可以充分利用 LogService 層的日志緩存能力。對于寫操作來說,不需要每次更改都刷盤,可以批次回放刷盤,大大節省了磁盤吞吐與 I/O。

經過以上改造,線上吞吐性能可以提升 40% 。同時由于鏈路簡化,也大大優化了長尾延遲。像之前計算節點與分布式主節點之間發生網絡抖動的場景,就會被多數派的返回特性來優化。

wKgaomV6pW6AUUUUAALV2TyTphM479.jpg

分享完一致性協議層優化,接下來我們來探討一下鏈路層優化。

我們知道,總吞吐與并發度成正比,與延遲成反比。一致性協議層改造并縮短了數據鏈路,可以通過降低延遲來增加吞吐。那么有沒有辦法通過提升數據流的并發度來提升吞吐呢?答案是可以。由于數據庫的物理日志自帶版本號與數據長度,所以不需要像通用存儲一樣實現塊級別串行提交。之所以使用通用存儲需要串行提交,是因為存儲端只能根據請求到達的先后確定數據版本,如果亂序到達,最后生效的版本是不可知的。

而對于 GaiaDB 來說,由于 LogService 具備數據庫語義的識別功能,所以計算節點只需要異步進行寫入,日志服務就會自動根據數據版本選取最新數據,然后根據寫入情況批量返回成功,這樣鏈路就可以實現延遲與吞吐的解耦。

當然計算層依然會等待日志層批量返回的最新落盤版本后再返回事務提交成功,所以依然可以滿足提交成功的事務一致性、持久化的要求。

另外針對高負載下 I/O 請求與數據庫業務請求爭搶 CPU 的問題,我們使用了 I/O 線程隔離技術,通過資源隔離的方式,將 I/O 線程與數據庫業務線程進行隔離。這樣即使在復雜負載場景下,I/O 延遲仍可以保持在較低水平。

wKgZomV6pW6AN188AAOodbojQ9A298.jpg

在分析完前面兩部分之后,可能會有同學有疑問:既然日志層到存儲層不是同步寫,是不是最終系統的一致性降低了?有沒有可能發生數據丟失或不一致的問題呢?答案是不會。因為 GaiaDB 的存儲是一套支持 MVCC 的多版本系統。所以即使回放實現上是異步,但是由于請求方會提供所需要的數據版本,存儲層可以提供對應版本的強一致數據視圖。

GaiaDB 的存儲節點支持數據頁的回放功能,可以動態回放至任意目標版本后再返回,在之前的版本里,假如由于異步的因素還沒有獲取到這部分增量日志,存儲節點也會啟用優先拉取的策略實時拉取一次日志后再回放,以此來提供較好的時效性。而在最新的 GaiaDB 版本中,我們也在計算層添加了同樣的回放能力,存儲節點盡力回放后仍不滿足需求的,由計算節點進行剩余任務。

這樣對于存儲慢節點的兼容能力就大大增強了,同時由于存儲節點會盡力回放,所以也可以最大化利用存儲層的算力資源。對于刷臟邏輯目前也完全下沉到了存儲層,存儲節點可以自主控制刷盤策略和時機,盡量合并多次寫后再進行落盤,大大節省了磁盤 I/O 負載,平均 I/O 延遲降低了 50%。

wKgaomV6pW6Aa9_cAALbe0Rfy9o925.jpg

下圖中我們可以看到,在綜合了多項優化后,讀寫性能實現了最高 89% 的提升,其中寫鏈路線路提升尤其明顯。這些都是在使用普通存儲介質和網絡環境的情況下測試得出的,主要得益于數據鏈路的縮短與同步轉異步的自適應高吞吐能力。

wKgaomV6pW6AAUZzAAGN8JHfgA8135.jpg

在討論完性能后,再分享一下 GaiaDB 在高可用方面的思考和設計理念。

數據庫作為底層數據存儲環節,其可用性與可靠性直接影響系統整體。而線上情況是復雜多變的,機房里時時刻刻都可能有異常情況發生,小到單路電源故障,大到機房級網絡異常,無時無刻不在給數據造成可用性隱患。

作為商業數據庫,具備多級高可用能力是最核心的必備能力。這樣才能抵御不同級別的異常情況,有力保障客戶業務的平穩運行。GaiaDB 支持多副本、跨可用區、跨地域三級別高可用,創新性地實現了多可用區熱活高可用、單個實例支持跨可用區部署。在不增加成本的情況下,每個可用區均可提供在線服務,任何可用區故障都不會打破存儲一致性。下面我們來分別看一下每個級別高可用能力的實現。

wKgZomV6pW6AJT4oAAIHddq7g0w263.jpg

首先是實例的多副本高可用能力。

GaiaDB 對整體的分布式架構進行了重新設計,系統共分為三層,即計算層、日志層、存儲層。

其中計算層本身無狀態,僅負責事務處理與一致性維護,所以獲得了很強的彈性能力,實現了秒級切換、多節點容災,同時擴縮容只需要內存啟動即可。

日志層負責系統增量日志部分的持久化,實現了多數派高可用。同時由于一致性協調角色上移到了計算層,所以該層全對稱,任意節點故障不需要進行等待選主,也不會有重新選主帶來的風暴和業務中斷問題。

再往下是存儲層,負責數據頁本身持久化與更新。由于上層保留了增量日志,所以存儲層可以容忍 n-1 副本故障。簡單來說就是只要有一個副本完好,加上上層提供的增量日志,即可回放出所有版本的完整數據,實現了相比傳統多數派協議更高的可靠性能力。

wKgaomV6pW6AXIKnAAIi5h-kR1U444.jpg

其次是跨可用區與跨地域的高可用能力。

GaiaDB 的多級高可用都是基于存儲層物理日志的直接復制。相比邏輯復制,數據鏈路大大縮短,同步延遲也不再受上層大事務或者 DDL 等操作影響,在主從同步延遲上具有很大優勢。

對于跨可用區高可用來說,由于 GaiaDB 具有對稱部署架構,所以可以很方便地進行跨可用區部署。這樣可以在不增加存儲成本的情況下實現多可用區熱活,任一可用區故障都不影響數據可靠性。

寫數據流可以自適應只跨一跳最短的機房間網絡,不需要擔心分布式主節點不在同機房帶來的兩跳跨機房網絡和跨遠端機房問題,而讀依然是就近讀取,提供與單機房部署接近的延遲體驗。由于跨機房傳輸的網絡環境更為復雜,GaiaDB 添加了數據流的鏈式自校驗機制,使數據錯誤可以主動被發現,保障了復雜網絡環境下的數據可靠性。

對于跨地域高可用來說,由于同樣使用了異步并行加速的物理同步,及時在長距離傳輸上,吞吐依然可以追齊主集群,不會成為吞吐瓶頸,在計入網絡延遲的情況下,國內可以實現數十毫秒的同步延遲,這是因為跨地域同樣可以使用異步并行寫加速,自動適應延遲和吞吐之間的關系。同時地域之間還可以實現主動快速切換和默認就近讀取。

所以在使用了 GaiaDB 的情況下,業務可以不做復雜的數據同步邏輯就可以實現低成本的跨可用區與跨地域高可用。

wKgaomV6pW6AZUa1AAKGP6eaEEU066.jpg

介紹完高性能和高可用兩部分的設計理念后,接下來再介紹一下我們正在內部灰度中的新功能:

并行查詢:并行查詢從并發度上進行加速的并行查詢能力,這對大數據規模下的多行查詢有非常好的加速作用,可以充分利用計算節點的 CPU 和內存資源和分布式存儲層的并行 I/O 能力。

分析型從庫(HTAP):分析型從庫具備多種行列加速能力,既有支持百 TB 級別數據計算的分析型節點解決方案,也有支持百萬行以上檢索加速的列式索引引擎。其中列式索引引擎同樣采用物理日志同步,不需要業務維護數據一致性,可以和當前交易類負載的事務隔離級別兼容。

Serverless:我們也在探索充分利用內部潮汐算力的資源優化調度方案,在白天業務高峰期,將資源向實時性更強的交易類業務傾斜,在低峰期自動縮容,將資源復用投入到離線計算類業務中,不但客戶節省了運維成本與資源成本,也避免了資源閑置和浪費,實現了更高的資源利用率。

以上功能預計都會在近期開放灰度試用。

wKgZomV6pW6AQDlLAAHDOpmUGQk278.jpg






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10902

    瀏覽量

    213000
  • DDL
    DDL
    +關注

    關注

    0

    文章

    13

    瀏覽量

    6344
  • AWS
    AWS
    +關注

    關注

    0

    文章

    433

    瀏覽量

    24505
  • 百度智能云
    +關注

    關注

    0

    文章

    47

    瀏覽量

    1948

原文標題:高性能和多級高可用,云原生數據庫 GaiaDB 架構設計解析

文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    云原生AI服務怎么樣

    云原生AI服務,是指采用云原生的原則和技術來構建、部署和管理人工智能應用及工作負載的方法和模式。那么,云原生AI服務怎么樣呢?下面,AI部落小編帶您了解。
    的頭像 發表于 01-23 10:47 ?112次閱讀

    數據庫是哪種數據庫類型?

    數據庫是一種部署在虛擬計算環境中的數據庫,它融合了云計算的彈性和可擴展性,為用戶提供高效、靈活的數據庫服務。云數據庫主要分為兩大類:關系型數據庫
    的頭像 發表于 01-07 10:22 ?136次閱讀

    云原生LLMOps平臺作用

    云原生LLMOps平臺是一種基于云計算基礎設施和開發工具,專門用于構建、部署和管理大型語言模型(LLM)全生命周期的平臺。以下,是對云原生LLMOps平臺作用的梳理,由AI部落小編整理。
    的頭像 發表于 01-06 10:21 ?110次閱讀

    艾體寶與Kubernetes原生數據平臺AppsCode達成合作

    虹科姐妹公司艾體寶宣布與Kubernetes 原生數據平臺 AppsCode達成正式合作,致力于將其核心產品KubeDB引入中國市場,為企業提供專業、高效的云原生數據庫管理解決方案。
    的頭像 發表于 12-16 15:07 ?309次閱讀

    什么是云原生MLOps平臺

    云原生MLOps平臺,是指利用云計算的基礎設施和開發工具,來構建、部署和管理機器學習模型的全生命周期的平臺。以下,是對云原生MLOps平臺的介紹,由AI部落小編整理。
    的頭像 發表于 12-12 13:13 ?162次閱讀

    AI時代的數據庫技術發展論壇亮點前瞻

    可以看到,數據庫技術作為數字經濟的基石,在全球范圍內正經歷著由傳統架構云原生、智能化的轉型。而AI技術的融入,使得數據庫系統在性能優化、自動化管理、智能決策等方面展現出前所未有的潛力
    的頭像 發表于 12-12 11:31 ?308次閱讀

    軟通動力榮登2024云原生企業TOP50榜單

    近日,DBC德本咨詢發布“2024云原生企業TOP50”榜單,軟通動力憑借自研的“天鶴云原生數據庫平臺” 榮登該榜單第8名,彰顯了公司在該領域的行業競爭力。
    的頭像 發表于 12-04 11:27 ?284次閱讀

    云原生數據庫哪個好一些?

    云原生數據庫哪個好一些?云原生數據庫各有其獨特的優勢,適用于不同的場景。云原生強調高效資源利用、快速開發部署和高可伸縮性,適合需要高度靈
    的頭像 發表于 11-29 10:07 ?209次閱讀

    k8s微服務架構就是云原生嗎?兩者是什么關系

    k8s微服務架構就是云原生嗎?K8s微服務架構并不等同于云原生,但兩者之間存在密切的聯系。Kubernetes在云原生
    的頭像 發表于 11-25 09:39 ?196次閱讀

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    一個運行在存儲上的SQLServer數據庫,有1000多個文件,大小幾十TB。數據庫每10天生成一個NDF文件,每個NDF幾百GB大小。數據庫包含兩個LDF文件。 存儲損壞,數據庫
    的頭像 發表于 10-31 13:21 ?332次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>

    云原生和非云原生哪個好?六大區別詳細對比

    云原生和非云原生各有優劣,具體選擇取決于應用場景。云原生利用云計算的優勢,通過微服務、容器化和自動化運維等技術,提高了應用的可擴展性、更新速度和成本效益。非云原生則可能更適合對延遲敏感
    的頭像 發表于 09-13 09:53 ?464次閱讀

    京東云原生安全產品重磅發布

    “安全產品那么多,我怎么知道防住了?”“大家都說自己是云原生的,我看都是換湯不換藥”在與客戶溝通云原生安全方案的時候,經常會遇到這樣的吐槽。越來越的客戶已經開始了云原生化的技術架構改造
    的頭像 發表于 07-26 10:36 ?537次閱讀
    京東<b class='flag-5'>云原生</b>安全產品重磅發布

    從積木式到裝配式云原生安全

    云原生安全風險 隨著云原生架構的快速發展,核心能力逐漸穩定,安全問題日趨緊急。在云原生安全領域不但有新技術帶來的新風險,傳統IT基礎設施下的安全威脅也依然存在。要想做好
    的頭像 發表于 07-26 10:35 ?348次閱讀
    從積木式到裝配式<b class='flag-5'>云原生</b>安全

    華為云多模數據庫 GeminiDB 架構與應用實踐直播問答實錄

    多模數據庫作為一種新興的數據管理解決方案,正在受到越來越多的關注。而華為云多模數據庫 GeminiDB 基于云原生數據庫優勢,讓企業應用更智
    的頭像 發表于 04-08 18:25 ?1207次閱讀

    華為云原生多模數據庫 GeminiDB 架構與應用實踐

    近日,2023 全球分布式云大會·深圳站順利召開,華為云 NoSQL 數據庫研發總監余汶龍在會上發表了題為《華為云原生多模數據庫 GeminiDB 架構與應用實踐》的精彩演講。 余汶龍
    的頭像 發表于 04-08 18:23 ?1223次閱讀
    華為<b class='flag-5'>云原生</b>多模<b class='flag-5'>數據庫</b> GeminiDB <b class='flag-5'>架構</b>與應用實踐
    大发888娱乐城送白菜| 百家乐官网网开服表| 根河市| 永利高娱乐| 永利高百家乐现金网| 永凡棋牌官网下载| 發中發百家乐的玩法技巧和规则| 百家乐怎打能赢| 太阳城百家乐官网网址--| 尊爵娱乐| 威尼斯人娱乐平台注册网址| 百家乐如何看牌| 百家乐官网在线赌场娱乐网规则| 皇冠娱乐网| 免费百家乐追号工具| 百家乐发牌千数| 百家乐官网庄6点| 百家乐官网庄家优势| 百家乐官网有多少网址| 百乐门娱乐| 大发888 这类平台| 伟易博百家乐娱乐城 | 百家乐开户百家乐技巧| 百家乐官网翻天| 做生意什么花招财| 试玩百家乐官网的玩法技巧和规则| 百家乐官网英皇娱乐场| 百家乐官网微笑不倒| 百家乐官网计划策略| 百家乐官网游戏客户端| 百家乐官网三多注码法| 合川市| 澎湖县| 南宁市| 博彩公司大全| 德州扑克 单机版| 大发888网页多少| 太阳城管理| 大发888下注| 大发888官网吧| 葡京娱乐|