天天看點

2020雙11,阿裡巴巴集團數萬資料庫系統全面上雲揭秘

作者:阿裡雲進階技術專家 改天

阿裡雲進階産品專家 勝通

2020年天貓雙十一成交額突破4982億,在雙十一走過12個年頭之際,我們的訂單建立峰值達到58.3萬筆/秒,再次重新整理全球線上交易系統的記錄。曆年雙十一都是對技術人的一次大考,峰值的絲般潤滑體驗是大家一緻的追求,而資料庫可謂關鍵。多年雙十一大促“磨練”出阿裡巴巴DBA一整套技能來應對大考,比方說全鍊路壓測、容災預案、實時限流等,同時阿裡的資料庫産品能力也大幅提升,如智能化的企業級MySQL核心AliSQL,自研PolarDB引擎等,這些硬核能力是阿裡巴巴集團資料庫團隊應對大考的底氣。

在資料庫引擎技術能力不斷攀登高峰的同時,長期以來我們“似乎忽略”一個非常重要的因素,而該因素卻是中大型企業上雲的必須考量點。如果将時鐘指針撥回到半年前,這個重要因素就擺在眼前,是阿裡巴巴集團所有的資料庫系統全面上雲及雲原生化過不去的“坎”,它是什麼呢?

一、阿裡集團資料庫全面上雲的挑戰

當DBA維護的系統上百套甚至上萬套以後,系統管理的複雜度就會急劇上升,加上資源利用效率、業務高峰支援(如大促活動評估)、流量管理等上級或業務方“強加給”DBA的工作後,整個系統複雜度就會居高不下,這種複雜度“熵”就會指數級增長,并且無法通過擴充DBA人數來有效解決問題,DBA自身也會陷入到繁雜的日常支援和“滅火”中,自身價值難以展現,這就是深坎。

阿裡巴巴集團就是這樣一個巨型的、系統複雜度“熵”奇高的大型企業。今年阿裡雙十一要求所有系統全面上雲,相比單純提升系統吞吐擴充能力的技術要求,這個任務更加難完成。簡述下當初面臨的嚴峻挑戰:

1.如何保證大量資料庫短時間内快速上雲?

這不僅僅是資料的搬遷過程,還要在此期間支援業務需求,比方說如何做到對業務“無感覺”的遷移資料上雲。如何在阿裡的巨型體量下,保障所有系統全面上雲的絲般順滑度?

2.如何高效支援DBA滿足雙十一期間的資料庫業務需求?

DBA對業務系統是熟悉,多系統之間有的互相依賴有的互相排斥,如何有效的将它們編排好,進而整體利用好資料庫資源,這是非常大的挑戰。

3.全面上雲以後,要支援DBA依舊對資料庫的強管理能力,比方說能夠及時登入作業系統排查資料庫問題等。

二、全面上雲的新打法,以專屬叢集RDS建構超高效資料庫管理體系

在全面上雲這個殘酷名額下,必須找到全新的方法來解決上述三個重點問題,建構一個高複雜度的但“混亂熵值”很低的超高效的資料庫管理體系。這就是全面采用專屬叢集RDS的根本前提。

那麼我們是如何極短時間内全面上雲并且能夠絲般順滑,如何充分發揮DBA的業務把控能力進而實作對RDS标準化服務的超高效能的管理,以及如何利用專屬叢集的源生核心能力建構全球最大的異地多活電商系統呢?

2.1 絲般順滑上雲

要實作絲般順滑上雲,需要充分規劃和精細的執行。由于阿裡集團是隔離于公有雲的網絡環境,底層對資料庫資源的網絡配置上雲後都會涉及變化,資料庫還要特别注意避免雙寫,要和業務做關聯的流量管理。

2020雙11,阿裡巴巴集團數萬資料庫系統全面上雲揭秘

上圖是我們實作絲般順滑上雲的基礎架構圖:

1.将資料傳輸路徑盡量縮短,節省大量時間:由于阿裡集團超高業務量,幾乎每個資料庫系統的資料量都是巨大的,少則TB多則PB為機關,我們采用最原始有效的方法,将備份檔案拷貝到雲上環境,然後執行快速恢複。

2.有效快速恢複是另一省時環節。阿裡集團資料庫普遍有兩種存儲類型,分别是本地SSD盤和ESSD雲盤,兩者的備份方案是不同的,本地SSD盤類似于Xtrabackup執行實體的備份,ESSD雲盤采用存儲級快照備份。對應的兩者快速恢複的方法也不同,本地SSD盤在備份時采用庫表級備份,而恢複的則采用并行表級恢複,大幅度的提升恢複速度,ESSD雲盤則通過秒級快照恢複實作。也就是說從阿裡集團網的全量備份、到資料兩套環境的傳輸、到雲上環境的快速恢複是一個關聯的連續過程,進而大大節省恢複時間。

3.利用MySQL源生複制實時追加增量資料,確定業務對資料的搬遷無感覺。在複制技術方面,AliSQL 針對高延遲網絡做了大量的協定優化嘗試和測試,通過合理的Batching和Pipelining,設計并實作了一整套自适應的針對高延遲高吞吐和低延遲高吞吐網絡的通信模式,極大的提升了日志傳輸的性能。另外為了節省帶寬,對binlog全面壓縮,同時在壓縮率和解壓速率上采個較好的平衡值。

