雙11超級(jí)工程—阿里巴巴數(shù)據(jù)庫(kù)技術(shù)架構(gòu)演進(jìn)
每年電商雙11大促對(duì)阿里技術(shù)人都是一次大考,對(duì)阿里數(shù)據(jù)庫(kù)團(tuán)隊(duì)更是如此。經(jīng)過9年的發(fā)展,雙11單日交易額從2009年的0.5億一路攀升到2017年的1682億,秒級(jí)交易創(chuàng)建峰值達(dá)到了32.5萬筆/秒。支撐這一切業(yè)務(wù)指標(biāo)的背后,是底層技術(shù)體系的一次次迭代升級(jí)。

阿里巴巴數(shù)據(jù)庫(kù)系統(tǒng)經(jīng)歷了10多年的發(fā)展,今年正式確定從 第三代大規(guī)模分庫(kù)分表 向 第四代X-DB分布式數(shù)據(jù)庫(kù)系統(tǒng) 演進(jìn)的目標(biāo)。X-DB分布式數(shù)據(jù)庫(kù)的落地已經(jīng)在2017年雙11大促中獲得了可行性驗(yàn)證,同時(shí)底層開始引入存儲(chǔ)計(jì)算分離架構(gòu)。分布式在系統(tǒng)穩(wěn)定性、容災(zāi)能力、容量擴(kuò)展性、技術(shù)體系內(nèi)聚性上有了質(zhì)的提升,今年雙11開啟了阿里數(shù)據(jù)庫(kù)技術(shù)架構(gòu)新的篇章。

本文以阿里電商交易鏈路中的核心系統(tǒng)庫(kù)存中心為例,一窺阿里集團(tuán)數(shù)據(jù)數(shù)據(jù)庫(kù)的發(fā)展歷程。庫(kù)存中心數(shù)據(jù)庫(kù)集群(簡(jiǎn)稱庫(kù)存DB集群),從2012年獨(dú)立拆分后,其發(fā)展可以概括為以下3個(gè)階段:
- 2012~2013年:分庫(kù)分表水平拆分,構(gòu)建大規(guī)模數(shù)據(jù)庫(kù)集群
 - 2014~2016年:?jiǎn)卧惖囟嗷罴軜?gòu),數(shù)據(jù)多單元間同步
 - 2017年:X-DB 1.0分布式集群部署上線,新的起點(diǎn)
 
作為阿里數(shù)據(jù)庫(kù)體系中的核心系統(tǒng),庫(kù)存DB集群的發(fā)展歷程可以作為縮影,代表了阿里巴巴數(shù)據(jù)庫(kù)體系的演進(jìn)。
誕生
庫(kù)存DB集群誕生于2012年,是業(yè)務(wù)垂直拆分的產(chǎn)物。庫(kù)存最早是商品中心數(shù)據(jù)庫(kù)的一個(gè)字段,隨著淘寶業(yè)務(wù)的復(fù)雜化,單一字段已經(jīng)滿足不了基于后端倉(cāng)儲(chǔ)的庫(kù)存管理體系,所以便有了垂直拆分出來的庫(kù)存DB集群。
水平拆分
2012~2017年,雙11交易額一步步的刷新紀(jì)錄,庫(kù)存DB集群的QPS/TPS也實(shí)現(xiàn)了幾十倍的增長(zhǎng)。水平拆分的基本思路是把數(shù)據(jù)庫(kù)擴(kuò)展到多個(gè)物理節(jié)點(diǎn)上,讓每個(gè)節(jié)點(diǎn)處理不同的讀寫請(qǐng)求,從而緩解單一數(shù)據(jù)庫(kù)的性能問題。借助于數(shù)據(jù)庫(kù)團(tuán)隊(duì)的DTS(Data Transmission Service)產(chǎn)品,庫(kù)存中心進(jìn)行了大規(guī)模的水平拆分,分庫(kù)和分表數(shù)量擴(kuò)展到最初的幾百倍,平穩(wěn)的支撐了這一個(gè)階段業(yè)務(wù)的快速發(fā)展。與此同時(shí),在熱點(diǎn)商品扣減、防超賣數(shù)據(jù)強(qiáng)一致需求、跨城異地容災(zāi)數(shù)據(jù)質(zhì)量問題、業(yè)務(wù)數(shù)據(jù)量急劇膨脹、超大規(guī)模數(shù)據(jù)庫(kù)集群運(yùn)維等問題點(diǎn)上,迫切需要新一代架構(gòu)來解決。
異地多活單元化
2014~2015年,為了進(jìn)一步提升用戶的購(gòu)物體驗(yàn),庫(kù)存DB集群與主站交易鏈路一同做了單元化部署。單元化很大程度上解決了買家的使用體驗(yàn)問題,在本單元內(nèi)封閉完成讀寫操作。但是對(duì)于賣家維度的數(shù)據(jù),比如編輯商品、扣減庫(kù)存,就會(huì)涉及到跨單元中心去寫。關(guān)于單元化架構(gòu),之前已經(jīng)有了很多介紹。
有了多個(gè)單元,對(duì)于底層數(shù)據(jù)庫(kù)來說,面臨的***挑戰(zhàn)就是數(shù)據(jù)同步,因?yàn)閷?duì)于單元封閉的買家維度的數(shù)據(jù),需要把單元的數(shù)據(jù)全部同步到中心;對(duì)于讀寫分離類型的業(yè)務(wù),我們要把中心的數(shù)據(jù)同步到單元。這條數(shù)據(jù)通道就是依靠DRC(Data Replication Center)來完成。如今,DRC不僅成為集團(tuán)單元化鏈路的基礎(chǔ)設(shè)施,對(duì)應(yīng)的云產(chǎn)品DTS已經(jīng)從2016年開始讓阿里云用戶、聚石塔商家低成本的搭建異地容災(zāi)。單元化架構(gòu)給庫(kù)存DB集群帶來的***挑戰(zhàn)是多單元間的數(shù)據(jù)強(qiáng)一致問題,我們也為此做了很大的努力。

