聲明:本文來自于微信公眾號(hào)量子位(ID:QbitAI),作者:金磊,授權(quán)轉(zhuǎn)載發(fā)布。
“美眉,來嘍,來嘍,上鏈接!”
話音剛落。
“沒了,全沒了,都被搶光嘍!”
頭部主播李佳琦,一夜100億元銷售額這件事,著實(shí)震驚了不少人。
而經(jīng)歷過這位“大魔王”雙11預(yù)售的友友們,或多或少肯定是見過剛才這種名場面了。
短短1秒不到的時(shí)間,數(shù)萬甚至更多商品瞬間被搶了個(gè)精光。
從下單到支付,那叫一個(gè)一氣呵成,卡頓一點(diǎn)點(diǎn)都得被搶購大軍甩開十萬八千里。
……
但你有沒有想過一個(gè)問題:
為什么在這么短時(shí)間,面對如此高流量,付款卻又是這般絲滑?
不賣關(guān)子,上答案。
因?yàn)樵诶罴宴偪褓u貨的背后,一直有位“硬漢”在默默發(fā)力。
它叫做OceanBase,是螞蟻集團(tuán)自主研發(fā)的純國產(chǎn)數(shù)據(jù)庫。
至于它的能力,講真,讓李佳琦直播帶貨體驗(yàn)變得絲滑“無感”,這都是小兒科了。
畢竟,OceanBase可是頂?shù)米∶磕?strong>雙11支付、金融級場景超級大流量狂虐的那種數(shù)據(jù)庫。
經(jīng)得起雙11考驗(yàn)的OceanBase
先來感受一下歷年雙11成交額的恐怖增長。
光是去年的成交額,就達(dá)到了4982億元之多。
什么概念?平均到雙11當(dāng)天每秒的成交量,那就是:
每秒58.3萬筆訂單!
而在如此海量又迅猛的交易面前,數(shù)據(jù)庫就成了交易是否能夠絲滑完成的關(guān)鍵。
這是為什么?
先來簡單科普一下數(shù)據(jù)庫在這個(gè)過程中起到的作用。
我們可以把數(shù)據(jù)庫當(dāng)做是一個(gè)“賬本”,當(dāng)一個(gè)客人在店里買了一瓶醬油,作為店主的你,是不是得在賬本上記賬?
何時(shí)何地、誰、買了什么、單價(jià)多少、交易是否成功、還剩多少瓶醬油……
所有與這次交易相關(guān)的信息,都得一五一十地紀(jì)錄在這個(gè)賬本中。
看似簡單的流程,但往往會(huì)出現(xiàn)各式各樣的問題,比如人數(shù)。
一個(gè)客人還好應(yīng)付,但如果同一時(shí)間,客人一窩蜂的到店里,擠成一團(tuán)吆喝著“快點(diǎn)記賬”呢?
若是店里只有零星的幾個(gè)賬本,那你只能無奈地回應(yīng):“請……排……隊(duì)……”。
再例如,即便你“奮筆疾書”,但訂單源源不斷,把整個(gè)賬本記得滿滿當(dāng)當(dāng)呢?
那你只能跟后邊的客人說:“抱歉,賬本滿了,沒法再交易了。”
再或者你記賬的時(shí)候?qū)懱炝耍┑袅四狞c(diǎn)信息,或者把信息寫串行了,那這幾筆交易可就亂套了。
……
所以,這個(gè)賬本,也就是數(shù)據(jù)庫,在整個(gè)交易過程中,就顯得尤為重要。畢竟在金融支付行業(yè)當(dāng)中有一句話:
賬目是支付系統(tǒng)皇冠上的明珠。如果一個(gè)系統(tǒng)可以被應(yīng)用在賬目上,那么意味著它有能力應(yīng)對所有系統(tǒng)。
而阿里巴巴,更準(zhǔn)確點(diǎn)來說,是它使用的交易系統(tǒng)支付寶,所采用的數(shù)據(jù)庫,正是OceanBase。
但就像剛才提到的,像雙11這種大促,數(shù)據(jù)庫所面臨的壓力,在全球范圍來看都是數(shù)一數(shù)二的。
也就是說,即便客人、交易再多,支付寶的“賬本”也不許出現(xiàn)讓客人排隊(duì)、賬本不夠用,甚至賬本出錯(cuò)等問題。
但仔細(xì)回憶一下,每年雙11剁手的時(shí)候,支付過程似乎都是非常絲滑無感的(除非沒搶到)。
而這,便歸功于OceanBase經(jīng)過數(shù)年考驗(yàn),所沉淀下來的十八般武藝了。
整體來看,它的核心能力包括四點(diǎn)。
首先,是數(shù)據(jù)一致性。
這一點(diǎn),不僅是對于OceanBase,對任何一個(gè)數(shù)據(jù)庫來說,都是最基礎(chǔ)但又是最難修煉的“功法”。
還是以醬油為例,假設(shè)它在數(shù)據(jù)庫中有2張表,分別是商品類型和商品品牌。
當(dāng)商店里進(jìn)了一批醬油,那你就需要在商品類型里插入“醬油”屬性,然而這個(gè)醬油是剛剛上市的新牌子,需要在商品品牌表里新增對應(yīng)的牌子。
但如果沒有數(shù)據(jù)一致性,那就會(huì)出現(xiàn)一個(gè)“沒有牌子的醬油”了。
因此,每當(dāng)在事務(wù)完成的時(shí)候,必須保證所有數(shù)據(jù)都具有一致的狀態(tài)。
OceanBase便具備數(shù)據(jù)塊級實(shí)時(shí)校驗(yàn)、事務(wù)級實(shí)時(shí)校驗(yàn)、副本級定期校驗(yàn)等特性。
而且數(shù)據(jù)一致性,必須是在任何情況下都得滿足的一點(diǎn),而不是說能應(yīng)付某次任務(wù)就行的那種。
為此,OceanBase的數(shù)據(jù)一致性,還具備運(yùn)行連續(xù)的特點(diǎn)。
具體來說就是在高并發(fā)場景不會(huì)出現(xiàn)抖動(dòng)、在極端異常場景下無損容錯(cuò),以及還內(nèi)置灰度變更的能力。
其次,是極致彈性。
在雙11這種大促場景下,當(dāng)天所需要的數(shù)據(jù)的容量,是平時(shí)的幾十倍,普通機(jī)房在這種量級面前是招架不住的。
而OceanBase則修煉了快速上云、下云的功力,這便是所謂的彈性。
當(dāng)需要超大數(shù)據(jù)庫容量的時(shí)候,OceanBase可以飛速的將數(shù)據(jù)、服務(wù)部署到云上;而當(dāng)不需要這么大容量時(shí),就又可以飛速的從云上撤下來。
這個(gè)過程聽起來非常簡單,但實(shí)際上對于數(shù)據(jù)庫來說,是一件非常有挑戰(zhàn)的事情。
不論是上云還是下云,絕對不可能是一個(gè)一個(gè)地“拷貝”,定然海量并行,這個(gè)過程基本涉及了接近50萬次的變更操作。
而所有的操作,絕對不能對業(yè)務(wù)產(chǎn)生任何的影響,是有種“一步錯(cuò)便天下大亂”的感覺了。
第三,是極致容量。
剛才我們也提到,去年雙11平均每秒的成交量是58.3萬筆。
但其實(shí)這個(gè)數(shù)字對于OceanBase來說并不算什么,因?yàn)樗恼鎸?shí)實(shí)力,是能hold住每秒100萬筆訂單支付的那種。
這個(gè)數(shù)字對于一個(gè)數(shù)據(jù)庫來說,可能就是接近億級的QPS(每秒查詢率)。
為了應(yīng)對這種難題,OceanBase采用的是兩級彈性架構(gòu)。
第一級數(shù)據(jù)庫經(jīng)常會(huì)采用的分庫分表,也就是從單個(gè)數(shù)據(jù)庫拆分成多個(gè)數(shù)據(jù)庫、從單張表拆分成多張表。
這樣一來,就可以把數(shù)據(jù)“打散”處理,降低每個(gè)數(shù)據(jù)庫的QPS。
除此之外,OceanBase還基于此做了一個(gè)“中間件”,它的作用就是避免重復(fù)勞動(dòng)。
上述過程拆過一次,以后就交給OceanBase自動(dòng)擴(kuò)容就可以了。
最后,是高性能低成本。
光是數(shù)據(jù)庫能力上去還不行,還得考慮成本的問題,畢竟數(shù)據(jù)存儲(chǔ)和管理花費(fèi)巨大,已經(jīng)成為了業(yè)內(nèi)不爭的事實(shí)。
而OceanBase可以說是那種“既能干又省錢”的數(shù)據(jù)庫。
光是與去年相比,在性能提升61%的情況下,諸如LSM樹通用壓縮成本節(jié)省50%、數(shù)據(jù)編碼成本節(jié)省25%。
……
由此可見,OceanBase確實(shí)是一個(gè)經(jīng)得起雙11考驗(yàn)的數(shù)據(jù)庫了。
更強(qiáng)版本來襲,但今年沒上“戰(zhàn)場”
今年剛剛過去的雙11,成交額數(shù)據(jù)再創(chuàng)新高。
那么問題來了:
OceanBase是否還能依舊堅(jiān)挺?
答案很明顯是肯定的。
OceanBase自6月1日宣布步入“3.0時(shí)代”后,目前已經(jīng)3.2版本。
但是劃重點(diǎn)——今年沒用最新版!
理由很簡單:因?yàn)楝F(xiàn)在的OceanBase就已經(jīng)完全能hold住了。
不過既然升到了最新版本,也是有必要了解一下更強(qiáng)的性能。
從數(shù)據(jù)層面來看,OceanBase3.2的性能可謂是猛增。
在相同環(huán)境和任務(wù)下,與3.1版本相比:
Sysbench OLTP 性能提升24%
BMSQL tpmC 性能提升30%以上
TPC-H 性能提升655%
而且OceanBase以前的目標(biāo)可能就是如何撐住雙11,解決的是一種純粹的交易類問題。
而將來則不同,OceanBase劍指更智能和更實(shí)時(shí)。
智能化方面,就是通過AI的能力自動(dòng)發(fā)現(xiàn)問題,而且還把診斷和決策“權(quán)利”,也一并交給OceanBase自己來處理。
以往我們看到的雙11“戰(zhàn)場”上,都會(huì)有眾多一線員工把守,生怕突發(fā)一些重大問題。
但以后就不一樣了,甚至身兼要職的OceanBase CTO楊傳輝都表示:
我不用去了!
這份自信,也是可見一斑了。
而在實(shí)時(shí)化方面,以往很多人會(huì)認(rèn)為雙11只是一個(gè)交易的場景,但其實(shí)細(xì)看下來,它還是一個(gè)實(shí)時(shí)智能分析的場景。
因?yàn)樵陔p11的時(shí)候,是要對商家做分析的,以往的方式在交易完成之后會(huì)到數(shù)據(jù)倉庫里再做分析,這就需要消耗很長時(shí)間才能得出結(jié)果。
而理想的狀態(tài)是什么呢?當(dāng)然就是交易完立即出分析結(jié)果。
而現(xiàn)在,這已經(jīng)不是一種理想了。
OceanBase3.2把很多對商家分析的工作,整合到了一套HTAP(混合事務(wù)和分析處理)系統(tǒng)里面,既可以做實(shí)時(shí)交易又可以做實(shí)時(shí)分析。
這里需要補(bǔ)充解釋的是,HTAP是OceanBase主打的數(shù)據(jù)庫類型。
而目前市場主流的是OLAP(聯(lián)機(jī)實(shí)時(shí)分析)和OLTP(聯(lián)機(jī)事務(wù)處理)兩種類型。
HTAP作為“新起之秀”,不僅打破了OLAP和OLTP之間長久以來固有的隔閡,而且在復(fù)雜場景中的優(yōu)勢也是顯而易見。
就目前來看,OceanBase對這條道路的選擇是持堅(jiān)定不移的態(tài)度。
而從上結(jié)果來看,能hold住全球數(shù)一數(shù)二復(fù)雜場景的OceanBase,是邁出了正確的一步。
從一個(gè)收藏夾開始,走向世界
現(xiàn)在的OceanBase,說是發(fā)展到全球最強(qiáng)原生分布式數(shù)據(jù)庫方隊(duì)也不足為過。
除了能輕松應(yīng)對雙11這種“超高壓”場景,在全球權(quán)威的性能測試TPC-C上,也是獨(dú)占鰲頭。
國產(chǎn)原生分布式數(shù)據(jù)庫打破了巨頭Oracle、IBM等集中式數(shù)據(jù)庫,長期壟斷全球數(shù)據(jù)庫的局面。
2019年,OceanBase以6088萬tpmC的在線事務(wù)處理性能創(chuàng)造了世界紀(jì)錄,終結(jié)了Oracle九年的霸榜。
而時(shí)隔僅1年,又以7.07億tpmC的成績,刷新了自己的紀(jì)錄。
……
但誰又能想象,就是這樣“功成名就”的數(shù)據(jù)庫,它的起點(diǎn)卻是一個(gè)小小的“收藏夾”呢。
故事還要從2010年開始講起。
在這一年,OceanBase在淘寶正式立項(xiàng),但當(dāng)時(shí)的情況是卻是“一無所有”。
但唯有一點(diǎn)是貫穿至今的,那就是它要走的路線——分布式系統(tǒng)。
簡單來講,就是把大活變成多個(gè)小活一起來搞。
而關(guān)于路線的確定,就不得不提一個(gè)人了,OceanBase創(chuàng)始人陽振坤。
在他看來,分布式系統(tǒng)就是數(shù)據(jù)庫的未來:
相比于集群等已有的模式,分布式系統(tǒng)具備更“抗壓”、“無限大”等優(yōu)勢。
項(xiàng)目和路線是確定了,但技術(shù)嘛,“實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”。
但這也成了OceanBase邁出第一步的最大阻礙——沒人敢用。
即便陽振坤和小伙伴們,像銷售一樣“地推式”地去推廣,依舊是無濟(jì)于事。
當(dāng)時(shí)的淘寶雖然在使用Oracle等數(shù)據(jù)庫時(shí),面臨著瓶頸問題,但當(dāng)時(shí)已經(jīng)做出了“拆分”這樣的應(yīng)對措施。
加之還要MySQL的加持,基本上平穩(wěn)運(yùn)行是沒有問題。
在這節(jié)骨眼上,換誰想從頭折騰一遍,又有誰敢承擔(dān)其中的風(fēng)險(xiǎn)呢?
但淘寶的收藏夾,卻成為了重要轉(zhuǎn)折點(diǎn)。
因?yàn)楫?dāng)時(shí)收藏夾團(tuán)隊(duì)的一個(gè)需求,無論是Oracle或者其它數(shù)據(jù)庫,都沒有辦法解決。
簡單來說,就是商品信息在發(fā)生變更的時(shí)候,“收藏夾數(shù)據(jù)庫”和“商品數(shù)據(jù)庫”中對應(yīng)的兩張表,需要做一個(gè)join的操作。
但以當(dāng)時(shí)無論何種技術(shù)來看,開銷著實(shí)過大。
而陽振坤團(tuán)隊(duì)卻說:I Can!
收藏夾團(tuán)隊(duì)選擇信任陽振坤和他的團(tuán)隊(duì),讓他們放手一搏。
最終,憑借著分布式系統(tǒng)的優(yōu)勢,收藏夾在“換骨”之后安全度過了當(dāng)年的雙11。
雖說首戰(zhàn)告捷,也算是打出了一點(diǎn)名氣,但不敢換數(shù)據(jù)庫這事,依舊還沒有得到解決。
于是,當(dāng)時(shí)任職阿里巴巴CTO的王堅(jiān)做出了一個(gè)重要決定——把OceanBase調(diào)入支付寶。
但在支付寶,畢竟涉及到的是金錢相關(guān)的問題,絕不容出任何差池。
雖然陽振坤團(tuán)隊(duì)喊出“要替換掉Oracle”的口號(hào),但同時(shí)也直接被質(zhì)疑:
你怎么保障一分錢都丟不了?
對此,陽振坤采用了“副本”的策略(上文中提到的能力之一)。
而當(dāng)時(shí)的螞蟻集團(tuán)CTO魯肅,將當(dāng)年雙11的1%的流量交給了OceanBase。
但有意思的事情發(fā)生了。
在雙11之前的壓力測試過程中,身負(fù)99%流量的Oracle一蹶不振,bug層出不窮。
每次超過90%這個(gè)門檻,就會(huì)出現(xiàn)問題;但OceanBase在自己“一畝三分地”的表現(xiàn)卻出奇的穩(wěn)。
于是,魯肅也算是背水一戰(zhàn),決定讓OceanBase負(fù)責(zé)的流量,從1%升到了10%。
最終,OceanBase沒有辜負(fù)厚望,順利幫助支付寶度過了當(dāng)年的雙11。
而截至當(dāng)時(shí),OceanBase的版本才迭代到0.5。
就這樣,OceanBase用一次又一次的行動(dòng),證明了自己的價(jià)值,證明了分布式數(shù)據(jù)庫的正確性。
時(shí)至今日,OceanBase已經(jīng)進(jìn)入第12個(gè)年頭了,陽振坤當(dāng)年喊出的口號(hào)也已成真:
支付寶所有數(shù)據(jù)庫,均已替換成OceanBase!
……
若是從OceanBase的發(fā)展歷程來看,大致可以把它分為三個(gè)階段:
1.0時(shí)代(2010-2014):是“堅(jiān)定走向分布式架構(gòu)”的時(shí)代,包括發(fā)布了新一代分布式引擎、實(shí)現(xiàn)海量存儲(chǔ)低成本、處理準(zhǔn)內(nèi)存引擎高性能業(yè)務(wù)。
2.0時(shí)代(2016-2019):是“原生分布式數(shù)據(jù)庫”的時(shí)代,實(shí)現(xiàn)了永遠(yuǎn)在線,突破容量限制無限擴(kuò)展,突破地域限制單機(jī)到城市級容災(zāi)能力。
3.0時(shí)代(2020-2021):是“混合引擎、混合部署”時(shí)代,內(nèi)核架構(gòu)全面升級,打破邊界,同時(shí)支持TP和AP、混合云部署。
而到了現(xiàn)在,OceanBase要做的還有“走出去”。
第一層,是走出阿里巴巴,而且是最具挑戰(zhàn)、最具難度的金融業(yè)務(wù)。
例如,OceanBase通過它高可用的架構(gòu),已經(jīng)幫助一些銀行的核心系統(tǒng),實(shí)現(xiàn)兩地三中心容災(zāi)。
不僅實(shí)現(xiàn)了跨地域無損容災(zāi),還提升了快速適配開發(fā)的能力。
第二層,是走出國內(nèi)。
畢竟在數(shù)據(jù)庫界有句話,叫做“能處理金融行業(yè)的數(shù)據(jù)庫,其它場景都能處理”。
OceanBase確實(shí)也做到了如此,已經(jīng)涉足國內(nèi)多個(gè)行業(yè),幫助提升數(shù)據(jù)庫質(zhì)量,完成數(shù)據(jù)化轉(zhuǎn)型。
而目前OceanBase也在把目標(biāo)慢慢向國外發(fā)展,在更大的舞臺(tái)、更強(qiáng)勁的對手較量。
最后一層,是走向開放。
截止到上個(gè)月末,OceanBase開源版本已經(jīng)發(fā)布了140余天。
就在這短短的時(shí)日里,它的開源社區(qū)已經(jīng)累計(jì)了21000多用戶,斬獲4200+ Star。
不僅兼容MySQL,還提供越發(fā)開放的接口、部署工具、遷移工具和數(shù)據(jù)庫運(yùn)維工具供使用。
同時(shí)在人才培養(yǎng)方面,與高校合作開設(shè)課程、出教材、辦比賽,還完成了1000多的人才認(rèn)證。
……
這,就是國產(chǎn)數(shù)據(jù)庫OceanBase的故事。
那么最后,站在這樣的一個(gè)時(shí)間點(diǎn),又該如何重估它呢?
套用主播們經(jīng)常用的一句話,或許就是——國貨之光吧。