<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    10442

    瀏覽量

    206548
  • DDL
    DDL
    +關注

    關注

    0

    文章

    11

    瀏覽量

    6285
  • AWS
    AWS
    +關注

    關注

    0

    文章

    393

    瀏覽量

    23930
  • 百度智能云
    +關注

    關注

    0

    文章

    42

    瀏覽量

    1804

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

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

收藏 人收藏

    評論

    相關推薦

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

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

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

    近日,2023 全球分布式云大會·深圳站順利召開,華為云 NoSQL 數據庫研發總監余汶龍在會上發表了題為《華為云原生多模數據庫 GeminiDB 架構與應用實踐》的精彩演講。 余汶龍
    的頭像 發表于 04-08 18:23 ?762次閱讀
    華為<b class='flag-5'>云原生</b>多模<b class='flag-5'>數據庫</b> GeminiDB <b class='flag-5'>架構</b>與應用實踐

    云原生是大模型“降本增效”的解藥嗎?

    云原生AI正當時
    的頭像 發表于 02-20 09:31 ?132次閱讀

    米哈游大數據云原生實踐

    近年來,容器、微服務、Kubernetes 等各項云原生技術的日漸成熟,越來越多的公司開始選擇擁抱云原生,并開始將 AI、大數據等類型的企業應用部署運行在云原生之上。以 Spark 為
    的頭像 發表于 01-09 10:41 ?263次閱讀
    米哈游大<b class='flag-5'>數據云原生</b>實踐

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

    GaiaDB 對整體的分布式架構進行了重新設計,系統共分為三層,即計算層、日志層、存儲層。其中計算層本身無狀態,僅負責事務處理與一致性維護,所以獲得了很強的彈性能力,實現了秒級切換、多節點容災,同時擴縮容只需要內存啟動即可。
    發表于 12-22 17:29 ?128次閱讀
    <b class='flag-5'>云原生</b><b class='flag-5'>數據庫</b><b class='flag-5'>GaiaDB</b><b class='flag-5'>架構設</b>計<b class='flag-5'>解析</b>

    云原生技術前沿落地實踐分論壇圓滿舉辦

    12 月 16 日,2023 開放原子開發者大會【云原生技術前沿落地實踐】分論壇在無錫成功舉辦。論壇將聚焦云原生的泛在化、Serverless 化以及智能化等前沿發展趨勢,與一線技術專家及最終用戶
    的頭像 發表于 12-22 09:20 ?564次閱讀
    <b class='flag-5'>云原生</b>技術前沿落地實踐分論壇圓滿舉辦

    ABI發布電信云原生平臺及運維白皮書

    通過研究云原生平臺的發展和演變,對云原生平臺在標準和容器化的演進方向進行了展望,并建議運營商跟上行業變化,擁抱新技術,無縫過渡到云原生網絡架構。 云化一直是電信行業數字化轉型的驅動力,
    的頭像 發表于 11-17 19:40 ?315次閱讀
    ABI發布電信<b class='flag-5'>云原生</b>平臺及運維白皮書

    數據庫邏輯結構設計(2)#數據庫技術

    數據庫
    未來加油dz
    發布于 :2023年07月11日 15:37:36

    數據庫邏輯結構設計(1)#數據庫技術

    數據庫
    未來加油dz
    發布于 :2023年07月11日 15:36:26

    數據庫概念結構設計(1)#數據庫技術

    數據庫
    未來加油dz
    發布于 :2023年07月11日 15:29:48

    深耕數據庫根技術,華為云云原生數據庫推動汽車產業數智升級

    近日,由 CNCF、中國信通院、華為云及業界云原生技術精英們構建的全球云原生交流平臺——創原會,走進福佑卡車,揭秘公路貨運背后的數智動能,共享數智硬核盛宴。華為云數據庫軟件總工程師彭立勛受邀參觀
    的頭像 發表于 06-29 16:44 ?246次閱讀
    深耕<b class='flag-5'>數據庫</b>根技術,華為云<b class='flag-5'>云原生</b><b class='flag-5'>數據庫</b>推動汽車產業數智升級

    探索云原生技術發展與應用實踐,賦能企業數字化轉型 | 2023開放原子全球開源峰會云原生分論壇即將啟幕

    隨著開源成為軟件技術創新和協同發展的重要模式,企業對云原生的認知日益強化,越來越多的企業應用云原生技術與產品解決實際問題,云原生進入落地爆發的關鍵期。IDC報告顯示,2023年企業云原生
    的頭像 發表于 06-01 14:48 ?315次閱讀
    探索<b class='flag-5'>云原生</b>技術發展與應用實踐,賦能企業數字化轉型 | 2023開放原子全球開源峰會<b class='flag-5'>云原生</b>分論壇即將啟幕

    探索云原生技術發展與應用實踐,賦能企業數字化轉型 | 2023開放原子全球開源峰會云原生分論壇即將啟幕

    隨著開源成為軟件技術創新和協同發展的重要模式,企業對云原生的認知日益強化,越來越多的企業應用云原生技術與產品解決實際問題,云原生進入落地爆發的關鍵期。IDC報告顯示,2023年企業云原生
    的頭像 發表于 05-30 01:40 ?374次閱讀
    探索<b class='flag-5'>云原生</b>技術發展與應用實踐,賦能企業數字化轉型 | 2023開放原子全球開源峰會<b class='flag-5'>云原生</b>分論壇即將啟幕

    使用可計算SSD加速云原生數據庫

    PolarDB是阿里云設計的云原生OLTP數據庫,每個數據庫實例由多個數據庫節點和存儲節點組成,節點間通過高速RDMA網絡連接在一起。為了保證原子性,每個POLARDB實例同時僅允許一
    的頭像 發表于 05-25 09:33 ?442次閱讀
    使用可計算SSD加速<b class='flag-5'>云原生</b><b class='flag-5'>數據庫</b>

    中國電信自研 RISC-V 云原生輕量級虛擬機 TeleVM 成功運行,內存開銷降低約 90%

    據 StarFive 官方微信號發布,中國電信研究院基于 CTyunOS 及歐拉開源生態,已成功研發業界首個支持 RISC-V 的云原生輕量級虛擬機 TeleVM,并在 RISC-V CPU IP
    發表于 05-05 09:46
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>