摘要:第十一屆中國資料庫技術大會(DTCC2020),在北京隆重召開。大會以“架構革新 高效可控”為主題,重點圍繞資料架構、AI與大資料、傳統企業資料庫實踐和國産開源資料庫等内容展開分享和探讨。在資料庫智能運維專場上,邀請了阿裡雲資料庫進階技術專家王濤為大家介紹阿裡巴巴電商資料庫上雲的選擇、思考與實踐。阿裡巴巴電商資料庫原先是在自己獨立的IDC維護的,伴随着阿裡巴巴上雲項目,資料庫輕松實作上雲。阿裡雲雲原生管控以及雲原生資料庫技術可以幫助業務實作平滑上雲目标,進而實作資源最大化成本最優化的目标。阿裡巴巴希望利用阿裡雲的技術體系,幫助客戶大規模上雲,打造自己的運維管控平台。

演講嘉賓簡介:
王濤,阿裡雲資料庫進階技術專家,來自阿裡雲資料庫産品事業部,喜歡并熱愛資料庫。
職業生涯:程式員->DBA->DevOps架構師。2007年開始參與、設計、主導了阿裡巴巴資料庫體系演進,主導參與了阿裡巴巴資料庫體系演進,經曆了資料庫去IOE,規模化MySQL運維,阿裡資料庫異地多活,資料庫上雲等多個核心項目。目前為阿裡雲RDS管控負責人,為大家提供安全、穩定、經濟、智能的資料庫服務。
以下内容根據演講視訊以及PPT整理而成。
本次分享主要圍繞以下四個方面:
一、阿裡巴巴電商資料庫應用場景介紹
二、資料庫管控平台演進
三、資料庫上雲的選擇與思考
四、未來展望
1. 阿裡業務特性介紹 —— RDS三節點企業版
什麼是阿裡巴巴電商資料呢?大家看到的淘寶、天貓、盒馬、餓了麼上的資料都屬于阿裡巴巴電商資料,這些業務說使用的資料庫目前都在雲上。阿裡巴巴之前的資料庫是RDS高可用版,采用一主多備模式,但是發現執行個體無法做到RPO為零。嘗試使用了MySQL半同步等措施,但依然無法解決RPO為零的問題。其次是考慮采取CAP理論或者BASE理論的問題。CAP指的是一緻性(Consistency)、可用性(Availability)、分區容忍性(Partition tolerance)。但事實上資料庫是無法做到同時滿足CAP中的三點特性的,隻能滿足其中一到兩項。對于BASE理論大家或許不太熟悉,其核心在于可以做到中間不一緻,A和B機器可能單獨的時候不一緻,但是一旦連上之後就會一緻。資料管控系統上通常遵守BASE理論,資料庫更多的時候是選擇CAP原理。解決RPO等于0的問題有幾種實作方式,首先是MySQL半同步、還有MySQL Group Replication,這是MySQL 5.7版本之後推出的新功能,但是要求三份資料一樣,這個成本是無法接受的。是以阿裡逐漸走向了RDS自研的方向。
阿裡巴巴在選擇資料庫協定也是在Paxos協定 or Raft協定中徘徊,最終選擇了Paxos協定。Why Paxos,No Raft? 從下圖右側可以看到前面都在送出資料X、後面來了資料Y,在S3中先執行了P3.1,P4.5,A4.5 Y,這意味着Paxos協定不一定要有序,而Raft是有序的。Raft協定會要求S3先執行P3.1、A 3.1 X然後再執行P4.5,A 4.5 Y。這是Paxos協定和 Raft協定最大的不同。其次,Paxos協定有三種角色,送出者(Propose),接收者(Accept)以及Learn。阿裡巴巴自研的RDS對這三種角色進行了轉化,Propose叫做Leader,指的是可讀可寫的資料庫節點,Accept叫做Follower,多數派,有全量的資料,可以将自己變成Leader。還有Logger(阿裡自研角色),隻負責接收日志,沒有資料。Leader和Follower有全量資料,Logger隻是日志接收節點,如此CPU和記憶體成本就會降低。Learn叫做Learner,屬于觀察者角色,有全量資料但沒有投票權,即使Learner挂掉,也不會影響Learner多數送出。
2. 阿裡業務特性介紹 —— 異地多活
衆所周知,阿裡巴巴的業務還有一個特性,就是異地多活。異地多活有兩點好處,都是可以具備Region級别逃逸能力,使用者可以在任意單元進行交易。下圖右側是User通過規則分流,在資料中心及其它單元都可以進行交易。異地多活可以做到水準擴充和異地容災,在每年的雙11可以臨時建立站點,在9月份建好,在雙11之後2周撤掉。
3. 阿裡業務特性介紹 —— 資料庫異地多寫
那麼RDS如何應對異地多活?異地多活意味着異地多寫。下圖展示了支援異地多活的資料庫分布情況,首先要有一個中心DB,對應多個中心環境,分别是交易、購物車、商品等。中心資料庫寫的資料會到對應的Store,Store可以避免調多個線程時影響資料庫性能的問題。Writer負責将資料寫到對應的單元DB。單元DB中的資料通過Store回到中心的Writer,回到中心DB。可以發現資料的push呈現星狀,而不是網狀,這是出于幾點考慮,首先很難做DTL,大家都在做DTL,很容易被複制;其次,星狀結構可以至少保證一個節點資料是全局一緻的,哪怕單元DB挂掉,在中心DB中也有全量資料。
4. 阿裡業務特性介紹 —— 資料庫異地隻讀
阿裡業務特性使得資料庫需要有支援異地隻讀的特性。Learner節點,具備全量資料,不影響Paxos協定,每個Learner節點都要災備節點。基于資料庫原生複制一緻性高。要保證MySQL内部資料的一緻性。是以資料庫架構會如下圖右側所示,中心有三種節點:Follower、Logger、Learner,它們之間可以互相切換。每個單元有Learner節點和備用的Learner節點,單元應用也在單元Learner中。假設要做一級容災,那麼可以将單元寫權重路由到中心,通過中心再Put到各個單元中,如此不僅可以做的全局一緻性還可以做到異地多寫。
1. 資料庫管控平台定義
大家往往會誤以為做資料庫管控就是做資料庫運維,但事實上并不是那麼簡單。資料庫管控要做的事情有非常多:
首先,資料庫高可用是獨立的子產品,業界常用的有HA政策;資料備份,業界有備份政策,如全量備份、日志備份、資料軌迹備份等;資料庫運維包括執行個體建立、執行個體變更、執行個體銷毀、備庫重大搭等;建設基礎設施,如IDC、伺服器選型、硬體運維、CMDB;資料庫監控鍊路和資料告警鍊路兩個不同的子產品;還有資料庫的計量計費;資源排程;控制台;資料庫底層服務,如網關、服務發現等;資料庫安全;智能資料庫,如資料庫智能診斷、資料庫智能調參、性能調優等,也是目前主要的一個子產品;資料巡檢,如配置、參數、狀态巡檢;網絡管理;故障演練;異地多活等等。
可以發現,即使粗略的羅列完資料庫管控平台包含的内容,也會非常多的子產品,這導緻平台的系統性、複雜性都很高,由于對資料庫的依賴性很高,必然造成對其可用性的要求的提升。那麼這些要求應該如何滿足?
2. 阿裡巴巴資料庫管控平台演進
阿裡巴巴的資料庫管控平台也是經曆了若幹代前輩的努力:
1) 2003年,當時并沒有DBA這個職業。阿裡從SA(系統管理者)團隊拆出了一位同學做DBA,屬于純人工運維。
2) 2006年,開始使用業界流行的Nagios、Cacti等開源工具。
3) 2009年,阿裡開始自研,自主研發了第一代運維系統“北鬥”,替換了Nagios、Cacti等開源工具。
4) 2010年,阿裡巴巴開始進行去IOE工作,加速了管控的規模化運維,阿裡第一代MySQL運維系統誕生,“天機”。主要面向監控、可用性、備份。屬于單體應用。
5) 2013年,随着業務規模不斷擴大,阿裡第二代MySQL運維系統誕生,“DBFree”。主要面向自動化運維。
6) 2016年,阿裡第三代資料庫運維系統“DBPaaS”誕生,滿足異地多活、混合雲等業務需求。
7) 2018年,底層IaaS上雲,使用雲資源。
8) 2020年,阿裡電商資料庫全面開始上雲,開始使用雲管控。所有核心資料庫(交易、購物車、商品、優惠等)及核心鍊路都采用雲資料庫專屬叢集(MyBase)模式。基于雲原生資料庫,建構了上萬個節點,實作了RPO=0。
資料庫上雲的選擇與思考
1. 上雲方案選擇 —— 資料上雲方案選擇
資料上雲方案有很多選擇。首先是資料上雲方式的選擇,是使用邏輯遷移還是實體遷移?下圖這兩種資料上雲方式的對比,絕大多數遷移都是邏輯遷移,使用的是MySQL/DTS的方式。但是阿裡巴巴的業務特性導緻資料規模的體量巨大,需要使用實體遷移,XtraBackup雲原生實體遷移。上雲之後在2020年12月底,MyBase會推出實體機房push的上雲模式。從下圖可以發現遷移的效率、資料對象平滑線、資料一緻性、權限等相比于邏輯遷移都是較高的。對于小規模資料上雲時邏輯遷移是足夠的,但是大規模體量下,實體遷移更合适。
2. 上雲方案選擇 —— 網絡方案選擇
在網絡方面也有幾種選擇,首先是ALB,它最好的優點是相對成熟,但是也存在很明顯的缺點,就是所有的包都要經過ALB,這不符合極緻性能要求。NGLB,可以解決ALB的痛點,隻有首包經過XGW,後面的包不需要經過。但是在0點場景中,NGLB的确是扛不住的。NGLB也不支援ECS。ENI(彈性網卡),業界主推的彈性網卡方案。但是彈性網卡方案依然有個問題,就是不支援實體機。這使得阿裡巴巴又往ENI+RDS走了一步,但是目前還沒有計劃推出這個産品,而且由于網卡都是雙向聯通的,會存在安全風險。阿裡目前使用的是ENI+MyBase方案,此方案的優點是應用和資料庫在同一個網絡平面,中間沒有代理層,效率較高。但對于管控而言,複雜度提升了不少。一個機器上有兩塊網卡,使用者用到的網卡和實體機網卡。機器不得不做兩次操作,分别是資料鍊路和管控鍊路。考慮到資料需要雙向關聯和性能問題,是以使用了ENI,又考慮到安全性問題,使用了ENI+MyBase方式。
3. 上雲方案選擇 —— 網絡拓撲圖
如下圖,最上層是資料庫管控平面,下一層是RDS售賣區VPC,使用者中心VPC與使用者單元VPC之間通過CEN打通,使得全鍊路打通,這裡使用了阿裡雲産品支撐整個雲上架構。在雲下,支援使用者自建網絡,通過專線打通使用者自建網絡與使用者中心VPC,使用者單元VPC。使用者自建網絡之間通過專線打通。保證整個資料庫在使用者之間是聯通的。
4. 上雲方案選擇 —— 裸金伺服器
阿裡巴巴沒有使用普通的金屬伺服器,而是使用了裸金伺服器。它們之間差別在于裸金服務
器最下層有一個叫做X-Dragon晶片,也叫MOC卡。機器本身是耗費資源的,但使用“神龍”伺服器以後可以完全剝離掉這部分,就是說如果買了96C,768G的機器,那麼就是這麼多的資源,不會再因為虛拟化的成本帶來額外的開銷。MOC卡還有一個作用是上層的元件,如VPC/SLB、EBS雲盤都會經過MOC卡進行虛拟化,大大減少其它開銷,也就是把一台機器變成和虛拟機一樣的使用者體驗。
使用X-Dragon架構可以分鐘級的去建立100%實體機性能和功能的雲伺服器,相容VPC、SLB、RDS,支撐雲盤啟動和挂載雲盤,相容虛拟機鏡像,保證實體機的性能和隔離性,。免去了人肉自動運維的事情。使用ECS還可以在當機後,10分鐘内原地拉起一台資料庫,遷移恢複。
基于下圖中幾方面的考慮,在對比了實體機,虛拟機KVM,裸金屬伺服器ECS之後,阿裡巴巴選擇了裸金屬伺服器。運維自動化方面裸金屬伺服器支撐分鐘級傳遞。使用MOC卡機器是無損耗的。在存儲方面,裸金屬伺服器作業系統使用了雲盤,可以快速重置系統盤。在網絡方面,實體機部分支援網絡一緻性。裸金屬伺服器方案和虛拟機都相容ECS現有管控。
上雲方案選擇 —— 存儲選擇
下面簡單讨論一下存儲為何使用雲盤?原來雲盤最大的上限是16T,現在這個值已經變成了32T,基本可以滿足99%以上使用者的資料庫需求,而實體機可能最多隻有6T。雲盤可以支援分鐘級備份,而之前的方法遷移1T資料就需要3個小時。雲盤分鐘級執行個體Clone、分鐘級執行個體跨Region Clone、資料線上擴盤。運維人員在設定資料庫的性能時非常頭疼,沒有可選的辦法,雲盤可支援磁盤IOPS可配置,意味着可以運維人員強制設定資料庫IO吞吐,目前最高的吞吐是500MB/秒。MySQL有double write的特性,雲盤支撐MySQL原子寫,少了一次write的開銷。可靠性方面實體機總是沒有分布式存儲高。一個ECS,裡面是POD,拉起一個容器,使用ESSD存儲,最下面是分布式存儲。
上雲方案選擇 ——異地隻讀(GAN)
目前阿裡雲還沒有開放異地隻讀的上雲特性。阿裡巴巴希望做到各個Region獨立,主要是基于Global Database Network解決方案。上海的APP通過MaxScale到上海的資料庫,同理,深圳的APP通過MaxScale一部分分流到原生的資料庫Leader中,一部分到深圳的資料庫,進而實作異地多寫。
7. 上雲方案選擇 —— 充分利用MyBase特性
為什麼使用MyBase? 如下圖,買了一對雲主機,左側備份幾個Leader,幾個Follower,右側同理。節點之間做到親和、交叉、超賣、彈性。MyBase可以做到交叉,兩主兩備,性能最好,其次是親和,購物車的資料和其它資料庫在一起,但又互相獨立。因為業務特性需要進行臨時擴容,這種情況非常常見,而MyBase可以做到動态的調參。因為底層使用了雲盤,可以滿足彈性需求。
8. 上雲的方案9大特性
總結而言,上雲的方案分别要滿足以下9個特性:
- 高可用:資料庫主備架構,高可用性保障,當機自動切換、修複。
- 高可靠:資料庫多副本保障、資料同步可調一緻性保障(RPO優先)、三節點企業版RPO=0保障。
- 高性能:核心性能提升,相比開源版本MySQL(1.5x)\Redis(3x)。
- 高安全:SSL鍊路加密、TDE落盤加密、審計日志體系等。保障事前,事中,事後的資料庫安全。
- 運維能力:備份恢複、監控報警、智能運維診斷等全套資料庫運維解決方案。
- 自主可控:開放OS、資料庫完整權限;開放資料庫管控平台标準化底層接口;使用者可深度自定義資料庫管理邏輯。
- 混部:混合部署MySQL、Redis等,并提供雲資料庫管理特性。
- 資源排程:使用者專屬一片實體主機資源池,可自定義執行個體配置設定、分布政策,高度适配業務需求。
- 超配能力:使用者實體資源100%隔離,支援CPU、記憶體(Redis)、空間等資源的超配。
資料庫上雲是出于幾點考慮,首先自建資料庫不支援很多的資料庫管控平台特性,RDS支援部分特性,如彈性網卡等。而MyBase是在RDS基礎之上衍生出來的産品,目前基本都可以支援這9個特性。
四、總結及未來展望
1.上好雲,用好雲
阿裡巴巴資料庫上雲是考慮到業務本身場景,還有雲原生技術,以及促進阿裡雲内部改造等原因。目前2020年雙11期間交易額達到了4982億,高峰訂單58.3萬筆/秒,雲原生資料庫可以很平滑的支援這些業務。阿裡巴巴電商資料庫上雲不僅僅是把資料庫搬上雲,更多的思考是如何上好雲,用好雲。為了支援阿裡巴巴的業務,阿裡雲内部做了很多的改造。通過使用阿裡雲雲原生管控以及雲原生資料庫技術幫助業務實作平滑上雲目标,進而實作資源最大化成本最優化的目标。
2. 未來展望
資料庫上雲會經曆幾個大的階段。最早是實體機階段,之後是存計分離,阿裡巴巴在2016年就開始存計分離,之後到現在的MyBase形态。相信之後在多樣性方面會有很多發展,未來不僅僅使用MySQL這一種資料庫,還會有很多OLTP的資料庫。最後,資料庫的智能化一定是未來的大趨勢。
相關閱讀
DTCC 2020 | 阿裡雲李飛飛:雲原生分布式資料庫與資料倉庫系統點亮資料上雲之路
https://developer.aliyun.com/article/781040【内含幹貨PPT下載下傳】DTCC 2020 | 阿裡雲葉正盛:資料庫2025
https://developer.aliyun.com/article/780725【内含幹貨PPT下載下傳】DTCC 2020 | 阿裡雲趙殿奎:PolarDB的Oracle平滑遷移之路
https://developer.aliyun.com/article/780749【内含幹貨PPT下載下傳】DTCC 2020 | 阿裡雲朱潔:NoSQL最新技術發展趨勢
https://developer.aliyun.com/article/780746【内含幹貨PPT下載下傳】DTCC 2020 | 阿裡雲張鑫:阿裡雲雲原生異地多活解決方案
https://developer.aliyun.com/article/781031DTCC 2020 | 阿裡雲梁高中:DAS之基于Workload的全局自動優化實踐
https://developer.aliyun.com/article/781036【内含幹貨PPT下載下傳】DTCC 2020 | 阿裡雲程實:雲原生時代的資料庫管理
https://developer.aliyun.com/article/780992【内含幹貨PPT下載下傳】DTCC 2020 | 阿裡雲吉劍南:線上分析進入Fast Data時代的關鍵技術解讀
https://developer.aliyun.com/article/780747