tft每日頭條

 > 科技

 > 阿裡自研的分布式數據庫

阿裡自研的分布式數據庫

科技 更新时间:2024-07-24 13:17:15

對中國的電商公司來說,1萬億元GMV意味着什麼?

回到十年前,這個答案是:意味着他們要給IOE(IBM、Oracle、EMC)三家美國公司200億元采購費,而且是每年都要給。這筆錢甚至會超過他們自身當年所能賺取的利潤。

如果這件事真的發生,中國後來諸多巨無霸一樣的互聯網公司都會成為美國公司的打工人。

但是十年過去,現實并非如此,這一切都要從一位叫陽振坤的科學家說起。

很多年前,他曾追随老師王選院士打造激光照排。

現在他又創造了世界上第一個真正意義上的分布式數據庫OceanBase。

阿裡自研的分布式數據庫(幫助阿裡省了幾百個億)1

OceanBase創始人 首席科學家:陽振坤(花名:正祥)

一、一波三折的内部創業

事實上,OceanBase從在阿裡立項之日起,就面臨着夭折的危機。

陽振坤對雷峰網說起這事,隻是腼腆地笑着,操着稍帶湖北口音的老家話,言語不緊不慢。

但是,他很清楚這件事的重要性:“如果當時,我們沒有做OceanBase,後來的其他公司要做數據庫就隻剩一條路,就是‘穿馬甲’——把開源的東西拿過來,改成自己的‘馬甲’,然後去做。”

在阿裡之前的戰略會上,“去IOE”這個戰略方向曾經得到阿裡首席技術官王堅博士的堅持,前文200億元的說法就是他算出來的。

阿裡自研的分布式數據庫(幫助阿裡省了幾百個億)2

阿裡巴巴集團技術委員會主席 王堅(花名:博士)

阿裡前CEO衛哲為雷峰網回憶過當日場景。

王堅為增加說服力,甚至拉上了已經退休的CTO吳炯,讓他從技術的角度談了亞馬遜和谷歌的情況,作為整體鋪墊;然後自己再從财務的精算,把1萬億元GMV折算成數據量,再折算成需要的IBM小型機數量、Oracle數據庫量、EMC存儲數量,最後換算成具體價格相加。

王堅算完之後,阿裡執委會的所有人都服氣了,算是從高管層面解決了這個問題。(當日現場讨論非常精彩,細節請看《沸騰十五年》修訂版。)

但是,光說服上面的人是不夠的,下面的執行者都是Oracle、EMC工程師,“去IOE”其實就是砸他們的飯碗,他們怎麼會支持呢。

在陽振坤開啟OceanBase項目之時,他聽到的負面的、否定的聲音,遠多于支持的聲音。

作為創新者,逆風而行是必須要承擔的代價,如果不能到達彼岸,就會摔在地上,聽到鋪天蓋地的讪笑。

兩年,這是阿裡給陽振坤的期限,也是阿裡高管們能為他頂住壓力的時間。兩年内做出成績,公司全力支持;做不出成績,就隻能卷鋪蓋走人。

背着這樣的壓力,陽振坤帶着OceanBase團隊出發了。

陽振坤想做的體系是原生分布式數據庫。如果成功,OceanBase将有機會幫助企業構建新一代的核心系統。

在OceanBase之前,以Oracle為主導的巨頭們使用的都是“集中式數據庫”。如果将數據庫的處理能力和容量類比為“馬拉車”,集中式數據庫的解決方案是把“馬”做大,讓單機實力更加強勁,帶動數據的存儲和處理。

但集中式數據庫也存在問題。一方面,誕生于數十年前的集中式數據庫太老,很難應對指數級增長的容量需求。當“馬”的增長很難跟上“車”的速度,那麼系統的崩潰就隻是時間問題。企業仍然可以通過加大金錢投入,來增加數據庫的能力,但成本卻也将大大提升。

另一方面,集中式的數據庫應對風險的防控能力很差。如果集中式數據庫中的一台機器出現故障,那麼整個系統都可能面臨崩潰的風險,牽一發而動全身。

既然獨木難支,為何不“衆人拾柴”?本就對分布式頗有研究,陽振坤想到,可以動用許多“小馬”,一起來拉動這輛“大車”。

