9月16日,Distributed Cloud|2021全球分布式云大會·上海站隆重召開。在全球分布式云大會不懈布道下,云計算行業(yè)對分布式云的關注度愈發(fā)高漲,以全球分布式云聯(lián)盟成員為代表,涌現(xiàn)出了大量分布式云技術和實踐成果,為分布式云計算發(fā)展夯實了基礎。
2021全球分布式云大會為分布式云計算發(fā)展再添強大推力,本次大會共設有分布式云主題報告會、邊緣云論壇、云原生專題論壇、分布式數(shù)據(jù)庫論壇四大論壇,圍繞分布式云、邊緣算力、云原生、分布式架構等技術與實踐展開。全球分布式云聯(lián)盟聯(lián)合阿里云、騰訊云、Google Cloud、中興通訊、京東云、安邁云、網(wǎng)心科技等國內(nèi)外分布式云頂尖技術服務商,共話分布式云創(chuàng)新新趨勢,共謀云計算變革新未來,共享分布式云計算新紅利!
在9月16日下午召開的分布式數(shù)據(jù)庫論壇上,阿里云 數(shù)據(jù)庫技術專家 王歡明發(fā)表了題為《云原生分布式數(shù)據(jù)庫 PolarDB-X 的技術演進》的主題演講。
PolarDB-X是什么?
PolarDB-X最早起源于阿里集團,阿里研發(fā)了TDDL分庫分表中間件。2014年阿里集團開始全面上云,將TDDL升級成DRDS分布式數(shù)據(jù)庫服務,實現(xiàn)了在線擴縮容以及數(shù)據(jù)拆分等能力。2018后,國內(nèi)分布式數(shù)據(jù)庫技術進入一個百家爭鳴的局面,阿里在這方面也做了很多探索,經(jīng)過對X-DB、PolarDB等技術整合,誕生了PolarDB-X。
PolarDB-X結合了harding On MySQL、NewSQL、Cloud Native DB幾種數(shù)據(jù)庫理念的精華,具有云原生分布式的特性,底層使用了PolarDB云原生數(shù)據(jù)庫的技術,上層用到了很多分布式技術。
PolarDB-X 技術架構
PolarDB-X采用經(jīng)典的兩層架構,分計算層和存儲層。計算層用的PolarDB-X,可以獨立水平擴展、擴縮容,各種能力完備。在整個系統(tǒng)里,一條SQL經(jīng)過自研的解析器、優(yōu)化器,得到分布式的執(zhí)行計劃;然后發(fā)送到存儲節(jié)點執(zhí)行;在中間的網(wǎng)絡傳輸層,使用了定制的RPC協(xié)議,效率遠高于傳統(tǒng)的JDBC協(xié)議;之后執(zhí)行計劃會發(fā)送到PolarDB-X的執(zhí)行引擎里去做具體的計算。
PolarDB-X目前具有高可用、高可擴展、極致彈性,高兼容、HTAP、開放生態(tài),在MySQL生態(tài)里是一款具有競爭力的產(chǎn)品。
PolarDB-X的幾個關鍵技術
分布式事務如何實現(xiàn)ACID?
如果分布式數(shù)據(jù)庫要支持金融轉(zhuǎn)賬場景,就必須支持分布式事務,才能保證一致性,不會發(fā)生數(shù)據(jù)丟失等這些異常??v觀業(yè)界技術,可以歸成幾類,第一類是基于MySQL的XA技術,實現(xiàn)兩階段提交缺點是不能保證全局一致,不能保證全局快照。第二類是TSO技術做全局分配,實現(xiàn)給全局的事務定序,從而實現(xiàn)分布式快照第三是HLC技術,也存在一定的局限性。第四是在PG里比較多使用的GTM技術。這幾項技術目前沒有一個能完美解決所有場景,都需要在性能、可用性、擴展性方面去做權衡。PolarDB-X認為TSO比較契合公有云以及混合云的技術。
PolarDB-X基于TSO技術實現(xiàn)全局分布式事務。第一個問題是如何去做全局時鐘,也就是TSO。TSO會給分布式事務做定序,按照時間戳的順序去做排序。第二個問題是如何基于MySQL的InnoDB做分布式事務。PolarDB-X對InnoDB的事務系統(tǒng)做了深度改造,從原本的ReadView的事務機制改造成基于時間戳的事務系統(tǒng)。有了基于時間戳的事務系統(tǒng)之后,結合TSO技術,就可以實現(xiàn)全局一致的分布式事務。除此之外,事務里還有很多的技術難點,如何處理長寫事務以及做全局的垃圾回收。
用TSO技術有一個必須要解決的問題——通常會增加幾十微秒到幾百微秒的RT。因此,PolarDB-X實現(xiàn)了一階段提交、2PC的異步提交等優(yōu)化,能夠盡量克服TSO帶來的性能損失。
實現(xiàn)上述性能優(yōu)化之后,經(jīng)過與業(yè)界產(chǎn)品在sysbench和TPCC等測試集做了性能對比,PolarDB-X的性能相對來說有競爭力。
透明分布式如何優(yōu)化易用性?
透明分布式主要解決的問題是分布式數(shù)據(jù)庫的使用門檻。很多分布式數(shù)據(jù)庫技術聽起來很,但用戶卻認為很難用。比如用戶常常困擾,為什么某些場景的性能會不如一個單機系統(tǒng),或者某些功能不具備,或者問題難以排查?從我們對服務用戶的經(jīng)驗來看,用戶在使用分布式數(shù)據(jù)庫過程中通常會遇到幾個門檻,即如何選擇拆分鍵、如何優(yōu)化分布式事務、如何優(yōu)化慢查詢。因此,我們研發(fā)了透明分布式的項目,試圖降低用戶使用分布式數(shù)據(jù)庫的門檻。
第一,如何做Sharding。每個產(chǎn)品都有不同的解決方案,PolarDB-X結合了MySQL分區(qū)表語法,從語法上完全兼容MySQL列表,使用二級分區(qū)覆蓋到用戶的各種Workload。這背后是基于一致性哈希算法,實現(xiàn)分區(qū)級的動態(tài)分裂,大大降低擴縮容的代價。以Range分區(qū)為例,一開始可能是4千到5千這個數(shù)據(jù)范圍,當這個Range的數(shù)據(jù)變多之后,它可以分裂成多個Range,遷移到多個機器上,避免數(shù)據(jù)過于集中。將這些技術融入PolarDB-X中,能夠有效解決熱點數(shù)據(jù)等問題。
第二,PolarDB-X做的跟其他產(chǎn)品有差異化的技術,是TableGroup。它解決的問題是Join下推,這是阿里的業(yè)務場景中非常常見。如果不能做Join的下推,做分布式Join的性能會比較差。在PolarDB-X中,多個表按一個分區(qū)方式做Partition,它們就會放置于同一個TableGroup,因此就可以實現(xiàn)Join下推。當然對應的,一個TableGroup中的分區(qū)分裂、遷移,都需要以PartitionGroup為單位了。
第三,擴縮容離不開的一個問題,就是Online DDL。例如PolarDB-X支持單表、拆分表、分區(qū)表,當用戶對表類型進行修改,把分區(qū)鍵從買家ID改成賣家ID的時候,背后就是用Online DDL的技術。PolarDB-X支持多種的Online DDL,包括拆分鍵修改、創(chuàng)建索引、加減列等等,這些操作都可以在線上直接執(zhí)行,對用戶業(yè)務影響非常小。
PolarDB-X的透明分布式提供了分區(qū)表、全局索引、Online DDL等技術,使得用戶的業(yè)務能夠以很低的成本接入到分布式數(shù)據(jù)庫中,并且后續(xù)隨著業(yè)務的發(fā)展,數(shù)據(jù)庫還可以做通過Scale-Up或者Scale-Out的方式提高性能。
HTAP技術如何提高分析能力
所謂HTAP,在PolarDB-X的理解中,即能否在線上數(shù)據(jù)庫中執(zhí)行復雜查詢。它的價值有兩方面,一方面是能夠降低用戶的使用成本、運維成本,另一方面,就是實時的分析,能夠從實時數(shù)據(jù)獲得實時洞察。做HTAP面對的技術挑戰(zhàn)有幾方面,分別是負載隔離、計算能力、存儲能力。
對應到PolarDB-X的架構,會通過只讀節(jié)點做負載隔離,簡單查詢發(fā)到讀寫節(jié)點,復雜查詢發(fā)到只讀節(jié)點執(zhí)行,因此這兩種負載能夠得到較好的隔離,不會相互影響。這中間的智能路由是通過優(yōu)化器的代價估算去實現(xiàn),代價高的判定為AP查詢,代價低的判定TP查詢。除此之外,這種架構還需要解決的一個問題是一致性快照,PolarDB-X通過TSO技術,實現(xiàn)了只讀節(jié)點的分布式事務。
接下來的問題是如何提升計算能力和存儲能力。
提高計算能力主要通過MPP并行計算、向量化計算等方式。此前PolarDB-X主要面向TP場景,做算子下推,以及通過分區(qū)裁剪盡量查詢更少的分片,優(yōu)化TP場景的性能。而面對AP場景,需要的技術則很不一樣。具體來說,PolarDB-X提供了原生的MPP支持,能夠充分發(fā)揮多個節(jié)點的資源進行計算。為此,優(yōu)化器里中增加了MPP優(yōu)化階段,在單機執(zhí)行計劃之后,中間加入Exchange,變成分布式的執(zhí)行計劃,實現(xiàn)多機并行。具體到執(zhí)行器,也會有兩種執(zhí)行模式,一種是本地單機執(zhí)行,另一種是MPP分布式執(zhí)行。
具體來看,在MPP并行計算中,PolarDB-X做了兩層的并行,第一層是節(jié)點之間的并行,第二層是計算節(jié)點內(nèi)部的運行。分為兩層的好處在于能夠減少調(diào)度開銷,減少數(shù)據(jù)傳輸?shù)拈_銷。除此之外,PolarDB-X還做了內(nèi)存池化、流水線化、向量化等精細化的技術,通過向量化提高執(zhí)行器的執(zhí)行效率,通過流水線化增加并行度減少數(shù)據(jù)物化。這些技術使得PolarDB-X在執(zhí)行復雜SQL查詢時具有較高的效率。
除此之外,就是提高存儲方面的性能。從技術角度看,單獨做一個行存、列存都不難,難的是做一個能夠?qū)崟r更新的列存。PolarDB-X采用的方案是在寫入節(jié)點用行存,在只讀節(jié)點用列存,中間通過redo做異步復制,實現(xiàn)列存的實時更新。基于這樣的架構,就可以實現(xiàn)行列混存,行存承擔高并發(fā)寫入,列存承擔復雜查詢。結合MPP、行列混存、向量化等技術,PolarDB-X實現(xiàn)了TPC-H場景的510倍的性能提升。這一成果也即將在公有云上線,敬請期待。
總結
PolarDB-X能夠高度兼容單機MySQL,從SQL兼容到事務兼容到生態(tài)兼容。在此基礎上,通過透明分布式的技術降低用戶使用門檻,使得用戶可以快速上手,適配各種用戶業(yè)務,并通過彈性擴縮容的能力,適應用戶的業(yè)務變化。而HTAP技術,將形成差異化的競爭力,使得用戶能夠從在線數(shù)據(jù)中獲得實時洞察。