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