這就是原生分布式數據庫OceanBase靈感的來源,而在2010年,世界上都沒有人提出過這種思路。陽振坤振臂一呼,可以說是“前無古人”。

相比傳統的集中式數據庫,分布式數據庫可擴展性更強。面對飛速增長的需求,OceanBase不依賴單機,可以做到簡單、便宜的擴容。同時,原先的小型機一台也要幾十上百萬,在OceanBase分布式的構想中,便宜的單機也可以拿來做服務器,從幾十萬到幾萬,OceanBase比Oracle便宜了不止一點半點。

分布式數據庫容災性也更強。由于OceanBase“不把雞蛋放在一個籃子裡”,當體系中某個單機出現問題時,數據庫仍然能夠穩定運行。“三地五中心,同城三機房”,螞蟻的體系如此設計,隻要大多數設備不同時宕機,系統的運行就不會受到影響。

HTAP(混合事務分析處理),這是OceanBase的又一大利器。

數據庫的功能大緻可以分為兩類——OLTP和OLAP。

OLTP指“在線事務和交易處理”,也就是“記賬”。買家的每一筆支出、商家的每一單銷售,在平台上産生的每一條數據都要分門别類記載清楚。

OLAP指“在線分析處理”,也就是“數據分析”。分析用戶偏好、分析運營數據等能力都位列其中。

數據庫的用戶既有“記賬”的需求,又有“分析”的需求,但這兩種需求卻通常需要以兩個不同的數據庫系統來分别滿足,市場上少有可靠的、一站式的解決方案。操作兩種系統,成本和難度自然更高。

如同左腦和右腦,“記賬”和“分析”是兩種不同的數據處理方式。“記賬”需要實時與系統交互,數據要“逐行”存儲;而分析則需要縱向對比,數據要“逐列”存儲。

OceanBase做的,就是把“左腦”和“右腦”合并了起來,形成了一站式的解決方案。方便,而且便宜。說起來簡單,将“行存”和“列存”做到一起并非易事,而分布式的架構設計又為HTAP模式提供了技術上的可行之處。

體系設計雖好,但實話說,2年真的不太夠用。

OceanBase在頭兩年的成果難說讓人滿意,陽振坤自然深知這一點。在2012年底的時候,功能還有許多沒能實現,團隊也不夠完備。在産品的第一關,OceanBase就輸了。

缺乏業務也是OceanBase遇到的又一個難題。阿裡内部的各業務群也當然并非“一心同體”,業務老大們要背自己的業務指标,總部做決定也要考慮到他們的利益,數據庫是底層系統,不能強制他們“說換就換”。在部門牆之下,OceanBase初來乍到,還沒有與各業務部門建立起信任感,隻能自下而上地“推銷”自己的産品,自然事倍功半。

眼見2年之期将至,OceanBase面臨着随時可能被公司關停的狀況。

内外交困下,陽振坤還是獲得了第二次機會。

傳說中,還是陽振坤特意飛去杭州阿裡總部,找到了他在微軟的老同事王堅。王堅時任阿裡CTO,當時也是他在阿裡雲最難的時候。他深知陽振坤在阿裡從事科研的難度,也能看到OceanBase在未來數據庫競争中的潛力,于是在和相關領導協商後,發下了一紙調令。

不久後,OceanBase就被調整到了支付寶體系下。

但問及這段時間,陽振坤心中第一個想到的是現任阿裡的CTO程立,花名魯肅。在陽振坤和團隊來到支付寶後,作為阿裡技術人心中“神一樣的人物”,魯肅也看好原生分布式數據庫的前景,于是幫助陽振坤在支付寶站穩了腳跟,這也為OceanBase在日後的崛起埋下了伏筆。

阿裡自研的分布式數據庫(幫助阿裡省了幾百個億)3

阿裡巴巴CTO 程立(花名:魯肅)

二、2014,逆襲的号角吹響

2014年,在支付寶,陽振坤和OceanBase終于等到了千載難逢的機會。

當年,雙十一的交易量預期又将創下紀錄。面對又一次大考,支付寶内部的數據庫工程師如臨大敵,又如火如荼地開始了數據庫跑量的壓力測試。