4.統一的混合網絡環境代理實作流量的按需切換,確定業務感覺遷移的過程是順滑的。關聯于業務部署,先切換讀流量到雲上環境,後切換寫流量。由于代理層實作透明切換能力,在分鐘級級内會保持原有的資料庫連接配接,保障切寫過程中業務是無感覺的,在絕大數情況下效果很好。

2.2 靈活可控的标準化服務管理

雙十一涉及資料庫系統數萬套,除交易、商品、使用者、評價、優惠、店鋪、積分等核心系統外,還有各種“中小型”業務系統,機會每個業務都有一套或多套資料庫,每個業務之間有親和性或排斥性需求,即必須要在專屬叢集中滿足多樣性的業務部署要求。

舉例而言,我們将購物車資料庫和購物車應用自身部署在一起,確定購物車不受别的業務影響,同時購物車内部實作交叉部署,大緻部署圖如下所示,通過靈活的部署政策,業務方DBA可以制定一套複雜部署政策滿足業務需要。

2020雙11,阿裡巴巴集團數萬資料庫系統全面上雲揭秘

如上所述參與雙十一的業務方特别多,而DBA人數有限,DBA對業務的掌控程度也是高低不一的。一般而言,上述的核心業務基本上比較清晰,這主要得益于雙十一前的一次次全鍊路壓測,交易核心鍊路業務模型比較清晰,對資料庫容量的預估會很準确。但是這并不是所有情況,比方說創新型業務,對業務流量評估會非常的不準确,可能百倍增長也有可能是百分比增長,此情況下DBA預留資料庫資源沒有參考依據,如何在有限的資源中支援足夠多的創新型業務絕對是一大挑戰。再比方說原邊緣型業務,會由于其他系統的新依賴、或者業務流量徒增導緻流量預期不準,更常見的是被其他系統新依賴,還容易導緻故障。

2020雙11,阿裡巴巴集團數萬資料庫系統全面上雲揭秘

為了解決該不确定性問題,我們在專屬叢集上特别開發智能化DAS資源排程系統,DBA可以通過簡單的設定執行個體的彈性政策,DAS會根據過去系統的表現情況以及突發狀态,基本上以準實時的方式實作秒級資源彈性,分鐘級資源排程。秒級資源彈性能力,是在整台主機範圍内靈活的對執行個體資源進行調整,也可以人工幹預保護一些執行個體資源不被争搶。分鐘級的資源排程能力,這得益于存儲計算分離架構,通過分布式存儲的秒級快照能力,以分鐘級在不同主機之間重新平衡資源利用排程執行個體,由于高可用保障系統和代理透明切換能力,這個過程幾乎是平滑的。通過專屬叢集,DBA隻需要投入一定量的伺服器資源,然後專注監控整體叢集的資源水位,就可以保障大量的創新和小型業務的大促性能需要,可謂一夫當關萬夫莫開。

2.3 建構源生異地多活

雙十一零點高峰流量是巨大的,今年交易筆數達到58.3 萬筆/秒,資料庫叢集的TPS超過千萬級每秒,巨大的洪峰流量通過阿裡的單元化資料庫部署來分流,進而規避單個執行個體單個機房的流量風險。與往年相比,今年單元化資料庫全部采用全球資料庫模式支援多地域的讀流量,另外在核心中實作源生多寫能力,支援執行個體叢集級别的異地多寫多活,進而可以在不同地域分擔寫流量。

2020雙11,阿裡巴巴集團數萬資料庫系統全面上雲揭秘

如上圖所示本次雙十一阿裡巴巴啟用張北、深圳、南通3個地域,針對每個Region是獨立開服的,地域之間是低耦合的,通過一個橋梁把他們連接配接起來,它就是全球資料庫網絡,(GDN,Global database network)。部署于不同地域的資料庫,采用MySQL的源生複制技術,保證資料的一緻性和實時性。

2020雙11,阿裡巴巴集團數萬資料庫系統全面上雲揭秘

關于異地多活,第一次實作了在核心層的雙向同步,在多個地域中都有各自主節點和備節點,在核心中實作雙向複制,保障兩個地域在資料總量上是一緻的,同時寫實作分地域分流。這裡需要強調的一點,異地多活需要業務的改造,比如這個UID的資料隻會在某一個地域寫入避免行沖突,此外ID(PK鍵)也需要使用獨立的Sequence,進而實作全局的一緻性。業務和資料庫在本套架構中實作完美結合,業務隻需要關注邏輯的拆分,而資料庫自身實作資料的同步組合,底層資料同步複雜性完全由資料庫自身實作。

三、展望

總結而言,本次雙十一為了保障集團數萬資料庫的全面上雲及雲原生化,我們基于專屬叢集做了很多定向改造和比對,取得了非常好的效果。核心交易鍊路總共建構數千台機器叢集,總共超過數萬的資料庫節點,并且所有資料庫系統RPO等于0,主備延遲做到毫秒級,并保證整體人力效能數量級提升。靈活排程、源生複制等定制化能力,在專屬叢集内部實作産品化,經過雙十一驗證後,逐漸開放,将會大幅度提升企業資料庫管理生産力,敬請期待。