挑戰(zhàn)背后的故事 - OceanBase的6000萬tpmC之路
近日OceanBase在TPC-C的戰(zhàn)績出來以后,媒體全方面進行了報道,技術(shù)和學(xué)術(shù)界也有很多人在討論。應(yīng)該說大家關(guān)注的焦點主要有幾個:
- 2019年的OceanBase用了更多硬件資源超越了2010年Oracle的記錄,這個記錄在多大程度上可比?意義大嗎?
- 從紙面上來看,OceanBase較9年前的Oracle相比,使用了1.5倍的主頻、近4倍的CPU和Core,為什么達到的tpmC只有2倍左右?
- 是不是真的如有些媒體所說,中國的通用數(shù)據(jù)庫已經(jīng)要超過Oracle了?
作為前高性能計算行業(yè)從業(yè)者,筆者對于上幾個問題也相當(dāng)好奇。幸運的是,10月9日在人大信息學(xué)院,OceanBase的負責(zé)人陽振坤博士做了一個專題講座,充分解答了上面的幾個問題,也讓現(xiàn)場所有聽眾充分了解了OceanBase取得的成績背后的意義以及鮮為人知的故事。
想要回答三個問題,先得講講大背景。OceanBase啟動的時期正是2010年,也是Oracle已經(jīng)獨統(tǒng)RDBMS江湖的時候。淘寶業(yè)已興起,支付寶也跟著欣欣向榮。然而每三個月增長一倍的業(yè)務(wù)量一直是懸在阿里數(shù)據(jù)庫系統(tǒng)頭上的一把利劍。彼時的阿里業(yè)務(wù)系統(tǒng)若要就這業(yè)務(wù)增長無限擴容Oracle數(shù)據(jù)庫,不管是在經(jīng)濟還是安全上都有巨大隱患。在此前提下,OceanBase(后稱OB)項目上馬了。其目標是取代Oracle數(shù)據(jù)庫,并能支持淘寶和支付寶(后螞蟻金服)的業(yè)務(wù)需求。
與銀行不同,互聯(lián)網(wǎng)電商面對交易量和彈性都極大的業(yè)務(wù)特點,天然親近可用低成本小型服務(wù)器橫向拓展的分布式系統(tǒng)。OB團隊因而早早也在往分布式數(shù)據(jù)庫的方向上考慮。一般來講,傳統(tǒng)RDBMS遵循ACID模型,分布式數(shù)據(jù)庫尤其是一般的NoSQL數(shù)據(jù)庫遵循CAP模型,但是OB對標的是Oracle,其定位跟一般的NoSQL數(shù)據(jù)庫是完全不一樣的,它是真正的面向OLTP的事務(wù)型關(guān)系數(shù)據(jù)庫。同時,OB團隊又希望其能夠繼承分布式高可用的特點,于是陽博士最終提出A2CID模型,即Atomicity,Availability,Consistency,Isolation,Durability,這便是技術(shù)直男的既要又要還要都要。但Oracle的一家獨大并非沒有理由,OLTP難度和投入極大,屬于慢工出細活。陽博士一開始并不懂?dāng)?shù)據(jù)庫,但是非??春眠@個方向。其領(lǐng)導(dǎo)一開始同意讓他做兩年,沒想一做做了9年才算出了些成績。在此也感嘆技術(shù)領(lǐng)頭人確實需要眼光和魄力,而一個追求技術(shù)卓越的企業(yè),也需要有對一個基礎(chǔ)產(chǎn)品持續(xù)9年投入和改進的包容心和戰(zhàn)略定力。
A2CID中可用性和一致性這對天然矛盾體到底如何解決?圖靈獎獲得者Leslie Lamport發(fā)明的Paxos消息一致性算法,不僅解決了私有區(qū)塊鏈中的一致性問題,也解決了OB可用性和一致性共存的設(shè)計難題。Paxos算法是面向非拜占庭模型的分布式系統(tǒng)共識算法,對于分布式數(shù)據(jù)庫或者私有區(qū)塊鏈這種假設(shè)無攻擊的環(huán)境具有良好的適用性。當(dāng)然,我們都知道墨菲定律,3個節(jié)點的Paxos節(jié)點,掛一個沒事,掛兩個咋辦?為了提高整個Paxos網(wǎng)絡(luò)的可靠性,OB團隊把每一個Paxos主網(wǎng)絡(luò)中的邏輯節(jié)點設(shè)計成了由三到五臺機器組成的Paxos子網(wǎng)絡(luò)。一個Paxos子網(wǎng)絡(luò)節(jié)點中的幾個機器同時出問題的概率是極小的,而這種極端情況即使發(fā)生了也沒關(guān)系,因為Paxos主網(wǎng)絡(luò)中還有多數(shù)邏輯節(jié)點來保證一致性。這種類似于嵌套Paxos網(wǎng)絡(luò)的設(shè)計,真正保證了OB同時達到了可用性和一致性,系統(tǒng)服務(wù)(幾乎)永不中斷的情況下,數(shù)據(jù)在集群中還能確保一致。至于Paxos網(wǎng)絡(luò)中可能遇到的死鎖問題,根據(jù)現(xiàn)場的一些信息,猜想可能是將網(wǎng)絡(luò)中幾個被選舉出來的統(tǒng)一時間服務(wù)器所產(chǎn)生的統(tǒng)一時間戳作為接受同步的主要判定標準。
下面先回答問題三:講座伊始,陽博士就直言,OB是“部分取代”了Oracle數(shù)據(jù)庫,在功能性、單機性能上離Oracle數(shù)據(jù)庫還有很大距離,而在橫向可拓展方面較只能用高成本共享存儲機柜集群的Oracle具備較大優(yōu)勢。值得一提的是,貫穿整個講座,陽博士至始至終展現(xiàn)出了技術(shù)人的謙遜和務(wù)實,讓人印象深刻。
接下來是問題二:這也是很多人的關(guān)注點。這次TPC-C記錄中OB的紙面硬件效率不如Oracle,但這并不代表OB就是靠低效“堆硬件”獲得的結(jié)果。我們看到的硬件資源比和tpmC性能比不一致,是如下三個因素綜合產(chǎn)生的結(jié)果:
首先,按照TPC-C的要求,在tpmC上升的時候,整個底庫數(shù)據(jù)是增加的,而不是在同一個小數(shù)據(jù)上重復(fù)提交交易。這個意思是,測試數(shù)據(jù)本身不是一成不變的。按照TPC-C的規(guī)定,每上升一定的tpmC,就要增加一些原始數(shù)據(jù),比如說新的倉庫、物品等,也就是說,6000tpmc時庫中的原始數(shù)據(jù)可能只有幾個GB, 6千萬tpmc時,原始數(shù)據(jù)可能就有幾十上百個T。這里列的數(shù)字肯定不準,但原則是,TPC-C會通過這個方式增加tpmC上升的難度。例如,在10個倉庫,100個商品上實現(xiàn)1000萬tpmC,和10000個倉庫,1000萬商品上實現(xiàn)1000萬tpmC的難度是完全不一樣的,前者會容易很多,因為表索引小、存儲區(qū)塊短、因而join等操作也更快。數(shù)據(jù)庫性能下降跟庫的增長一定不是線性關(guān)系,這是其一。
其二就是基于Paxos的高可用一致性設(shè)計,產(chǎn)生了大量信息和計算存儲資源冗余。這部分是用分布式實現(xiàn)高可用的OLTP付出的必要代價,無可避免。但當(dāng)交易量進一步上升時,與Oracle擴容高成本共享存儲機柜集群的思路相比,OB這部分的代價肯定是更小的。這也是OB在橫向可擴展性上的優(yōu)勢來源。
其三就是TPC-C的認證對于系統(tǒng)性能波動具有極其嚴格的要求。在整個8小時的測試過程中,tpmC波動不能超過2%。第一次挑戰(zhàn),為了追求穩(wěn)過,OB團隊配置環(huán)境時保留了較多富余的計算資源,比如很多節(jié)點的CPU可能占用率并不高。這個屬于團隊選擇的問題,后期也可調(diào)??傮w來講,在OB團隊未來的挑戰(zhàn)(如果還有的話)中,隨著對TPC-C流程的進一步熟悉,以及對OB穩(wěn)定性的更多信心,OB的性能價格比是有望進一步上升的。
最后是問題一:筆者認為OB在TPC-C榜的挑戰(zhàn)成功是非常了不起的成績,于行業(yè)于國家都意義重大。OB在分布式系統(tǒng)上實現(xiàn)了金融業(yè)務(wù)級的OLTP通用數(shù)據(jù)庫,并且還保留了分布式系統(tǒng)獨有的低成本橫向可擴展性和高可用性,在可預(yù)見的未來,一定會有更多的銀行拋棄昂貴的IBM大機+ORACLE數(shù)據(jù)庫解決方案,轉(zhuǎn)向以O(shè)B為代表的分布式數(shù)據(jù)庫。現(xiàn)場中國數(shù)據(jù)庫技術(shù)的開創(chuàng)級人物王珊教授也對OB團隊的成就做出了毫無保留的贊美和祝福。陽博士也表示,會繼續(xù)優(yōu)化OB文件系統(tǒng),并且讓OB走上立足OLTP向OLAP延伸的道路。
一覽群智作為AI賦能先行者,在各個業(yè)務(wù)中長期使用關(guān)系數(shù)據(jù)庫,也一直積極關(guān)注和推進國內(nèi)基礎(chǔ)技術(shù)的進步。OceanBase取得的成績令人敬佩,再次恭喜陽博士和OceanBase團隊!也祝OceanBase越做越好!
作者簡介:
- 劉家俊 一覽群智 CTO
- 澳大利亞昆士蘭大學(xué)博士
- 人工智能領(lǐng)域知名學(xué)者
- 曾任IBM中國研究院研究員
- 澳大利亞聯(lián)邦科學(xué)與工業(yè)研究組織博后研究員
- 人工智能與數(shù)據(jù)方向頂級國際學(xué)術(shù)會議及期刊PAKDD、ACM MM、IEEE TKDE的程序委員、審稿人