大敵當前,陽振坤和他的團隊卻還在坐冷闆凳。多次主動請纓,支付寶卻僅讓OceanBase承擔1%的業務流水。又是一年的失望,屬于OceanBase的翻盤點似乎還遙不可及。

前文也提到了,OceanBase的功能和結構都比Oracle要強勁很多,為什麼支付寶沒有全面推廣OceanBase應用呢?

IOE體系就是數據庫界的PUA。你明知它貴,你明知它不好用,你明知有更便宜、便捷的解決方案,但你願意相信它。在ToB生意裡,信任最為難能可貴。

“你如何保證OceanBase不弄丢支付寶用戶的一分錢?”魯肅的這句話也曾問懵過陽振坤。

IOE雖然種種不好,但IOE勝在穩健。許多技術負責人不願用新的技術和産品,用老産品出問題可以怪産品,用新産品出問題就隻能怪自己了。

歸根結底,沒信任就沒有使用,沒有使用也就沒有信任。OceanBase就在這樣一個死循環裡苦苦掙紮。

就在OceanBase的未來仍不明确的時候,一個“壞”消息傳來:Oracle崩了!

原來,在跑量測試時,一直在螞蟻内處于主導地位的Oracle竟然屢次崩潰,可承壓能力僅有預期的90%。

已經顧不上OceanBase是否可靠,在這時行不行都得上。技術團隊不得不做出了一個艱難的決定:緊急啟用OceanBase。

雙十一的流量逐年都在增加,集中式的Oracle總會有一天跌落神壇。陽振坤早就在等着這一天,OceanBase逆襲的機會來了!

于是OceanBase臨危受命,接下了支付寶2014年雙十一10%的流量。

這是機遇,可又何嘗不是重于泰山的壓力?陽振坤深知,他和他的團隊但凡出了一點差池,那麼他和OceanBase在公司裡就将永遠失去信任,再沒人敢用。哪怕後面能夠給業務帶來好處,也無濟于事。

這一仗,OceanBase隻許成功,不能失敗。

雙十一前夜,OceanBase全員枕戈待旦。螞蟻集團的CEO彭蕾(花名Lucy)先前在阿裡内部任首席人力官,知人善用。她連夜來到了OceanBase的辦公室,既是動員,也是督戰。

變動如此巨大,難說彭蕾的心裡沒有忐忑。她問陽振坤有沒有信心,陽恰好站在窗邊。他推開窗子,杭州11月已經開始轉冷,辦公樓下路人行色匆匆。陽振坤知道,他和OceanBase的前途全部取決于此,他說:

“出了問題,我們準備從這跳下去。”

7年後,OceanBase早已成為了國産數據庫中的“頭馬”。談及此事,陽振坤隻說是個玩笑。而當年的壓力、忐忑和“不成功便成仁”的決絕,都如同過眼雲煙,成為了多年之後的笑談。

三、開源——OceanBase的夢想、挫折和救贖

開源是許多程序猿的浪漫。

盡管在外界看來十分令人不解——把自己辛苦寫的代碼免費向社會公開,但OceanBase還是堅決地選擇了開源。

抛開技術人的理想主義,OceanBase之所以選擇開源,有如下這3大原因:

一方面,數據庫需要跑量。在足夠的測試與反饋的過程中,數據庫才能發現運行問題,進行有機的調整。

OceanBase作為一個新概念的數據庫産品,自然急需實際的測試和驗證。開源,就是給了OceanBase不斷“打怪升級”的機會。

另一方面,剛剛提到過,信任對于數據庫産品來說是重要的壁壘,也是合作的基石。用戶要把數據委托給數據庫,幾乎是要把自己重要的“家産”托付出去。

OceanBase把自己的代碼和秘密全部公開,也是告訴用戶自己值得信任。基于這種信任,OceanBase也期望能形成自己的開源社區,擴大用戶群。

有人用,就有信任;有了信任,就有更多人用,也就自然能産生更多收益。

