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