直击阿里新一代数据库技术:如何实现极致弹性能力?
阿里妹導(dǎo)讀:張瑞,阿里巴巴研究員,阿里集團(tuán)數(shù)據(jù)庫技術(shù)團(tuán)隊負(fù)責(zé)人,經(jīng)歷阿里數(shù)據(jù)庫技術(shù)變革歷程,連續(xù)六年作為數(shù)據(jù)庫總負(fù)責(zé)人參與雙11備戰(zhàn)工作。今天,我們邀請他來分享新一代數(shù)據(jù)庫技術(shù)在雙11中的應(yīng)用。
阿里數(shù)據(jù)庫技術(shù)團(tuán)隊負(fù)責(zé)人張瑞
張瑞:雙11是一場技術(shù)大練兵,是互聯(lián)網(wǎng)界的超級工程。需要做到支撐盡可能高的零點(diǎn)峰值,給用戶最好的體驗;也要做到成本盡可能低,要求極致的彈性能力;還要做到整體系統(tǒng)的穩(wěn)定。
數(shù)據(jù)庫如何實(shí)現(xiàn)極致彈性能力?
數(shù)據(jù)庫上云
大家都知道,數(shù)據(jù)庫實(shí)現(xiàn)彈性能力是比較困難的,一方面是因為數(shù)據(jù)庫對性能要求非常高,另一方面是需要進(jìn)行大量數(shù)據(jù)的搬遷,成本很高。數(shù)據(jù)庫彈性的第一個方向是數(shù)據(jù)庫上云,通過云的彈性能力來解決數(shù)據(jù)庫的資源問題。
數(shù)據(jù)庫上云面臨以下幾個難點(diǎn):
經(jīng)過幾年的探索,這些難點(diǎn)都已得到解決。第一,數(shù)據(jù)庫使用了高性能ECS,通過使用SPDK、DPDK技術(shù)和NVMe存儲,可以讓虛擬化損耗非常小,接近物理機(jī);第二,我們建設(shè)了一套數(shù)據(jù)庫混合云管理系統(tǒng),可以同時管理云上和云下環(huán)境,在雙11前快速把混合云構(gòu)建起來,支撐雙十一。第三,我們通過VPC網(wǎng)絡(luò)連接阿里內(nèi)部和公有云的網(wǎng)絡(luò),解決了混合云場景下的網(wǎng)絡(luò)互聯(lián)問題。
數(shù)據(jù)庫彈性調(diào)度
使用云的資源還不夠,為了實(shí)現(xiàn)更加極致的彈性能力,我們通過離在線混部技術(shù),可以讓數(shù)據(jù)庫使用離線集群的計算資源,最大程度的降低成本。為了實(shí)現(xiàn)離在線混部技術(shù),有兩大基礎(chǔ)條件:第一是容器化,通過容器實(shí)現(xiàn)了計算節(jié)點(diǎn)的資源隔離和統(tǒng)一調(diào)度,第二是計算存儲分離,它是數(shù)據(jù)庫彈性調(diào)度能力的基礎(chǔ)。非常幸運(yùn)的是,這幾年技術(shù)的發(fā)展讓存儲計算分離成為可能,比如:25G高速網(wǎng)絡(luò)、RDMA技術(shù),高性能分布式存儲等。
數(shù)據(jù)庫存儲計算分離架構(gòu)如圖,包括存儲層、網(wǎng)絡(luò)層和計算層,存儲使用阿里自研分布式存儲系統(tǒng)-盤古,數(shù)據(jù)庫計算節(jié)點(diǎn)則部署在阿里自研容器(Pouch)中,通過25G網(wǎng)絡(luò)與存儲節(jié)點(diǎn)連接。
為了實(shí)現(xiàn)數(shù)據(jù)庫存儲和計算分離,我們在分布式存儲-盤古上做了非常多的優(yōu)化,比如:
響應(yīng)延時:單路讀寫響應(yīng)延時0.4ms,RDMA網(wǎng)絡(luò)響應(yīng)延時小于0.2ms;
二三異步:第三個數(shù)據(jù)副本異步完成,極大提升了延時的穩(wěn)定性;
QoS流控:根據(jù)前臺業(yè)務(wù)負(fù)載情況控制后臺IO流量,保證寫入性能;
快速Failover:存儲集群單機(jī)failover優(yōu)化為5秒,達(dá)到業(yè)界領(lǐng)先水平;
高可用部署:單集群四Rack部署,將數(shù)據(jù)可靠性提升到10個9。
同時,在數(shù)據(jù)庫方面我們也做了大量優(yōu)化,最重要的是降低計算節(jié)點(diǎn)和存儲節(jié)點(diǎn)的網(wǎng)絡(luò)傳輸量,以此來降低網(wǎng)絡(luò)延遲對于數(shù)據(jù)庫性能的影響。第一是redo log sync優(yōu)化,將數(shù)據(jù)庫吞吐提升了100%。第二是由于盤古支持原子寫功能,所以我們關(guān)閉了數(shù)據(jù)庫的Double Write Buffer,高壓力下數(shù)據(jù)庫吞吐提升20%,網(wǎng)絡(luò)帶寬節(jié)省了100%。
雙11數(shù)據(jù)庫混部技術(shù)
容器化和存儲計算分離,使得數(shù)據(jù)庫無狀態(tài)化,具備調(diào)度能力。在雙11高峰,通過將共享存儲掛載到不同的計算集群(離線集群),實(shí)現(xiàn)數(shù)據(jù)庫的快速彈性。
阿里新一代數(shù)據(jù)庫技術(shù)
阿里最早是商業(yè)數(shù)據(jù)庫,然后我們做去IOE,研發(fā)出阿里MySQL分支AliSQL和分布式中間件TDDL。2016年,我們開始研發(fā)阿里新一代數(shù)據(jù)庫技術(shù),我們把它命名為X-DB,X代表追求極限性能,挑戰(zhàn)無限可能的含義。
阿里的業(yè)務(wù)場景對于數(shù)據(jù)庫有很高的要求:
數(shù)據(jù)要可擴(kuò)展;
持續(xù)可用、數(shù)據(jù)要強(qiáng)一致;
數(shù)據(jù)量大、重要程度高;
數(shù)據(jù)有明顯的生命周期特性,冷熱數(shù)據(jù)特點(diǎn)鮮明;
交易、庫存,支付等業(yè)務(wù),操作邏輯簡單,要求高性能。
因此,定義新一代數(shù)據(jù)庫就要包含幾個重要特點(diǎn):具備數(shù)據(jù)強(qiáng)一致、全球部署能力;內(nèi)置分布式、高性能、高可用能力;具備自動數(shù)據(jù)生命周期管理能力。
X-DB架構(gòu)圖
X-DB架構(gòu)如圖,引入Paxos分布式一致性協(xié)議解決問題;可異地部署,雖然網(wǎng)絡(luò)延時增加,但能夠保持高性能(吞吐),在同城三節(jié)點(diǎn)部署模式下,性能與單機(jī)持平,同時具備網(wǎng)絡(luò)抖動的高容忍性。
X-DB核心技術(shù)之一:高性能Paxos基礎(chǔ)庫X-Paxos是實(shí)現(xiàn)三節(jié)點(diǎn)能力的核心,可實(shí)現(xiàn)跨AZ、Region的數(shù)據(jù)強(qiáng)一致能力,實(shí)現(xiàn)5個9以上的持續(xù)可用率。
X-DB核心技術(shù)之二:Batching & Pipelining。X-DB在事務(wù)提交時,必須保證日志在數(shù)據(jù)庫節(jié)點(diǎn)的多數(shù)派收到并提交,這是保證數(shù)據(jù)強(qiáng)一致基礎(chǔ),由于事務(wù)在提交時必須需要跨網(wǎng)絡(luò),這一定會導(dǎo)致延時增加,要保證高延時下的吞吐是非常困難的。Batching & Pipelining技術(shù)保證盡可能批量提交,數(shù)據(jù)可以亂序接收和確認(rèn),最終保證日志順序提交。可以在高延時的情況下,保持很高的吞吐能力。
X-DB核心技術(shù)之三:異步化提交,數(shù)據(jù)庫線程池在提交時會等待,為了最大程度提升性能,我們采用了異步化提交技術(shù),最大可能保證數(shù)據(jù)庫線程池可以高效工作。通過這些技術(shù)保證X-DB在三節(jié)點(diǎn)模式下的高吞吐量。
X-DB與MySQL Group Replication對比測試
我們與Oracle官方的Group Replication作對比。在三節(jié)點(diǎn)同IDC部署模式下,sysbench標(biāo)準(zhǔn)化測試。Insert場景,我們可以做到MySQL官方的2.4倍,響應(yīng)時間比官方低。
在異地部署模式下,sysbench標(biāo)準(zhǔn)化測試。Insert場景,X-DB(5.04萬)性能優(yōu)勢特別明顯,是MySQL GR(0.85萬)的5.94倍,響應(yīng)延時X-DB(58ms)是MySQL GR(150ms)的38%。
典型應(yīng)用場景
同城跨AZ部署替代傳統(tǒng)主備模式,我們把原來主備模式變成三節(jié)點(diǎn),解決跨AZ數(shù)據(jù)質(zhì)量問題和高可用問題。跨AZ數(shù)據(jù)強(qiáng)一致,單AZ不可用數(shù)據(jù)零丟失、單AZ不可用秒級切換、切換自封閉,無第三方組件。相對主備模式零成本增加。
跨Region部署,用更底層的數(shù)據(jù)庫技術(shù)解決異地多活問題,三地六副本(主備模式)降低為三地五副本(三地五節(jié)點(diǎn)四數(shù)據(jù)),對于業(yè)務(wù)來說,可以享受跨Region數(shù)據(jù)強(qiáng)一致,單個Region不可用零數(shù)據(jù)丟失;跨Region強(qiáng)同步下依然保持高性能;切換策略靈活,可以優(yōu)先切換同Region,也可定制跨Region切換順序。
數(shù)據(jù)庫在雙11中的黑科技
X-KV在雙11中的應(yīng)用
X-KV是基于官方MySQL Memcached plugin的增強(qiáng),今年我們做了大幅度的改進(jìn),支持更多數(shù)據(jù)類型,支持非唯一索引、組合索引,multi get功能,還支持Online Schema change。最大變化是通過TDDL支持SQL轉(zhuǎn)換。對于業(yè)務(wù)方,X-KV優(yōu)勢是超高讀取性能,數(shù)據(jù)強(qiáng)一致,減少應(yīng)用響應(yīng)時間,降低了成本,同時因為支持SQL,應(yīng)用可以透明遷移,使用成本大幅降低。
TDDLfor X-KV實(shí)現(xiàn)了如下功能:
獨(dú)立的連接池:SQL和KV連接池相互獨(dú)立;變更時,兩套連接池保持協(xié)同一致;應(yīng)用可以快速在兩套接口之間切換。
優(yōu)化的KV通信協(xié)議:不再需要分隔符,協(xié)議實(shí)現(xiàn)。
結(jié)果集自動類型轉(zhuǎn)換:字符串自動轉(zhuǎn)換為MySQL類型。
交易賣家?guī)斓男阅芷款i解決方案
隨著雙11交易量增長,近兩年交易買家?guī)旌唾u家?guī)斓耐窖訒r一直比較大,導(dǎo)致商戶不能及時處理雙11訂單;且賣家?guī)煊写罅繌?fù)雜的查詢,性能差。我們曾經(jīng)通過為大賣家設(shè)置獨(dú)立隊列、同步鏈路合并操作和賣家?guī)煜蘖鞯冗M(jìn)行優(yōu)化,但仍然沒有完全解決問題。
ESDB是基于ES打造的分布式文檔數(shù)據(jù)庫,我們在ElasticSearch的基礎(chǔ)上,支持了SQL接口,應(yīng)用可以從MySQL無縫遷移到ESDB;針對大賣家,提供動態(tài)二級散列功能,徹底解決了數(shù)據(jù)同步的性能瓶頸,而且ESDB還可以提供復(fù)雜的查詢能力。
數(shù)據(jù)庫監(jiān)控系統(tǒng)演進(jìn)
數(shù)據(jù)庫監(jiān)控系統(tǒng)的技術(shù)挑戰(zhàn)具體有以下四點(diǎn):
整個鏈路經(jīng)歷三代架構(gòu):第一代Agent + MySQL;第二代Agent + datahub + 分布式NoSQL;第三代Agent + 實(shí)時計算引擎 + HiTSDB
HiTSDB是阿里自研的時序型數(shù)據(jù)庫,非常適合存儲海量的監(jiān)控類數(shù)據(jù)。通過實(shí)時計算引擎將秒級性能數(shù)據(jù)、全量SQL運(yùn)行狀況進(jìn)行預(yù)先處理后,存儲在HiTSDB中。通過第三代架構(gòu),實(shí)現(xiàn)了雙11高峰不降低的秒級監(jiān)控能力,這對我們了解系統(tǒng)運(yùn)行狀況、診斷問題是非常有幫助的。
CloudDBA在雙11中的應(yīng)用
阿里擁有業(yè)界最富有經(jīng)驗的DBA,海量的性能診斷數(shù)據(jù)。我們的目標(biāo)是把阿里DBA的經(jīng)驗、大數(shù)據(jù)和機(jī)器智能技術(shù)結(jié)合起來,目標(biāo)是三年后不再需要DBA做數(shù)據(jù)庫診斷、優(yōu)化等工作,而是讓機(jī)器來完成數(shù)據(jù)庫的智能化管理。我們認(rèn)為自診斷、自優(yōu)化、自運(yùn)維是未來數(shù)據(jù)庫技術(shù)發(fā)展的重要方向。
CloudDBA在今年雙11也做了一些探索,通過對全量SQL以及監(jiān)控數(shù)據(jù)的分析,我們實(shí)現(xiàn)了SQL自動優(yōu)化(慢SQL調(diào)優(yōu))、空間優(yōu)化(無用表無用索引分析)、訪問模型優(yōu)化(SQL和KV)和存儲空間增長預(yù)測等功能。
展望明年雙11
展望明年的雙11,我總結(jié)了三個關(guān)鍵詞:Higher,Faster,Smarter
Higher意味著更高的交易峰值,背后其實(shí)是更低成本的追求,用極致的彈性能力支持更高的峰值,給用戶最好的購物體驗,希望有一天可以做到不限流。
Faster是我們技術(shù)人一直不變的追求,更快的應(yīng)用系統(tǒng)、更快的數(shù)據(jù)庫,更快的存儲,更快的硬件等等。天下武功,唯快不破。
Smarter是機(jī)器智能在雙11中的應(yīng)用,不管是數(shù)據(jù)庫、調(diào)度、個性化推薦甚至客服等方面,我們都希望機(jī)器智能可以得到更多的應(yīng)用,產(chǎn)生更大的技術(shù)突破。
總結(jié)
以上是生活随笔為你收集整理的直击阿里新一代数据库技术:如何实现极致弹性能力?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双11稳定性负责人叔同讲述:九年双11的
- 下一篇: 阿里搜索技术,在AI路上走了多远?