陽振坤有足夠的信心,即使OceanBase開源供公衆使用,他人也很難弄懂其中的奧秘和機理。前文也提到過,數據庫本就是一項極度複雜的工程。如同芯片一樣,即使能夠拿到成品,但難以對其進行反向工程。即使開源,護城河也在。

著名的數據庫MySQL開源20餘年,核心技術就仍然掌握在開發團隊的手中。這種技術壁壘映射到開源上,稱得上是一種數據庫的核心能力。

于是在2011年,當時還屬于淘寶體系的OceanBase第一次開源,而這次開源的經曆難稱圓滿。

這次開源對于OceanBase來說,頗有“趕鴨子上架”的意味。OceanBase在2014年前還是以單點寫入的模式為主,兩年後才正式完成了1.0版本。

而2011年為了迎合淘寶系統全面開源的潮流,也是技術人的一腔熱情,OceanBase匆匆宣布開源,而實際公開的隻是一個“半成品”。這個版本當時還以單點寫入為主,還完全不是團隊理想中的樣子。

而通過這次開源,另外一個問題也随之映射出來:OceanBase的定位究竟是什麼?究竟要做螞蟻業務的一個支持部門,還是一個通用化的工具?

做支持,OceanBase需要更多面向公司内部的需求。一些“量身定制”的需求,甚至可能超出常規數據庫的功能範圍。如果被這種需求牽着走,則很可能造成工期上的損耗,也容易把自己的路走窄。

陽振坤和團隊想做的,一直都是一個通用化的工具。但認知上的鴻溝,讓首次開源的OceanBase無法獲得業務團隊足夠的支持,開發團隊則要把主要精力投入到産品1.0版本的開發中,很難分出人手去維護開源版本的持續更新。

難說誰對誰錯,隻是立場不同。

無人可用,首次開源的OceanBase終于不再更新,而這次嘗試也終于不了了之。

而在這之後,潛心投入開發的OceanBase團隊終于見到了回報。

在支付寶内部,OceanBase逐漸全部接管了Oracle先前的“生意”。為了讓“去Oracle”的進程更加“絲滑”,OceanBase力求讓這個過程可以“不改代碼”。

2015年3月15日,陽振坤在他的微博上自豪地宣布:“從上周五開始,淘寶/天貓/聚劃算在支付寶上的交易,100%都在OceanBase上了。你可能沒有什麼感覺。”

一年後,OceanBase也終于全部接管賬務數據庫。在一次采訪中,陽振坤表示:“這……是标志着,OceanBase真正地在金融系統裡面站住了腳。”

取得了如此斐然成績,在阿裡内部也是拿獎拿到手軟,但陽振坤和團隊的志向卻不願意在此止步。又過了一年,憑借着支付寶成功案例的光鮮背書,OceanBase首次對外商用,第一個客戶就是南京銀行。

阿裡的高層們也終于看到了OceanBase原生分布式數據庫的優勢,看到了既能做交易、也能做分析的HTAP模式颠覆行業的可能。他們正式同意OceanBase作為一個單獨的公司獨立運營,這也是OceanBase發展一個重要的分水嶺。

2020年6月1日,北京奧星貝斯科技有限公司正式成立。螞蟻集團前金融科技産品技術總監 楊冰任CEO,陽振坤任首席科學家,與他一起進入OceanBase創業至今的楊傳輝(花名:日照)任CTO。

不久,“出走”剛剛12個月的OceanBase再一次選擇了開源。在進行了數月工作文檔和代碼的梳理後,2021年6月,OceanBase再次向全網開源。

阿裡自研的分布式數據庫(幫助阿裡省了幾百個億)4

2021年6月1日 OceanBase正式開源

不同于遮遮掩掩式的“公關式開源”,OceanBase這次放了狠招:他們一次公開了自己全部内核。他們把心沉下來,隻想如何用開源的方式去滿足客戶需求。遵循指示,一個初學者可以在30分鐘内将OceanBase的數據庫完成裝配。

OceanBase做的是用戶價值,這是他們開源的重要理念。

從最早先屈指可數的幾個客戶,到今天400多家全行業的客戶;大到支付寶、網商銀行,小到占總比66%的小型企業,從螞蟻獨立出來的奧星貝斯仍然在幫助全社會的各行各業。

