分散式資料庫架構路線大揭秘

来源:https://www.cnblogs.com/huaweiyun/archive/2023/03/15/17217925.html
-Advertisement-
Play Games

摘要:這些年大家都在談分散式資料庫,各大企業也紛紛開始做資料庫的分散式改造。那麼所謂的分散式資料庫是什麼?採用什麼架構,優勢在哪?為什麼越來越多企業選擇它?我們不妨一起來深入瞭解下。 本文分享自華為雲社區《GaussDB分散式架構大揭秘》,作者:華為雲資料庫首席架構師 馮柯。 這些年大家都在談分散式 ...


摘要:這些年大家都在談分散式資料庫,各大企業也紛紛開始做資料庫的分散式改造。那麼所謂的分散式資料庫是什麼?採用什麼架構,優勢在哪?為什麼越來越多企業選擇它?我們不妨一起來深入瞭解下。

本文分享自華為雲社區《GaussDB分散式架構大揭秘》,作者:華為雲資料庫首席架構師 馮柯。

這些年大家都在談分散式資料庫,各大企業也紛紛開始做資料庫的分散式改造。那麼所謂的分散式資料庫是什麼?採用什麼架構,優勢在哪?為什麼越來越多企業選擇它?我們不妨一起來深入瞭解下。

分散式資料庫是如何演進的?

回顧分散式資料庫的演進歷程,我們可以大致概括為三個發展階段:應用分庫分表做垂直拆分、分散式中間件、分散式資料庫。每個階段都呈現出了不同的特點:

應用分庫分表做垂直拆分本質上是應用側的改造,和資料庫本身沒有太大關係。

分散式中間件階段,分散式資料庫本質上是由兩部分組成的,上層是分散式中間件,底層再搭載開源MySQL或PG單機內核。這種方式因為使用了比較成熟的內核,所以生態友好、成本較低,比較容易實現,不過缺點也顯而易見,比如功能降級、分散式事務處理能力較差,最重要的是,因為使用的是開源產品的內核,資料庫會始終受制於開源代碼修改、專利、發行方式等很多方面的風險,這種形式顯然已經無法滿足當前國內金融、政企客戶的需求。

到了分散式資料庫階段,主要呈現出兩種形態。一種是基於分散式存儲實現的分散式資料庫,這種形態先有分散式存儲,再疊加資料庫能力,我們習慣把它稱為“分散式+”。

這種架構在分散式比較擅長的領域,更容易形成它的技術競爭力。什麼是分散式擅長的領域呢?比如說像擴展性、及時的擴展性,大規模運維的靈活性,比如擴縮容。在這方面,分散式+的天花板會更少,因為它一開始就是按照分散式存儲來設計的。這裡面有意思的一點是,這跟架構本身沒有太大關係,我們看到,今年所有的在國內的分散式+的廠商都有一個共同特點,就是在整個存儲引擎的設計上跟今天我們認知的,不管是MySQL還是PG,都不一樣。它不是一個類似於B-TREE的這樣一種結構,而通常是基於LSM-Tree存儲引擎,數據寫記憶體,然後批量寫持久化的這樣一種方式。這是因為這些分散式+的廠商,他們的所有技術體系都來源於Google,而Google最早做的第一款產品就是分散式存儲,叫Big Table,Big Table本身就是基於LSM-Tree的,這是一個歷史傳統。這就是為什麼LSM-Tree跟分散式+本身沒有必然關係,但是今天我們看到國內所有走分散式+路線的廠商,都使用的是LSM-Tree。

LSM-Tree有它的優點,比如主備之間的異構性有天生的優勢,但也有一個非常大的缺點,就是對於場景的普遍適用性。它比較適合於寫密集的場景,有大量寫入插入,比如我的訂單、流水化的訂單,但不太適合狀態類的業務,有大量的讀和寫,要去更新狀態。而且它把隨機寫轉為順序寫,在做compaction也就是記憶體和持久化存儲數據合併時也會有空間放大和性能抖動問題,所以它整個場景的適用性比B-Tree要低。

這個階段的另外一種形態,就是基於分散式資料庫理論實現的原生分散式資料庫,與“分散式+”正好相反,它是先有TP單機資料庫引擎,再疊加分散式能力,我們一般稱之為“資料庫+”,華為雲GaussDB分散式資料庫就是這種形態的典型代表。

這種形態不存在空間放大和性能抖動的問題,而且更容易在資料庫本身所擅長的領域發揮優勢,比如說性能、複雜SQL處理能力、企業級能力。同時,因為金融政企客戶在使用分散式技術之前,往往已經有分庫分表、使用分散式中間件產品的經驗,所以對這種架構的認可度更高,學習成本也相對較低,因此這種形態也是國內當前被採用較多的一種。

資料庫+與分散式中間件有什麼區別?

資料庫+和分散式中間件,這兩種形式從架構上來看是非常相似的,分散式中間件上面是一個代理層,下麵有很多單機資料庫。我們可以這麼來看,就像是天平的兩端,一端在0,一端在1,裡面有三個非常大的差別。

如何處理分散式事務,提供外部一致性?

分散式中間件通常是基於XA來實現數據一致性,但XA本身是不能實現外部一致性的,一般只支持最終一致性,而資料庫+的分散式資料庫可以基於內置全局授時來實現全局一致性讀,從而支持外部一致性。

如何處理分散式SQL?

分散式中間件是把資料庫作為黑盒,數據節點之間只能通過SQL的形式傳遞,是標準的SQL。

分散式中間件處理分散式SQL

而資料庫+的代理層和數據節點是一個資料庫的不同部分,互相之間可以傳遞更加內部的東西,比如計劃樹,不同的數據節點之間也不需要代理節點,可以直接傳遞。

資料庫+處理分散式SQL

如何實現分散式一致性?

分散式中間件通常是基於傳統主備架構,使用半同步、最大保護等模型來實現分散式一致性,不過這種形式下一致性和高可用是沒有辦法同時兼顧到的,而資料庫+是基於原生分散式共識而打造,比如Quorum、Paxos,Raft,可以實現底層無損容災,同時滿足一致性和高可用性。

對於資料庫廠商而言,如果以上三個問題全都做到了,那我們可以說它是分散式資料庫,如果三者都無法做到,我們一般說它是分散式中間件,如果說只做到了其中的一部分,那就很難下定義究竟是分散式中間件還是分散式資料庫,但可以從這三方面去衡量它的天平更傾向哪一邊。

資料庫+更適合金融政企的未來

出現三種不同的技術路線,本質上是團隊的人員能力模型、特質和最初要解決的問題決定了最終走向哪條路線。技術沒有絕對的好與壞,只有是不是合適。今天我們看到很多金融政企客戶都在提分散式資料庫,從0到1的突破可能是由於政策性的突破,因為國產化,但從1到N的突破,是需要產品本身競爭力的突破。我們發現,在這個階段,客戶不再關心分散式,客戶關心什麼?關心的是資料庫本身。不管叫什麼技術,能不能滿足需求,能不能提供足夠的性能、足夠的擴展性、足夠的高可用,能不能支撐複雜的業務場景,我們的觀點是,最終這個行業會回歸到他的本源,分散式資料庫的本源是資料庫,不管叫分散式+還是資料庫+,最終給客戶的核心價值仍然是資料庫。因此,資料庫+更能匹配金融政企未來長期的發展。

GaussDB融合了華為在資料庫領域15年多的戰略投入,是基於分散式理論打造的行業領先的國產原生分散式關係型資料庫,採用行業先進的全並行分散式架構,有應對海量併發事務處理與複雜查詢混合負載的能力;還有同城跨AZ、兩地三中心、數據0丟失等多種高可用方案,出色的金融級高可用商用能力全方面滿足金融級監管要求。

現在,GaussDB已經在金融行業積累了非常豐富的實踐經驗,歷經華為終端雲、華為流程IT、全球TOP銀行、運營商等各種嚴苛場景的考驗,不僅成功助力郵儲銀行新一代個人業務分散式核心系統全面投產上線,為全行6.5億個人客戶、4萬多個網點提供日均20億筆、峰值6.7萬筆/秒的交易處理能力,還通過一系列技術創新,輕鬆支撐華為流程IT ERP系統5倍業務壓力下性能保持線性,實現業務效率的10倍提升,是企業數字化轉型、核心數據上雲、分散式改造的信賴之選。

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近公司增加了一些UVC協議的攝像頭介面,下麵是一些資料整理(感謝項目組內志宇同學的耐心指導) 攝像頭插件為AForge,所以IKsControl介面對象AForge.FilterInfo。(IKsControl介面:提供了控制 KS 過濾器或 KS 引腳的用戶模式方法。參考:https://lea ...
  • 代碼編譯器是將一段源代碼(C#或VisualBasic)編譯成程式集,它的工作方式與 Emit 不一樣。從 .net standard 開始,代碼編譯器就採用了 Roslyn 來編譯源代碼,前幾篇文章里提到的 SourceGenerator 也正是基於此。 ...
  • 很多時候,在linux我們源碼編譯庫代碼時候會自定義安裝路徑,這使得man查詢的時候無法找到庫文檔,預設的man搜索路徑可以使用下麵命令查看: $ man -w /usr/local/share/man:/usr/share/man 我們可以通過修改man的命令搜索配置文件/etc/man_db.c ...
  • Linux進程間通信通常使用的方式有很多種,其中比較常用的包括管道(pipe)和 FIFO(命名管道)。本文將介紹這兩種通信方式的基本概念,並用C語言編寫示例代碼,來說明如何在兩個進程之間使用這些IPC機制進行通信。 管道(pipe) 管道是一種半雙工的通信方式,用於父進程和子進程之間的通信。在 L ...
  • 【報錯信息】 ERROR: Support for FileParameters in the input step is disabled and will be removed in a future release. Details on how to migrate your pipelin ...
  • iptables是一個Linux內核中的包過濾工具,可以用來過濾、轉發、修改、控制網路流量等。如果想要將主機的所有流量轉發至其他機器,可以使用iptables進行配置。 以下是具體步驟: 1. 首先需要在其他機器上開啟轉發功能,可以使用以下命令開啟: echo 1 > /proc/sys/net/i ...
  • 規則: 1、兩個參數至少有一個是 NULL 時,比較的結果也是 NULL,例外是使用 <=> 對兩個 NULL 做比較時會返回 1,這兩種情況都不需要做類型轉換2、兩個參數都是字元串,會按照字元串來比較,不做類型轉換3、兩個參數都是整數,按照整數來比較,不做類型轉換4、十六進位的值和非數字做比較時, ...
  • 日前,“2022年中國開源創新大賽”初賽晉級名單公佈,易用、穩定、高效的批流統一的數據集成框架 ChunJun 順利晉級決賽,並榮獲“2022年中國開源創新大賽優秀開源項目/社區”獎項。 感謝組委會專家的認可,ChunJun也將繼續秉承技術初心,砥礪前行,不遺餘力地助力國內開源發展,為更多的開發者傳 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...