天天看點

雲原生分布式資料庫PolarDB技術深度解密

一、基礎設施和資料庫的演化趨勢

(一)資料庫演化趨勢

雲原生分布式資料庫PolarDB技術深度解密

資料庫可以分為三個時代,第一個時代是IT時代的商業資料庫時代,經典産品有Oracle和DB2,計算的基礎設施是IOE,主要客戶是大中型企業。

第二個時代是網際網路時代的開源資料庫,當時許多公司的資料庫主要是LAMP,目前行業的許多資料庫技術也是從這個時代積累而來。

第三個時代是萬物互聯時代的雲原生資料庫,有了共享雲存儲,做了存儲計算分離,以前高端的硬體慢慢在普适化。

無論是部署量還是規模上,開源生态正在超越商業資料庫的生态。目前不斷湧現的資料庫,通常都會相容開源生态或者自己開源。

資料庫的發展演進從最初在雲下,後來慢慢到了雲上,如今又有走向雲下的趨勢。我們發現,原來商業資料庫的一些東西又回來了,如很多大客戶喜歡的特性,是開源資料庫不具備,而商業資料庫所擅長的。如何在開源資料庫上做好企業級特性,我們在這上面做了大量的工作。

(二)基礎設施演化趨勢

雲原生分布式資料庫PolarDB技術深度解密
上圖為阿裡雲資料庫基礎設施演化趨勢,從最初的On-Premises機房,到如今的公共雲。為了更好地服務客戶,阿裡雲在公共雲的基礎上,衍生出了四種形态。

  • 本地雲

1)公共雲控制台

2)網絡互通

3)新購+利舊

4)彈性極強

從本質上看,公共雲像一個大機房,本地雲是一個小的機房,小機房和大機房體驗基本一緻。

  • 專有雲

1)獨立控制台(飛天标準底座)

2)網絡可隔離,可控性更強

3)官方+夥伴托管

4)100~1000台,彈性強

專有雲規模較大一些,和公共雲網絡是弱連接配接,通常情況下選擇這種形式的客戶對安全性保密性要求比較高。

  • 靈活專有雲

1)DBStack(飛天靈活底座)

2)網絡可隔離,産品可選配

4)10~100台,彈性适中

阿裡雲有一款産品叫DBStack(飛天靈活底座),可以脫離硬體存在。

比如客戶要做去O,去完之後剩下的硬體可以直接部署DBStack(飛天靈活底座),上面運作RDS,ADB,ADS等,是一套完整的資料解決方案。

  • 被內建

1)第三方內建(無底座)

2)嵌入客戶解決方案

3)軟體/軟硬一體

4)官方+夥伴托管

通過線下內建商的分發管道,我們可以将資料庫技術包裝在他們的産品中,直接對外分發。比如像超圖,其核心能力就是阿裡雲的産品PolarDB。

二、PolarDB企業級特性解讀

(一)PolarDB-X 2.0整體架構

PolarDB-X是PolarDB的分布式版,我們在2021年3月份對PolarDB-X進行架構更新到2.0版本,更新後的架構如下所示。

雲原生分布式資料庫PolarDB技術深度解密

PolarDB-X 2.0整體架構圖

PolarDB-X 2.0主要有以下特性:

1. 中繼資料服務(Global Meta Service,GMS)

  • 提供全局授時服務(TSO)
  • 維護Table/Schema、Statistic等Meta資訊
  • 維護賬号、權限等安全資訊

2. 存儲節點 (Date Node,DN)

  • 基于多數派Paxos共識協定的高可靠存儲
  • 處理分布式MVCC事務的可見性判斷

3. 計算節點(Compute Node,CN)

  • 基于無狀态的SQL引擎提供分布式路由和計算
  • 處理分布式事務的2PC協調、全局索引維護等

4. 日志節點(Change Data Capture,CDC)

  • 提供相容MySQL生态的binlog協定和資料格式
  • 提供相容MySQL Replication主從複制的互動

要特别強調的是,在一個分布式資料庫裡面Binlog分為許多份,日志節點可以和全局授時服務相結合,把分布式的多份Binlog合成一份,這對MySQL使用者非常友好。

(二)PolarDB-X 2.0強一緻MVCC事務

有了全局授時時鐘之後可以做全局強一緻MVCC事務。雖然它是一個分布式的資料庫,但是無論從性能、産品體驗還是生态工具上,使用體驗接近于一個單機MySQL,而且可以無限線性擴充。

雲原生分布式資料庫PolarDB技術深度解密
雲原生分布式資料庫PolarDB技術深度解密

(三)PolarDB-X 2.0 CDC

在2.0架構之前,很多客戶抱怨在雲上用PolarDB時,如果要把日志同步到線下機房做資料分析,無法搭起鍊路。

2.0架構上線之後這個問題可以通過CDC特性解決。隻要一條網絡鍊路,就能把資料全部同步,并且我們做了一個聚合,保證全局事務的順序。

雲原生分布式資料庫PolarDB技術深度解密

CDC特性如下:

1. 全局 binlog

  • 相容事務 (分布式事務全局排序)

例:基于TraceId、TSO資訊對Binlog全局排序

  • 相容分布式DDL

例:可支援DDL同步到下遊,比如ADB

  • 相容分布式擴縮容

例:屏蔽内部分片遷移、廣播表、索引等資料幹擾

2. 主備 Replication

  • 相容MySQL生态的主備複制

例:MySQL作為PolarDB-X的備庫,支援資料回流能力

  • 相容DTS的上下遊生态

