雲原生分布式數據庫PolarDB技術深度解密


一、基礎設施和數據庫的演化趨勢

 

(一)數據庫演化趨勢

 

 

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

 

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

 

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

 

無論是部署量還是規模上,開源生態正在超越商業數據庫的生態。目前不斷涌現的數據庫,通常都會兼容開源生態或者自己開源。

 

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

 

(二)基礎設施演化趨勢

 

 

上圖為阿里雲數據庫基礎設施演化趨勢,從最初的On-Premises機房,到如今的公共雲。為了更好地服務客戶,阿里雲在公共雲的基礎上,衍生出了四種形態。

 

  • 本地雲

1)公共雲控制台

2)網絡互通

3)新購+利舊

4)彈性極強

 

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

 

  • 專有雲

1)獨立控制台(飛天標准底座)

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

3)官方+伙伴托管

4)100~1000台,彈性強

 

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

 

  • 敏捷專有雲

1)DBStack(飛天敏捷底座)

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

3)官方+伙伴托管

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-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-X 2.0 CDC

 

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

 

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

 

 

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單機並行的架構圖。

 

 

並行查詢特性如下:

  1. 通過分割B+Tree來分配任務,每個線程(Worker)關注一部分分區。

  2. 通常上層Server層計算的線程數遠遠小於分區數,使得每個線程可以得到的數據計算分區很多。

  3. “Fast”的worker線程可以處理更多的較小數據分區,“slow”的線程處理較少的但是比較大的數據分區,從而達到整體計算無差別。

  4. 每個工作線程可以自動去獲取下一個要處理的數據分區(Round Robin模式)。

 

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

 

 

目前QQ號碼買賣地圖單機的加速效果將近15倍,如果上方的MTP這個架構出來,整體還會有一個更大的提升。

 

TPCH 加速效果顯著

 

  • TPCH 100G 32core/512G (BP 170 GB) (32 並發 vs 不開並發);

  • TPCH 100% SQL 可被加速,73%加速比超過8倍,總加速近15倍。

 

(五)PolarDB Global Database

 

 

如上圖所示,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熱備。

 

HRO特性:

1)內存和Redo實時同步;

2)主備切換秒級;

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

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

 

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

 

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

 

(七)PolarDB 多租戶

 

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

 

多寫的意思是每個寫節點負責不同的表,比如在某個SaaS場景中,一個數據庫服務100個用戶,這100個用戶的數據互相隔離,每個用戶可讀可寫,每個寫節點之間的數據互不干擾,這種場景用一個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

 

 

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

 

 

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

 

 

三、Roadmap

 

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

 

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

 

 

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業務的同時幫助客戶完成數字化轉型升級。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM