本文介紹了PolarDB-X的技術架構及優勢。
架構演進理念
當前,分布式領域有3大技術方向:Sharding技術,NewSQL原生分布式技術,云原生DB技術。每種分布式都有其獨特的優勢和特點。PolarDB-X的架構繼承了DRDS和X-DB技術的穩定性,結合了PolarDB的云原生技術,融入了NewSQL對于分布式數據一致性的能力,為用戶提供新的云原生+分布式的產品體驗。
整體架構
PolarDB-X的整體架構如下:
核心組件
元數據服務(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的協議和交互。
列存節點(Columnar), 主要提供持久化列存索引,實時消費分布式事務的binlog日志,基于對象存儲介質構建列存索引,能滿足實時更新的需求、以及結合計算節點可提供列存的快照一致性查詢能力。
核心模塊
如同大多數傳統單機關系型數據庫,PolarDB-X分為網絡層、SQL解析層、優化層、執行層、存儲層,其中優化層包含邏輯優化和物理優化,執行層包含單機兩階段執行、單機并行執行和多機并行執行,存儲層包含應用了多種傳統單機數據庫優化和執行技術。
生態工具
PolarDB-X高度兼容MySQL協議和生態,可支持MySQL開源生態中常用的MySQL驅動(JDBC/ODBC)、多語言兼容(Java/GO/C/C++/Python等)、數據導入導出工具、各種客戶端GUI等。PolarDB-X提供完整的生態工具方案。閉環的生態工具:
數據管理DMS,基于阿里巴巴集團十余年的數據庫服務平臺的云版本,提供免安裝、免運維、即開即用、多種數據庫類型與多種環境統一的Web數據庫管理終端,可以為企業用戶快速復制搭建與阿里集團同等安全、高效、規范的數據庫DevOps研發流程解決方案。
數據庫自治服務(Database Autonomy Service,簡稱DAS),一種基于機器學習和專家經驗實現數據庫自感知、自修復、自優化、自運維及自安全的云服務,幫助用戶消除數據庫管理的復雜性及人工操作引發的服務故障,有效保障數據庫服務的穩定、安全及高效。
數據傳輸服務(Data Transmission Service,簡稱DTS),支持關系型數據庫、NoSQL、大數據等數據源,集數據遷移、訂閱及實時同步功能于一體,能夠解決公共云、混合云場景下,遠距離、毫秒級異步數據傳輸難題。其底層基礎設施采用阿里雙11異地多活架構,為數千下游應用提供實時數據流。
數據庫備份(Database Backup,簡稱DBS),低成本、企業級的云原生備份平臺。它可以為多種環境的數據庫提供強有力的保護,包括本地數據中心、其他云廠商、公共云及混合云。
產品架構
PolarDB-X作為阿里云的成熟云產品,在產品化的配套能力上支持比較完整,包括白屏化的運維操作、多樣化的交付形態、完整的OpenAPI、配套的生態工具等。
PolarDB-X部署架構整體基于Kubernetes,運行在高性能的物理機,產品架構設計如下:
PolarDB-X實例由多個節點組成,產品購買以節點為單位,初次購買必須包含2個節點,后續擴容和縮容最小為1個節點。每個節點會有多種規格,比如4c16g、8c32g、16c64g等。
PolarDB-X根據資源隔離訴求的不同,可以分為:通用規格、獨享規格、獨占物理機規格。 比如通用規格,同一硬件資源下的不同PolarDB-X實例,會互相充分利用彼此空閑的計算資源(如CPU),通過復用計算資源享受規模紅利,性價比會更高。而獨享規格每個PolarDB-X實例會獨占所分配到的計算資源(如CPU),而不會與同一服務器上的其他集群共享資源,性能表現更加穩定。
PolarDB-X支持公有云、混合云的多樣化交付。在公有云,支持多地域、多可用區的交付,同時在網絡和安全層面,支持VPC、IP白名單、非對稱賬號密碼、TDE加密等方式,確保數據服務安全。 在混合云,支持基于DBStack輕量化輸出,可在用戶已有機器硬件上完成數據庫部署和運維。
架構優勢
高可用
經過阿里多年雙十一驗證的X-DB(X-Paxos共識協議能力),提供數據強一致,保證節點故障切換時RPO=0。另外支持多樣化的部署和容災能力,比如基于Paxos強同步的同城三機房、三地五中心,另外搭配binlog異步復制的兩地三中心、異地災備、異地多活等。尤其在異地長距離傳輸上,基于Batching & Pipelining 進行網絡優化來提升性能。
高兼容
PolarDB-X主要兼容MySQL,包括SQL、函數類型等,技術上引入全局時間授時服務,提供全局一致性的分布式事務能力,通過TSO+2PC提供數據庫完整的ACID能力,滿足分布式下的Read-Committed/Repeatable-Read的隔離級別。同時在分布式事務的基礎上,提供全局二級索引能力,通過事務多寫保證索引和主表數據強一致的同時,引入基于代價的CBO優化器實現索引選擇。除此以外,在元數據和生態對接層面,PolarDB-X基于Online DDL的技術提供了分布式下元數據的一致性。同時硬件層面,兼容主流國產操作系統和芯片認證,比如麒麟、鯤鵬、海光等。
另外在業界主流的分布式數據庫里,分布式下的redolog/binlog等數據庫變更日志其實一直被廠商所忽視,從關系數據庫的發展歷史來看,生態和標準對于市場規模化非常重要,PolarDB-X支持binlog日志服務,兼容和擁抱MySQL數據庫生態,用戶可以將PolarDB-X當做一個MySQL庫,采用標準的binlog dump協議獲取binlog日志。
高擴展
PolarDB-X基于Share-Nothing的架構支持水平擴展,同時支持數據庫在線擴縮容能力,在OLTP場景下可支持千萬級別的并發、以及PB級別的數據存儲規模,同樣在OLAP場景下,引入MPP并行查詢技術,擴展機器后查詢能力可線性提升,滿足TPC-H等的復雜報表查詢訴求。
HTAP
隨著移動互聯網和Iot設備的普及,數據會產生爆炸式的增長趨勢,傳統的OLTP和OLAP的解決方案是基于簡單的讀寫分離或者ETL模型,將在線庫的數據T+1的方式抽取到數據倉庫中進行計算,這種方案存在存儲成本高、實時性差、鏈路和維護成本高等缺陷。PolarDB-X設計中支持OLTP和OLAP的混合負載的能力,可以在一個實例里同時運行TPC-C和TPC-H的benchmark測試,保證AP的查詢不影響TP流量的穩定性。核心技術層面,也有所創新,比如我們會在計算層精確識別出TP和AP的流量,結合多副本的特性和多副本的一致性讀能力,智能將TP和AP路由到不同的副本上,同時在AP鏈路上默認開啟MPP并行查詢技術,從而在滿足隔離性的基礎上,線性提升AP的查詢能力。在存儲層上,我們也在完善計算下推能力,未來也會提供高性能列存引擎,實現行列混合的HTAP能力。
極速彈性
PolarDB-X結合PolarDB云原生的技術,可以基于PolarDB的共享存儲+RDMA網絡優化能力,提供秒級備份、極速彈性、以及存儲按需擴展的能力。基于共享存儲的基礎上,結合分布式的多點寫入能力,可以在不遷移數據的前提下提供秒級彈性的能力,給到用戶完全不一樣的彈性體驗。
開放生態
PolarDB-X全面擁抱和堅定MySQL的開源生態,做到代碼完全自主可控的同時滿足分布式MySQL的兼容性,架構做到簡單開放,只要具備一定MySQL背景的人員即可完成持續運維。除此以外,PolarDB-X和阿里云的數據庫生態有完整的閉環對接,支持如DTS/DBS/DMS等,可打通阿里云的整個大生態。