“讓天下沒有難做的生意”依然流淌在他們每個人的基因裡。

結語:

盡管已經年近花甲,陽振坤仍然沒有半點停滞的意思。在技術驅動創新的路上,OceanBase的目标是做“無限擴展、永遠在線”,意在創造一個不被擴展和故障所限制的數據庫系統,而這項成果則可能永遠地颠覆數據庫,乃至互聯網行業。

做技術的人大多是簡單的。陽振坤和OceanBase十餘年走來,風風雨雨,終于至今。有時他總能想起自己的老師,兩院院士王選,當代中國的“畢昇”,颠覆了中國印刷業的科學家。

33年前,陽振坤成為了王選的弟子。

那年,陽振坤22歲,青春寫意;王選52歲,也正是當打之年。而今天,王選早已溘然長逝,陽振坤也把自己三十餘年的青春獻給了科研。

當年,我憧憬你;今天,我仍在以你為燈塔前行。

陽振坤知道,和自己的恩師一樣,自己的這一生都将要獻給中國的科研事業,但他從沒有半分悔意,也沒有半分退意。

2022年1月,在由CSDN主辦、OceanBase承辦的DC 2021分布式數據庫開發者大會後,雷峰網采訪了陽振坤,并與他進行了一番深談。以下是我們整理的訪談實錄:

數據庫技術的發展曆程

雷峰網:我們知道技術在曆史中,發展都存在着不同的階段。數據庫也應該不例外,可以根據技術的突破劃分為幾個階段,您可以為我們回顧一下嗎?

陽振坤:在最開始,它其實是跟賬有關系。最早的數據庫叫層次數據庫,功能比較簡單。而也是因為其功能比較單一,大家有接觸大概幾年以後,就發明了一種網狀的數據庫。最大的代表其實就是 IBM 的這一套系統。

到了 60 年代末或者 70 年代的時候,關系模型橫空出世。曾經兩個這個圖靈獎的獲得者專門有一次是ACM(國際計算機學會)開大會,兩派的人争執不下:一派的人說這個未來一定是關系模型,因為關系模型有更強的表述能力。另一派說關系模型不實用。結構上的複雜性,會導緻性能會很差。

此後關于這個問題一直沒有定論。所以,關系模型從1970年發表,一直到整個70年代,其實都沒有過産品。

到70年代末80年代初,關系型數據庫才開始産品化。此後這個模式就一直被沿用,直到差不多互聯網之前。集中式,本質上是個單機的系統。一個很關鍵原因還是因為它太複雜。

雷峰網:為了解決這個難題,科學家做出了哪些努力?

陽振坤:對數據庫來說,它有一個特殊之處:人們很難用一個自然的語言,來操作數據庫。所以後來,就有人開發出了一種數據庫專用的語言,叫SQL(結構化查詢語言)。

這個SQL不是告訴數據庫幹什麼的,這個太難描述了;它告訴數據庫說我要什麼,你怎麼幹是你的事。

Oracle 算是最早的那批數據庫,就是 Oracle 、DB2,SQL Server,還有像對後面是 PGSQL 跟 MySQL。在之後的 20 多年的時間裡,都沒有如此體量的數據庫面世。數據庫到今天都是個非常大的挑戰,也導緻這麼多年格局大緻不變,一個新的數據庫的研發特别困難。

而互聯網時代,有許多很新的、完全不一樣的需求也随之而來。那我們OceanBase今天才有這機會。

分庫分表不是分布式數據庫

雷峰網:OceanBase将自己定義為“原生”分布式數據庫,這個“原生”要怎麼理解?

陽振坤:我會講一個很明确的觀點:分庫分表不是分布式數據庫。我們認為一個原生分布式數據庫,它是一個單一的數據庫,看起來像使用單台機器的集中式數據庫,能夠在一套數據庫裡面又做交易又做分析。分庫分表的話,它其實還是說在多個單機數據庫上面加了一個中間件。

但是這種方案它其實沒有辦法保證這多台數據庫之間的一緻性。舉個例子,第一個數據庫是我,第二個數據庫是你。我給你轉賬,有可能出現我給你轉出去了,但你沒有收到的情況。分庫分表式的數據庫有可能有這種情況,但我們的原生分布數據庫是沒有這種情況的。OceanBase保證強一緻的,是一個單一的數據庫,既能處理交易,又能處理分析。

