不做工程等于紙上談兵——對話OceanBase創始人陽振坤

          來源:CSDN博客 | 2022-03-23 17:21:58 |

          【CSDN 編者按】誰能想到,一個本科和碩士都在鉆研數學的人,會在后來做出世界上第一款原生分布式數據庫?在2010年以前,陽振坤自己也想不到會有一天和數據庫建立如此密切的關系,更想不到,往后十年是他職業生涯中非常艱難的十年。

          作者 | 田瑋靖? ? ? ?

          出品 | 《新程序員》編輯部

          “如果進不去,我們就錯過了支付寶‘去O’的機會,那么OceanBase再也沒有機會了。”

          面對采訪鏡頭,陽振坤淡然地訴說著那場生死之戰。而他口中的OceanBase數據庫,是從出生就不被看好的“孩子”,曾幾度站在生死邊緣。

          不做工程,紙上談兵

          生于1965年的陽振坤,不能完全說他和大多數人一樣。一樣的是小升初、初升高的學習軌跡,不一樣的是,他在1984年考上了北京大學。20世紀80年代,大學有多難考?據歷年高考數據統計顯示,1984年參加高考的人數為164萬,錄取人數為48萬人,錄取率29%。表面看,錄取率不低,實則僅約占同齡人的0.0179(據歷年出生人口數據,1965年出生人口為2679萬人)。相當于100個人里,只有1個人能考上大學,在那個大多數人只能維持溫飽的年代,又有很多人因為交不起學費而放棄學業。因此,能夠上高中已是“百里挑一”,考上大學更是被稱為“天之驕子”。

          在本科和碩士研究生期間,陽振坤不僅鉆研數學,也學習了很多計算機的基礎課程,研二參與了北大計算機研究所的項目研發。興趣使然,他在博士研究生期間,選擇了計算機方向。畢業后留校任教,并被破格提升為副教授、教授,時年32歲。

          事業順風順水之際,陽振坤選擇離開學術界,進入產業界。或許是受其博士導師王選院士(中國科學院院士,中國工程院院士,計算機漢字激光照排技術創始人)的影響,陽振坤覺得“不做工程,等于紙上談兵”。其先后任職于聯想研究院 、微軟亞洲研究院、百度等。?

          到此為止,陽振坤的前45年,都跟數據庫搭不上邊。

          做一個“大飛機”

          彼時的百度、阿里巴巴、騰訊(俗稱“BAT”)這三大互聯網巨頭,只有阿里巴巴(以下簡稱阿里)看好云計算。陽振坤作為云計算方面的專家,是阿里急需的高端人才。在阿里合伙人劉振飛的邀請下,陽振坤于2010年 5月12日加盟淘寶網。從淘寶網的內部任命郵件中,足以見得其對陽振坤的愛重:“陽博士是我們期待已久的人才,在系統設計和實現、海量信息處理、算法設計等諸多方面都有著非常豐富的經驗。深信陽博士和團隊通力合作,一定能為淘寶網打造一個高性能、高可靠、低成本、面向大流量大規模電子商務的專用計算平臺,為支撐‘十億消費者,十萬億交易額’提供所需要的基礎技術。”

          可他偏偏放著似錦前程,選擇了一條最艱難的路——自研分布式數據庫。

          其實,早在微軟亞洲研究院工作時,陽振坤結識了如今的阿里云創始人王堅,并接觸了分布式系統,二人都非常看好分布式系統。進入淘寶之前,陽振坤在家待了一個月,期間就在思考下一步要做事情。用他的話說,“當時有一個大致的思考,到淘寶也不確定能不能做這件事,但是有機會。”

          彼時,集中式數據庫獨霸天下,代表產品如美國甲骨文公司的Oracle數據庫,更是獨領國際市場,阿里便是其在中國最大的客戶。而互聯網的廣泛商用、云計算、大數據、物聯網、區塊鏈、人工智能等技術的興起,加速了移動互聯網的到來。在人與人更便捷的互聯互通、社會更加智能化的背后,是對業務系統越來越頻繁的并發訪問、越來越龐大的數據處理量。集中式數據庫昂貴的成本及其存儲和計算極為有限的擴展能力都顯得捉襟見肘。

          集中式數據庫的本質是單機數據庫,在互聯網日均流量上百億破千億的環境下,單機數據庫的存儲能力都極其有限,更談不上如何分析、處理數據。受限于分布式數據庫更加復雜、故障定位更加困難、分布式事務性能有所降低、系統成熟度有所不足等因素,傳統數據庫廠商選擇了“分庫分表+中間件”的解決方案,即基于集中式數據庫,對業務進行較大幅度地改造和拆解、拆分,使每個拆解、拆分后的部分適合于單個集中式數據庫,這就是分庫分表數據庫。這種方式其實是把原來在一個數據庫中的大業務拆分為多份小業務,陽振坤稱之為“沒有大飛機,就分成多份,用小飛機來運”,但如果是重裝備、重武器如坦克大炮,小飛機裝都裝不下。因此,這終究不是徹底解決問題的辦法,而且面臨高額的成本和繁雜的運維。

          陽振坤意識到“機會來了!”于是立項,“方向和目標是明確的”。盡管分布式聯機事務處理的開發非常復雜和困難;盡管分布式數據庫在SQL優化器、存儲架構等方面門檻極高;盡管這個分布式數據庫需要長時間的、大量的實際場景打磨;盡管分布式架構與關系型數據庫結合,沒有任何可參考的先人經驗,

          “我們要做一個大飛機,不管你有多大的業務量,都能用分布式數據庫這個大飛機給你運走”。當系統容量不受限制的時候,一定能做更多的事情。這是陽振坤當時唯一確定的事——價值。

          陽振坤的做事方式是“把事情想清楚再做,做到哪算哪就麻煩大了”,只確定目標,如何行動依然是問題。好在做分布式數據庫需要哪些功能,其實不用發愁,有現成的如MySQL、Oracle等成熟的開源和商業數據庫,功能早就定義好了。也就是說,創建分布式的環境,用多臺機器,參考成熟數據庫已有的功能列表,實現分布式數據庫。

          但對于數據庫這種基礎軟件而言,尤其是與傳統集中式數據庫架構完全不同的、新型的分布式數據庫,絕不是把架構搭建好、代碼寫出來就能應用在業務中的。而是得從一個個具體的業務開始,針對它做基礎功能,滿足其基本業務需求,然后一步一步將數據庫做大、做強。因此,只有找到業務需求帶來的機會,切入進去,并且落地,就有機會活下來。

          一定要“活下來”

          說起來容易,做起來難,陽振坤要做的分布式數據庫,是個“難產兒”,根本找不到業務。

          好在當時出任OceanBase項目負責人的楚材是淘寶老人,他帶著陽振坤走遍了淘寶各個業務技術團隊,幾天后,終于在淘寶收藏夾這個業務團隊找到一絲的機會。

          為什么淘寶收藏夾愿意試水?“收藏夾是一個比較特殊的需求,到現在為止,我們也不知道有什么更好的方案能解決它的問題。”收藏夾給淘寶用戶提供的服務是,一個人可以收藏上百條、上千條自己感興趣的商品,商品的信息變化如降價、下架等都需要及時更新,以便用戶掌握商品動態。每次用戶打開收藏夾,后臺系統都要查詢數據庫成百上千次,獲取每個商品的最新信息,這對于數據庫來說,相當于幾百萬、幾千萬的人在讀取數據,再乘百千次的讀次數。如此高頻的數據處理量,幾乎沒有什么數據庫能夠扛得住,經常被用戶投訴“沒反應”“打不開”。

          “我們做了一個比較特殊的架構,后來發現這個架構有非常大的價值”,陽振坤欣喜地說道。簡單來講,商品信息修改不會直接寫進硬盤,而是暫存在內存中,每次用戶收藏夾展示的時候,只需要從內存中獲得修改后的商品信息。相當于將收藏夾原來的成百上千次I/O(輸入/輸出)變成了一次I/O,原計劃需要擴容至數百臺機器,現在也只需20多臺機器就能解決問題。這極大地減少了機器數量,降低了成本,增強了業務穩定性,初步證明了OceanBase的生存價值。

          然而,好景不長,在2011年收藏夾上線之后,整個2012年OceanBase都沒有找到第二個價值如此顯著的業務。陽振坤直言“2012年真有點做不下去了。”

          因此,2012年的唯一目標就是,活下來。

          頂著團隊隨時可能解散的壓力,陽振坤找到時任阿里巴巴首席架構師的王堅,吐露難處。而后經王堅推薦,在2012年11月15日,OceanBase團隊從淘寶調到支付寶。因為支付寶業務是跟錢打交道,對數據的一致性要求更高,所以希望在支付寶業務找到機會。陽振坤知道“如果在支付寶再找不到機會,就完蛋了。”?在“人生地不熟”的新團隊,他們一邊熟悉人,一邊摸索生的機會。

          幸運的是,OceanBase團隊遇到了一位開明的領導人,時任支付寶技術負責人的程立(花名魯肅,現任阿里集團CTO),他對新技術持鼓勵、支持的態度。恰逢七、八月份的時候,支付寶開始討論怎樣“去O”,即替換Oracle數據庫(早在2009年,阿里巴巴就提出了“去O”)。但面臨的極大難點在于,如果不用Oracle數據庫,不用共享存儲,選擇類似MySQL這樣單機數據庫,數據丟了怎么辦?在金融領域,這是無法接受的后果。而繼續使用Oracle數據庫,對于業務數據量、數據并發量都巨大的阿里業務,所要付出的軟、硬件成本是無法估量的高昂。

          陽振坤胸有成竹地說“我們有辦法解決這個事”。這個辦法就是如今被廣泛應用的三副本,每一筆事務在3個節點或者5個節點上同時做,超過半數成功即認為成功。舉個例子,三臺機器中壞掉一臺機器,剩下兩臺機器至少有一臺機器的數據是正確的,以此方法解決替換Oracle的核心問題,即放棄共享存儲之后數據損壞、丟失的問題。

          OceanBase 0.5版本由此誕生,也為OceanBase開辟了一條生路。

          但陽振坤明白,這只是給了OceanBase一個證明自己的機會。從提出解決方案,到0.5版本正式發布,用了7個月左右的時間。另一邊,業務團隊卻很難一下子接受OceanBase數據庫。首先,這個版本沒有經過其它業務的驗證就應用到核心業務,是否可行?讓OceanBase數據庫支撐支付寶的交易庫,處理交易流水數據,業務團隊很難放心。其次,OceanBase技術方案要求三個機房,需要在原有的主、備機房的基礎上,再增加一個機房,而當時除了杭州,阿里和支付寶在其他城市都沒有三個或以上的機房。

          為此,雙方幾次三番激烈地爭論。對于OceanBase數據庫來講,這是一個生死之戰,如果不抓住這次落地機會,不僅是錯過支付寶“去O”的歷史性機會這么簡單,而是OceanBase數據庫再也沒有機會了。所以OceanBase團隊當然是極力爭取,另一邊,業務團隊也保持非常謹慎的態度,雙方僵持不下。

          最后還是魯肅出面說服業務團隊,便有了OceanBase數據庫分流1%的機會,如果出問題,1%的流量會被隨時切走。回想此事,陽振坤的態度是“我們的運氣不錯”。2014年“雙11”前,大抵是9月底或10月初,業務團隊開始為“雙11”的支撐做壓測,由于流量非常大,已經超出Oracle數據庫的預定容量,超出系統的I/O能力,系統大量報錯。

          由于時間緊張,臨時買設備,手提肩扛服務器再次擴容已經來不及。業務團隊想起壓測時支撐1%流量的OceanBase數據庫,找到陽振坤說“給你們10%的流量能不能撐得住?”OceanBase團隊當然高興了:“別說10%,就是100%都可以支撐得下來”。甚至在“雙11”當晚的作戰室,面對時任螞蟻金服CEO彭蕾(現任螞蟻集團董事長)的擔憂,陽振坤說出了不成功就跳窗的玩笑話。

          結果很順利,這一戰也基本確定了OceanBase數據庫在支付寶的地位。用OceanBase數據庫替代Oracle數據庫之后,單副本數據可以做到原來的1/7,其計算資源投入也降低為原來的1/12,僅存儲一項,就比Oracle數據庫節省了約20億元,相當于每賬戶成本節省了90%。

          此后的路便順風順水,2015年替換Oracle數據庫支撐支付寶的支付系統;2016年OceanBase 1.0版本發布,由原來的半分布式數據庫升級為真正的分布式數據庫,并于同年替換Oracle數據庫支撐支付寶的賬務系統,實現了螞蟻集團的“去O”目標;2017年走出螞蟻集團,對外商用。

          而在對外商用之前,陽振坤要回答一個很關鍵的問題:別人為什么一定要用OceanBase數據庫?

          正如前文所述,大飛機比小飛機有價值,但如果別人有小飛機就夠用了,憑什么花費工夫替換一個大飛機?

          利益是永恒不變的,對于一個初出茅廬的新事物,只有提供足夠的價值,才能生存。目前絕大部分的數據庫產品分為交易系統和分析系統,兩套系統的體量和成本都是巨大的。在業務場景中,兩套系統往往也會有延遲。如果用一套數據庫,既做交易處理,又做分析處理,就能解決成本和實時同步的問題。陽振坤非常確定,“如果這件事情做成了,極有可能是對整個行業的顛覆,而且這件事情肯定可以做成。”這便是后來引發行業熱議的HTAP(Hybrid Transactional and Analytical Process,一體化事務和分析處理)。

          未來取決于此

          都說不被看好的孩子反而更有出息,2019年,OceanBase數據庫打破Oracle數據庫保持了9年的TPC-C(在線事務處理基準測試)世界紀錄,成為中國首個登頂該榜單的中國數據庫產品;2020年,OceanBase數據庫再次創下7.07億TPC-C的性能記錄,牢牢占據了榜首位置;2021年以1526萬QphH的性能打破TPC-H(數據分析型基準測試)世界紀錄(目前排名第二);同年OceanBase數據庫在螞蟻集團的支持下,宣布成立北京奧星貝斯科技有限公司,并再次開源。

          為什么是“再次開源”?早在2011年,OceanBase 0.2版本就已開源,但在0.4版本后,OceanBase數據庫開源中斷了更新。這是因為從當時螞蟻集團的視角看,OceanBase數據庫主要是支撐螞蟻集團內部的業務,為淘寶、天貓、支付寶等業務服務,OceanBase團隊忙于“活下來”而無暇開源事務,所以2013年后, OceanBase數據庫開源停止了更新。直到2021年,擺脫所有顧慮的OceanBase更加堅定地擁抱開源,將存儲引擎、SQL引擎、分布式引擎、分布式事務、多副本、高性能、擴展能力、優化器、故障恢復、多活容災等核心技術及代碼對外開源分享。?

          面對業界對其開源動機的聲聲質疑,陽振坤在《曾被“霸凌”的兩個孩子:電動汽車與分布式數據庫》一文中,引用《硅谷鋼鐵俠》這本書中對馬斯克開放特斯拉專利的描述,借喻OceanBase開源系統核心的原因。“當馬斯克在2014年宣布特斯拉將公開其所有專利時,分析師們試圖確定他是不是在作秀或者其中是否隱藏了不明動機或者圈套。但馬斯克的決定就是這么坦率,他希望人們制造并購買電動車。馬斯克認為,人類的未來取決于此。如果公開特斯拉的專利意味著其他公司能夠更容易地制造出電動車,那么這對人類來說是有利的,這些理念應該是免費的。憤世嫉俗的人一定會嘲笑他的觀點,但馬斯克已經計劃好這么做,他在解釋自己的想法時是真誠的,而且極為真誠。”

          顯然,陽振坤認為,原生分布式數據庫是數據庫發展的必然選擇,數據實時處理的未來取決于此。陽振坤也希望出現更多真正的分布式數據庫產品,這從國產數據庫的角度,有望實現“去IOE”,讓更多中國數據庫走向國際市場,站在更高的角度,這對數據庫生態的發展和科技的進步是有利的。

          尾聲

          如今,OceanBase數據庫已積累400多個外部企業客戶,涵蓋銀行、證券、能源、電力、社保等眾多重要行業,且沒有一家企業后悔使用OceanBase,想換掉它,即便OceanBase用一套系統進行交易和分析處理的功能還在走向成熟。

          陽振坤實現了他多年的目標——做一款真正的分布式數據庫。

          當被問到職業生涯中,做OceanBase數據庫是不是最難熬的,以及團隊面臨解散是否想過放棄時,陽振坤的回答讓我們看到了他的堅韌。“是比較難熬,很多時候,你不能把握自己的命運,你知道一件事情是對的,但你想讓其他人相信它,是很難的。所以做OceanBase數據庫的過程中,我認準一點,只要這個項目沒有被‘槍斃’,咱就做,放棄也沒好處對吧?如果有一天被‘槍斃’了,咱也沒招對吧?反正只要能做下去,我們就做下去。”

          陽振坤,OceanBase分布式關系數據庫創始人,畢業于北京大學數學系和計算機系并獲得本科碩士和博士學位后留校,先后破格晉升副教授和教授,1999年成為首批長江學者。曾獲得國家科技進步一等獎(排名第四),北京市科技進步一等獎,第六屆中國青年科技獎,第一屆中國科協求是杰出青年獎,北京市五四青年獎等,并有20多項第一發明人的發明專利。

          本文為《新程序員004》內容,與OceanBase創始人陽振坤暢談他的程序人生。《新程序員004》即將上市,敬請期待。從MySQL之父、MariaDB創始人 Michael "Monty" Widenius,到PostgreSQL全球開發組聯合創始人Bruce Momjian、阿里巴巴副總裁賈揚清、指令集創始人兼 CEO潘愛民、著名科技作者吳軍,再到 Vue.js 作者尤雨溪……《新程序員004》以「我們的技術時代,我的程序人生」為主題,與多位國內外知名的技術先鋒和新生代程序員代表進行了深度對話,希望行業優秀人物的技術之路與人生感悟給大家帶來啟發。

          《新程序員001-004》全面上市,對話世界級大師,報道中國IT行業創新創造

          — 推薦閱讀 —

          ?稱釘釘將上線“下班勿擾”功能;蘋果發生大規模網絡宕機;.NET 7 Preview 2發布|極客頭條?速度是 macOS 的兩倍?首個支持 M1 Mac 的 Linux 發行版終于出現!?Secure DevOps!探真科技2022云原生安全產品發布會圓滿落幕

          一鍵三連 「分享」「點贊」「在看」

          成就一億技術人

          關鍵詞: 紙上談兵

          亚洲综合精品伊人久久| 亚洲av综合色区| 亚洲精品无码成人| 亚洲国产三级在线观看| 亚洲妇女水蜜桃av网网站| 亚洲性久久久影院| 亚洲xxxx18| 亚洲妇熟XXXX妇色黄| 亚洲?V乱码久久精品蜜桃 | 国产精品高清视亚洲一区二区 | 美腿丝袜亚洲综合| 中文字幕亚洲码在线| 久久亚洲精品国产精品婷婷| 亚洲乱码在线卡一卡二卡新区| 精品亚洲国产成人| 亚洲中文字幕无码久久2020| 亚洲日韩中文字幕一区| 亚洲欧洲校园自拍都市| 亚洲国产精品网站久久| 亚洲精品乱码久久久久久按摩 | 亚洲国产精品综合一区在线| 亚洲国产电影在线观看| 国产成人亚洲合集青青草原精品| 亚洲人成人网毛片在线播放| 亚洲色大成网站WWW国产| 亚洲AV无码一区二区三区电影 | 亚洲国产精品自在在线观看 | 亚洲最新在线视频| 激情内射亚洲一区二区三区爱妻| 在线综合亚洲中文精品| 亚洲精品久久无码av片俺去也 | 亚洲一区二区三区高清| 亚洲色婷婷综合久久| 亚洲 小说区 图片区 都市| 亚洲一级黄色视频| 亚洲av之男人的天堂网站| 亚洲综合在线视频| 国产精品亚洲午夜一区二区三区| 亚洲熟伦熟女专区hd高清| www亚洲一级视频com| 亚洲欧美国产国产一区二区三区|