X-DB分布式集群
2017年雙11,庫(kù)存DB集群***次使用X-DB 1.0分布式集群部署,平穩(wěn)的支持了32.5萬筆/秒的交易創(chuàng)建峰值。X-DB是阿里巴巴自研高性能分布式可全球化部署數(shù)據(jù)庫(kù),其核心技術(shù)目標(biāo)概括為以下6點(diǎn):
- 100%兼容MySQL生態(tài),應(yīng)用無縫遷移
 - 跨AZ、Region的全球化部署能力,5個(gè)9以上的可用率
 - 自動(dòng)化的數(shù)據(jù)Sharding,計(jì)算、存儲(chǔ)均可水平擴(kuò)展
 - 高性能的事務(wù)處理,相同硬件下達(dá)到MySQL 10倍的事務(wù)處理能力,百萬TPS
 - 自動(dòng)化的數(shù)據(jù)冷熱分離,存儲(chǔ)成本為MySQL的1/10
 - 計(jì)算存儲(chǔ)分離,存儲(chǔ)按需擴(kuò)展
 
庫(kù)存DB集群雙十一部署架構(gòu):

正是由于X-DB提供了全面兼容MySQL、高性能、低成本、跨城容災(zāi)、數(shù)據(jù)強(qiáng)一致的能力。在2017年年初,數(shù)據(jù)庫(kù)團(tuán)隊(duì)和業(yè)務(wù)研發(fā)團(tuán)隊(duì)確定了在庫(kù)存中心部署X-DB 1.0的目標(biāo),解決業(yè)務(wù)目前面臨的痛點(diǎn):
- 全面兼容MySQL,實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)平滑遷入
 - ***性能,雙11單實(shí)例熱點(diǎn)扣減峰值TPS是去年的3倍
 - 低成本,相比于傳統(tǒng)的單元化主備架構(gòu)部署,減少2個(gè)數(shù)據(jù)副本以及單元間數(shù)據(jù)同步資源成本
 - 跨城容災(zāi),借助Batching和Pipelining技術(shù)實(shí)現(xiàn)跨城強(qiáng)同步場(chǎng)景吞吐量幾乎無衰減
 - 數(shù)據(jù)強(qiáng)一致,借助Paxos協(xié)議提供多單元間數(shù)據(jù)強(qiáng)一致能力;批量關(guān)閉中心集群全部實(shí)例,集群30秒內(nèi)完成單元選主切換,數(shù)據(jù)零丟失
 - 計(jì)算存儲(chǔ)分離,徹底解決傳統(tǒng)機(jī)型計(jì)算資源和存儲(chǔ)資源固定配比問題,搭配容器化技術(shù),大促峰值期間將數(shù)據(jù)庫(kù)彈性部署運(yùn)行在離線任務(wù)主機(jī),落地零擴(kuò)容成本支持雙十一大促
 
X-DB***亮相在2017年雙11的舞臺(tái),平穩(wěn)支撐零點(diǎn)峰值32.5萬筆/秒,開啟了阿里數(shù)據(jù)庫(kù)體系從分庫(kù)分表時(shí)代向分布式集群時(shí)代的大門。技術(shù)之路永無止境,我們今天的技術(shù)現(xiàn)狀離業(yè)務(wù)對(duì)我們的要求還有很大的差距。但是千里之行,始于足下,借用《魔戒》里的經(jīng)典臺(tái)詞:“There’s some good in this world, Mr. Frodo. And it’s worth fighting for.”
作者:諶文濤,花名俞月,2014年加入阿里巴巴數(shù)據(jù)庫(kù)團(tuán)隊(duì),目前負(fù)責(zé)X-DB 1.0架構(gòu)在集團(tuán)環(huán)境的落地。















 
 
 












 
 
 
 