雷峰網:OceanBase在支付寶體系下已經度過了許多個寒暑,應用OceanBase的前後,支付寶産生了哪些變化?

陽振坤:其實從2014年之後,公司就也看到了我們的業務價值,主要還是支付寶的數據庫體量太大了。就算你的硬件能做到盡量穩定,它最終也會出問題。少數幾台不要緊;你有幾百台,幾千台的時候它一定會出問題。同時集中式數據庫維護和維修的代價很大,工作人員要到最早的網關去把信息撈出來,來做對照。

那用了OceanBase之後,我們部署了三個副本。即使壞掉一台機器,剩下的機器保證還有正确的數據,就能夠自動的恢複。以前隻要主庫壞了,他們都得去做人工對賬。不管幾點壞的,工作人員都要在幾分鐘之内起來,否則系統裡,用戶看的數據就全不對了。但OceanBase可以做到系統自動,這台機器壞了,還有其他機器能工作,我們系統就可以繼續運轉。所以這一個對業務來講,給到很大的幫助。

這樣的體系對工作人員的舒适度就提升很多,以前隻要出問題,不管幾點都要來應急。現在的雙十一,工作人員已經有時間坐下來喝一杯茶了。這就是我看到最大的變化。

走出中國,做世界的數據庫

雷峰網:在當下,數據庫中國化的呼聲越來越高,咱們中國在整個國際的技術水平上來講,處于一個什麼樣的位置?

陽振坤:如果說分布式數據庫,我們應該是整個國際上都是走在領先地位的。這個也跟我們本身是“一窮二白”有關系。我們原來沒有集中式數據庫的多少基礎,發展起來與其跟别人在原來的賽道去競争,又有新的需求,我們還不如走到新賽道上。

反而是像美國現在它更多的精力是在集中式上面。我們對美國也算是一種“彎道超車”,或說是“跨代競争”。主要的原因在于說我們經常講一個概念叫應用驅動技術創新。和中國比人多、比市場規模,美國人比得過嗎?對不對?它是這麼去驅動出來的。

雷峰網:那以後将數據庫OceanBase向國外輸出肯定也是有可能的。

陽振坤:我覺得是必須的,我們幹嘛把自己隻圈在這一個市場裡呢?無論是在成本還是在能力上,我們系統能做的一些事情是現在的數據庫系統它做不到的。

但是,我們自身産品的發展也有個過程。國内現在有這麼大的市場,我們現在主要還在面向國内市場,吃透國内市場,同時完善OceanBase。

雖然什麼時候出海,我們還沒有具體可公布的規劃。但我相信,前景還是很光明的。

如何看待元宇宙和Web3.0的未來?

雷峰網:對于元宇宙、WEB3.0這樣的新興概念,您怎麼看?

陽振坤:我一大部分的時間,還是放在我們本身的産品和技術上。實話說,對元宇宙和Web3.0我真的不懂。

但要我說的話,其實數據庫它本身就是個基礎設施,你可以把它用在元宇宙上,用在真實的宇宙空間上,用在生産,用在娛樂,用在遊戲,随便用在哪兒上。

但元宇宙的大趨勢對我們可能是個利好。因為我們是這方面的能力是比較強的,就像說從雙十一一路走過來對吧?能夠給系統提供這麼大的處理能力的數據庫,我們應該是第一個。

其實你不管元宇宙還是其他的一些趨勢,數據總是以在往“大”的方向走,并發也在往“大”的方向走。元宇宙可能是說其中的一個驅動力稍微大一點的一個場景,他往分布式走這個趨勢我們覺得肯定是毫無疑問的。

談到Web3.0,整個數據庫從互聯網出來開始,數據庫就是整個互聯網的基礎,因為你在網上做任何事情的後台都需要有存儲和處理的功能。所以不管是web1.0、2.0或者3.0它的基礎之一其實就是,基礎的基礎就是數據化。

其實也就印證了一句話,分布式數據庫就是順應時代潮流的。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved