雙11超級工程—阿里巴巴數(shù)據(jù)庫技術架構演進
每年電商雙11大促對阿里技術人都是一次大考,對阿里數(shù)據(jù)庫團隊更是如此。經(jīng)過9年的發(fā)展,雙11單日交易額從2009年的0.5億一路攀升到2017年的1682億,秒級交易創(chuàng)建峰值達到了32.5萬筆/秒。支撐這一切業(yè)務指標的背后,是底層技術體系的一次次迭代升級。
阿里巴巴數(shù)據(jù)庫系統(tǒng)經(jīng)歷了10多年的發(fā)展,今年正式確定從 第三代大規(guī)模分庫分表 向 第四代X-DB分布式數(shù)據(jù)庫系統(tǒng) 演進的目標。X-DB分布式數(shù)據(jù)庫的落地已經(jīng)在2017年雙11大促中獲得了可行性驗證,同時底層開始引入存儲計算分離架構。分布式在系統(tǒng)穩(wěn)定性、容災能力、容量擴展性、技術體系內聚性上有了質的提升,今年雙11開啟了阿里數(shù)據(jù)庫技術架構新的篇章。
本文以阿里電商交易鏈路中的核心系統(tǒng)庫存中心為例,一窺阿里集團數(shù)據(jù)數(shù)據(jù)庫的發(fā)展歷程。庫存中心數(shù)據(jù)庫集群(簡稱庫存DB集群),從2012年獨立拆分后,其發(fā)展可以概括為以下3個階段:
- 2012~2013年:分庫分表水平拆分,構建大規(guī)模數(shù)據(jù)庫集群
- 2014~2016年:單元化異地多活架構,數(shù)據(jù)多單元間同步
- 2017年:X-DB 1.0分布式集群部署上線,新的起點
作為阿里數(shù)據(jù)庫體系中的核心系統(tǒng),庫存DB集群的發(fā)展歷程可以作為縮影,代表了阿里巴巴數(shù)據(jù)庫體系的演進。
誕生
庫存DB集群誕生于2012年,是業(yè)務垂直拆分的產物。庫存最早是商品中心數(shù)據(jù)庫的一個字段,隨著淘寶業(yè)務的復雜化,單一字段已經(jīng)滿足不了基于后端倉儲的庫存管理體系,所以便有了垂直拆分出來的庫存DB集群。
水平拆分
2012~2017年,雙11交易額一步步的刷新紀錄,庫存DB集群的QPS/TPS也實現(xiàn)了幾十倍的增長。水平拆分的基本思路是把數(shù)據(jù)庫擴展到多個物理節(jié)點上,讓每個節(jié)點處理不同的讀寫請求,從而緩解單一數(shù)據(jù)庫的性能問題。借助于數(shù)據(jù)庫團隊的DTS(Data Transmission Service)產品,庫存中心進行了大規(guī)模的水平拆分,分庫和分表數(shù)量擴展到最初的幾百倍,平穩(wěn)的支撐了這一個階段業(yè)務的快速發(fā)展。與此同時,在熱點商品扣減、防超賣數(shù)據(jù)強一致需求、跨城異地容災數(shù)據(jù)質量問題、業(yè)務數(shù)據(jù)量急劇膨脹、超大規(guī)模數(shù)據(jù)庫集群運維等問題點上,迫切需要新一代架構來解決。
異地多活單元化
2014~2015年,為了進一步提升用戶的購物體驗,庫存DB集群與主站交易鏈路一同做了單元化部署。單元化很大程度上解決了買家的使用體驗問題,在本單元內封閉完成讀寫操作。但是對于賣家維度的數(shù)據(jù),比如編輯商品、扣減庫存,就會涉及到跨單元中心去寫。關于單元化架構,之前已經(jīng)有了很多介紹。
有了多個單元,對于底層數(shù)據(jù)庫來說,面臨的***挑戰(zhàn)就是數(shù)據(jù)同步,因為對于單元封閉的買家維度的數(shù)據(jù),需要把單元的數(shù)據(jù)全部同步到中心;對于讀寫分離類型的業(yè)務,我們要把中心的數(shù)據(jù)同步到單元。這條數(shù)據(jù)通道就是依靠DRC(Data Replication Center)來完成。如今,DRC不僅成為集團單元化鏈路的基礎設施,對應的云產品DTS已經(jīng)從2016年開始讓阿里云用戶、聚石塔商家低成本的搭建異地容災。單元化架構給庫存DB集群帶來的***挑戰(zhàn)是多單元間的數(shù)據(jù)強一致問題,我們也為此做了很大的努力。
X-DB分布式集群
2017年雙11,庫存DB集群***次使用X-DB 1.0分布式集群部署,平穩(wěn)的支持了32.5萬筆/秒的交易創(chuàng)建峰值。X-DB是阿里巴巴自研高性能分布式可全球化部署數(shù)據(jù)庫,其核心技術目標概括為以下6點:
- 100%兼容MySQL生態(tài),應用無縫遷移
- 跨AZ、Region的全球化部署能力,5個9以上的可用率
- 自動化的數(shù)據(jù)Sharding,計算、存儲均可水平擴展
- 高性能的事務處理,相同硬件下達到MySQL 10倍的事務處理能力,百萬TPS
- 自動化的數(shù)據(jù)冷熱分離,存儲成本為MySQL的1/10
- 計算存儲分離,存儲按需擴展
庫存DB集群雙十一部署架構:
正是由于X-DB提供了全面兼容MySQL、高性能、低成本、跨城容災、數(shù)據(jù)強一致的能力。在2017年年初,數(shù)據(jù)庫團隊和業(yè)務研發(fā)團隊確定了在庫存中心部署X-DB 1.0的目標,解決業(yè)務目前面臨的痛點:
- 全面兼容MySQL,實現(xiàn)業(yè)務系統(tǒng)平滑遷入
- ***性能,雙11單實例熱點扣減峰值TPS是去年的3倍
- 低成本,相比于傳統(tǒng)的單元化主備架構部署,減少2個數(shù)據(jù)副本以及單元間數(shù)據(jù)同步資源成本
- 跨城容災,借助Batching和Pipelining技術實現(xiàn)跨城強同步場景吞吐量幾乎無衰減
- 數(shù)據(jù)強一致,借助Paxos協(xié)議提供多單元間數(shù)據(jù)強一致能力;批量關閉中心集群全部實例,集群30秒內完成單元選主切換,數(shù)據(jù)零丟失
- 計算存儲分離,徹底解決傳統(tǒng)機型計算資源和存儲資源固定配比問題,搭配容器化技術,大促峰值期間將數(shù)據(jù)庫彈性部署運行在離線任務主機,落地零擴容成本支持雙十一大促
X-DB***亮相在2017年雙11的舞臺,平穩(wěn)支撐零點峰值32.5萬筆/秒,開啟了阿里數(shù)據(jù)庫體系從分庫分表時代向分布式集群時代的大門。技術之路永無止境,我們今天的技術現(xiàn)狀離業(yè)務對我們的要求還有很大的差距。但是千里之行,始于足下,借用《魔戒》里的經(jīng)典臺詞:“There’s some good in this world, Mr. Frodo. And it’s worth fighting for.”
作者:諶文濤,花名俞月,2014年加入阿里巴巴數(shù)據(jù)庫團隊,目前負責X-DB 1.0架構在集團環(huán)境的落地。