PolarDB有三種引擎,其中MySQL版和PostgreSQL版的PolarDB有著相同的產品架構:Share Storage,計算存儲分離,PolarDB分布式版使用的是另外一種產品架構:Share Nothing,分布式。
PolarDB分布式版采用了基于計算存儲分離的Share Nothing系統架構,該架構使用戶可以根據業務需要進行分層容量規劃,實現大規模擴展。
核心組件
元數據服務(Global Meta Service,GMS),主要提供分布式的元數據,提供全局授時服務(TSO),維護Table/Schema、Statistic等Meta信息、維護賬號、權限等安全信息。
計算節點(Compute Node,CN),主要提供分布式SQL引擎,包含核心的優化器和執行器。基于無狀態的SQL引擎提供分布式路由和計算,解決分布式事務2PC協調、分布式DDL執行、全局索引維護等。
存儲節點 (Data Node,DN),主要提供數據存儲引擎,基于多數派Paxos共識協議提供高可靠存儲、分布式事務的MVCC多版本存儲,另外提供計算下推能力滿足分布式的計算下推要求(比如Project/Filter/Join/Agg等下推計算),可支持本地盤和共享存儲。
日志節點(Change Data Capture,CDC),主要提供兼容MySQL生態的主備復制協議,兼容Binlog協議和數據格式、支持主備復制Replication的協議和交互。
架構優勢
高可用:經過阿里巴巴多年雙十一驗證的X-DB(X-Paxos共識協議能力),提供數據強一致,保證節點故障切換時RPO=0。另外支持多樣化的部署和容災能力,比如基于Paxos強同步的同城三機房、三地五中心,另外搭配Binlog異步復制的兩地三中心、異地災備、異地多活等。尤其在異地長距離傳輸上,基于Batching&Pipelining進行網絡優化來提升性能。
高兼容:PolarDB分布式版主要兼容MySQL,包括SQL、函數類型等,技術上引入全局時間授時服務,提供全局一致性的分布式事務能力,通過TSO+2PC提供數據庫完整的ACID能力,滿足分布式下的Read-Committed/Repeatable-Read的隔離級別。同時在分布式事務的基礎上,提供全局二級索引能力,通過事務多寫保證索引和主表數據強一致的同時,引入基于代價的CBO優化器實現索引選擇。除此以外,在元數據和生態對接層面,PolarDB分布式版基于Online DDL的技術提供了分布式下元數據的一致性。同時硬件層面,兼容主流國產操作系統和芯片認證,比如麒麟、鯤鵬、海光等。另外在業界主流的分布式數據庫里,分布式下的Redolog/Binlog等數據庫變更日志其實一直被廠商所忽視,從關系數據庫的發展歷史來看,生態和標準對于市場規;浅V匾,PolarDB分布式版支持Binlog日志服務,兼容和擁抱MySQL數據庫生態,可以將PolarDB分布式版當做一個MySQL庫,采用標準的Binlog dump協議獲取Binlog日志。
高擴展:PolarDB分布式版基于Share Nothing的架構支持水平擴展,同時支持數據庫在線擴縮容能力,在OLTP場景下可支持千萬級別的并發、以及PB級別的數據存儲規模,同樣在OLAP場景下,引入MPP并行查詢技術,擴展機器后查詢能力可線性提升,滿足TPC-H等的復雜報表查詢訴求。
HTAP:隨著移動互聯網和IoT設備的普及,數據會產生爆炸式的增長趨勢,傳統的OLTP和OLAP的解決方案是基于簡單的讀寫分離或者ETL模型,將在線庫的數據以T+1的方式抽取到數據倉庫中進行計算,這種方案存在存儲成本高、實時性差、鏈路和維護成本高等缺陷。PolarDB分布式版設計中支持OLTP和OLAP的混合負載的能力,可以在一個實例里同時運行TPC-C和TPC-H的benchmark測試,保證AP的查詢不影響TP流量的穩定性。核心技術層面也有所創新,比如在計算層精確識別出TP和AP的流量,結合多副本的特性和多副本的一致性讀能力,將TP和AP智能路由到不同的副本上,同時在AP鏈路上默認開啟MPP并行查詢技術,從而在滿足隔離性的基礎上,線性提升AP的查詢能力。