例:打通Oracle/DB2/PolarDB/ADB等資料庫生态

如上圖所示,PolarDB-X的兩個叢集可以互相做主備,MySQL和PolarDB-X也可以做主備切換,具備很好的生态相容性。

(四)PolarDB HTAP

在過去的這段時間,PolarDB在分析能力上也做了很大的提升,下方是PolarDB單機并行的架構圖。

雲原生分布式資料庫PolarDB技術深度解密

并行查詢特性如下:

  1. 通過分割B+Tree來配置設定任務,每個線程(Worker)關注一部分分區。
  2. 通常上層Server層計算的線程數遠遠小于分區數,使得每個線程可以得到的資料計算分區很多。
  3. “Fast”的worker線程可以處理更多的較小資料分區,“slow”的線程處理較少的但是比較大的資料分區,進而達到整體計算無差别。
  4. 每個工作線程可以自動去擷取下一個要處理的資料分區(Round Robin模式)。

上方講的是單機的SMP,我們還在多機上并行執行,如下圖所示。

雲原生分布式資料庫PolarDB技術深度解密

目前單機的加速效果将近15倍,如果上方的MTP這個架構出來,整體還會有一個更大的提升。

雲原生分布式資料庫PolarDB技術深度解密

TPCH 加速效果顯著

  • TPCH 100G 32core/512G (BP 170 GB) (32 并發 vs 不開并發);
  • TPCH 100% SQL 可被加速,73%加速比超過8倍,總加速近15倍。

(五)PolarDB Global Database

雲原生分布式資料庫PolarDB技術深度解密

如上圖所示,PolarDB Global Database分為三個地方,張北、香港和美國矽谷。

PolarDB Global Database四大特性:

  • 全球部署(Global Deployment)

資料跨地域同步,提供全球跨地域的容災能力。RPO=0  SLA為99.99%

  • 就近讀加速(Accelerate by Reading the Nearest Node)

讀操作就近讀取資料,适合不同地域讀多寫少的場景。

  • 多通道實體複制(Multi-Channel Physical Replication)

提供資料跨地域的高速同步,大壓力場景下全球同步延遲確定在2秒以内。

  • 多點跨地域寫(Write to Multi Zones and Regions)

提供多點跨地域寫功能,提供業務的多地部署能力。

傳統的MySQL部署三地模式一般用Binlog同步,Binlong存在的問題是遇到大事務容易卡住。PolarDB用Redo做實體複制,而且它是多通道的,可以做并行複制與延遲同步。延遲同步的好處是存在更改餘地,比如和美國矽谷做近實時同步,和香港做半天延遲同步,防止删庫等誤操作,安全系數非常高。

(六)PolarDB 熱備

雲原生分布式資料庫PolarDB技術深度解密

PolarDB還有一個非常好的特性,那就是PolarDB熱備。

HRO特性:

1)記憶體和Redo實時同步;

2)主備切換秒級;

3)升降級切換不可用時間控制在5秒以下;

4)通過voting disk 進行主動故障切換。

Oracle的Rock主要是做高可用,一般超過兩個節點的使用者很少,四個節點更是鳳毛麟角。通常情況下,使用者的兩個節點一個做寫的負載均衡,還有一個做高可用,這在電信場景裡面非常常見。

PolarDB的為寫節點提供熱備,這個熱備會同步Buffer Pool,然後會把記憶體和Redo實時同步,在發生切換時,可以在極短的時間完成,保證業務穩定運作。

(七)PolarDB 多租戶

PolarDB還有一個特性是多租戶多寫。

多寫的意思是每個寫節點負責不同的表,比如在某個SaaS場景中,一個資料庫服務100個使用者,這100個使用者的資料互相隔離,每個使用者可讀可寫,每個寫節點之間的資料互不幹擾,這種場景用一個PolarDB就可以支撐。

雲原生分布式資料庫PolarDB技術深度解密
  • 多租戶特性

1)多租戶多寫(multi-tenant multi-master);2)支援128個RW;3)支援non-conflict multi-master write;4)Partition/table/schema binds to RW;5)庫表寫入點秒級切換。

(八)PolarDB 混合雲-DBStack

雲原生分布式資料庫PolarDB技術深度解密

阿裡雲有個混合雲叫DBStack,如上圖所示,它既支援X86也支援ARM,能做國産化全加密一體機。

雲原生分布式資料庫PolarDB技術深度解密

上圖是運作在國産化全加密一體機上的管控平台,它和公有雲的體驗幾乎是一緻的,但是更小更清亮。

三、Roadmap

存儲計算分離是這幾年資料庫發展中最重要的一個變化。近年來成功的商業資料庫,如Snowflake、Oracle、RDS等,全部是存儲計算分離的。

未來的PolarDB會做Share Nothing & Everything 一體化,架構圖如下所示。

雲原生分布式資料庫PolarDB技術深度解密

PolarDB Share Nothing & Everything 一體化架構優勢:

  1. Leverage PolarDB已有基礎設施,存儲、管控、監控、審計等功能共享;
  2. Share Nothing基于存儲計算分離架構,無限擴充,并且無需資料遷移,并可徹底消除傳統分布式Data Skew問題;
  3. Share Everything場景寫瓶頸大幅緩解,多節點可寫;
  4. 無縫更新,可由單表直接轉化成分布式表,一鍵操作即可完成分布式改造(alter table to partition_table by hash_range ***);
  5. 兩種場景都有極強高可用性;
  6. 相容性和擴充性都能完美支援,在兼顧legacy業務的同時幫助客戶完成數字化轉型更新。