整體架構
PolarDB-X的整體架構如下:
核心元件
- 中繼資料服務(Global Meta Service,GMS),主要提供分布式的中繼資料,提供全局授時服務(TSO)、維護Table/Schema、Statistic等Meta資訊、維護賬号、權限等安全資訊。
- 計算節點(Compute Node,CN),主要提供分布式SQL引擎,包含核心的優化器和執行器。基于無狀态的SQL引擎提供分布式路由和計算,解決分布式事務2PC協調、分布式DDL執行、全局索引維護等。
- 存儲節點 (Date Node,DN),主要提供資料存儲引擎,基于多數派Paxos共識協定提供高可靠存儲、分布式事務的MVCC多版本存儲,另外提供計算下推能力滿足分布式的計算下推要求(比如Project/Filter/Join/Agg等下推計算),可支援本地盤和共享存儲。
- 日志節點(Change Data Capture,CDC),主要提供相容MySQL生态的主備複制協定,相容Binlog協定和資料格式、支援主備複制Replication的協定和互動。
核心子產品
如同大多數傳統單機關系型資料庫,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輕量化輸出,可在使用者已有機器硬體上完成資料庫部署和運維。
架構優勢
高可用
經過阿裡多年雙11驗證的X-DB(X-Paxos共識協定能力),提供資料強一緻,保證節點故障切換時RPO=0。另外支援多樣化的部署和容災能力,比如基于Paxos強同步的同城三機房、三地五中心,另外搭配binlog異步複制的兩地三中心、異地災備、異地多活等。尤其在異地長距離傳輸上,基于Batching & Pipelining 進行網絡優化來提升性能。
高相容
PolarDB-X主要相容MySQL,包括SQL、函數類型等,技術上引入全局時間授時服務,提供全局一緻性的分布式事務能力,通過TSO+2PC提供資料庫完整的ACID能力,滿足分布式下的Read-Commited/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等,可打通阿裡雲的整個大生态。