“如果等會出了問題,我們就從這跳下去!”
說話的人叫陽振坤,OceanBase 創始人。他指着作戰會議室裡一扇打開的窗,面前是時任螞蟻金服董事長的彭蕾。這是 2014 年 11 月 11 日淩晨雙 11 開始的前夕,各個團隊都在自己的作戰室裡熱火朝天地準備,彭蕾到前線給大夥鼓勁,推開 OceanBase 的作戰室大門,問大家:“有沒有信心?”
陽振坤走到窗邊,“你看我們窗子都已經打開了”——不成功就跳樓。
時間拉回今天淩晨,被譽為“數據庫領域世界杯”的 TPC-C 基準測試公布最新結果,OceanBase 打破自己保持的世界紀錄,事務處理性能由上次測試的 6088 萬 tpmC 提升到 7.07 億 tpmC。
前一年,OceanBase 首次打破了由美國公司甲骨文 Oracle 保持了 9 年世界紀錄,成為首個登頂該榜單的中國數據庫産品。
從找不到願意使用的業務瀕臨解散,到兩度登頂世界第一,陽振坤和他的團隊走了整整 10 年。草灰蛇線,伏脈千裡。百萬行代碼在無盡歲月裡搭建成數據庫的基石,終于在十年後壘成擊不破的城牆。
小馬拉大車
2010 年,在阿裡巴巴合夥人劉振飛的邀請下,陽振坤加入淘寶,一條現成的康莊大道擺在他面前,加入快速發展的淘寶業務團隊,主管技術。糾結了三天,陽振坤決定選擇自研分布式數據庫。
當時淘寶用的是傳統數據庫,主備鏡像無法做到主庫與備庫完全一緻,小型機與共享存儲的的購買、安裝和調試周期需要三個月甚至更長,機器的生命周期也就 3-5 年,高昂的軟硬件成本注定其服務能力有限。
互聯網的特性,決定其訪問量在幾小時内可能增長數倍,傳統數據庫的垂直擴展方式疲于應對。往往到了流量暴增,大家才手提肩扛加機器擴容。許多的促銷或新業務因為數據庫性能不足而被迫取消。
在陽振坤眼裡,傳統數據庫像一匹小馬拉着大車,顫顫巍巍颠簸着。他要做就做分布式關系數據庫。
一直以來,陽振坤就有個“分布式”的夢。他在微軟亞洲研究院期間,結識了後來的阿裡雲之父王堅博士,在王堅博士的領路下接觸到分布式系統。有趣的是,王堅博士重研究,陽振坤重工程,兩人經常上午吵完下午吵,當着大家的面吵,私下裡也吵。吵完依然看好分布式系統,惺惺相惜。
何謂分布式關系數據庫,陽振坤打了個比分,把一個賬本記不下的内容,分十個有機結合的賬本記。這樣即使數據庫一天有 10 億筆寫事務,每筆 1KB,總容量也不過 1TB,分配到 10 台機器上,單機 100GB,這個容量單機完全能夠支撐。
理論大家都理解,但是真正的分布式關系數據庫,那時還沒人做出來過。當時整個淘寶技術人員 1000 人左右,而 Oracle 有十幾萬人,就算整個淘寶的技術人員全跑去做數據庫,要想造一個阿裡巴巴的 Oracle,簡直是天方夜譚。
頂着不被看好的壓力,陽振坤開始着手分布式關系數據庫的研發,團隊成員有從其他組調來的,也有招聘的,2 年後,這個小組才擴展到 30 餘人。每個項目都要有個名字,團隊同學把這個項目叫 OceanBase,意思是海洋一樣的數據庫。
自此,這個叫做 OceanBase 的産品正式開始了它的遠航。
平地砌瓦
OceanBase 團隊成員席華鋒回憶,2011 年他剛進團隊,主要做的事情就是跟事務和日志有關,基本上 9 點下班後,回家自學到 12 點以後。團隊人很少,不論職位高低,所有的人都在寫代碼。那個時候 OceanBase 的同學就好像憋着一股勁,立志要把這個事情做成。
大家在同樣的路線上騎着自行車,追趕一輛叫 Oracle 的跑車。
師承激光照排之父王選院士,陽振坤傳輸給團隊要做“頂天立地”的技術,“頂天”就是技術上要有突破,“立地”就是要把産品做成通用産品,讓整個社會都能使用。
但做數據庫是個慢工細活,半年一年能落地到業務就不錯了,出結果慢晉升自然也慢。有個團隊成員點開天貓的頁面,向陽振坤抱怨,自己和天貓的同學合作,人家的系統已經在線上使用了,而自己二個月過去了還沒入門。
陽振坤安慰他,“你過三年再看,沒有人還記得那個同學三年前在天貓上改版了什麼網頁,可是三年以後你今天做的東西還會在生産系統中使用。”
要開始 OceanBase 數據庫這樣一個基礎軟件的研發,必須先找到業務。幸運的是,時任 OceanBase 團隊負責人的李震(楚材),是淘寶的老人,他帶着陽振坤,像兩個推銷員,在淘寶各個業務技術團隊一一拜訪,找項目落地,最後終于有一個項目願意嘗試,這個項目就是淘寶收藏夾。收藏夾是淘寶線上應用之一,淘寶用戶在其中保存自己感興趣的寶貝,以便随時查看。每當用戶打開收藏夾的時候,收藏夾系統都要去獲得用戶收藏的幾十到幾百件商品的每一件的最新價格和狀态等信息,工作量非常大,收藏夾使用的傳統關系數據庫不堪重負,用戶訪問響應慢甚至無法打開,業務屢遭用戶投訴。
時任收藏夾的主管魏虎對他們說,“隻要能解決問題,我們就用你們的數據庫。” 魏虎建議 OceanBase 能夠 2 周左右提供給業務開發團隊進行測試驗證,但當時 OceanBase 團隊才開始組建,直到兩個月後才拿出了一個演示(Demo)版給收藏夾開發團隊,證明了 OceanBase 技術方案的可行性,八個月才出了版本,一年後系統正式上線。
當時收藏夾數據庫曾計劃增加到數百台服務器,用上 OceanBase 後隻使用了 20 多台就滿足了當時的業務需求,新數據庫取得了非常好的效果。
面臨解散
在收藏夾上線後,OceanBase 團隊沒有迎來春天,反而陷入特别困難的時期,整個 2012 年都沒有重量級的業務落地。團隊随時面臨解散,活下來成了唯一目标。
面對如此大的生存壓力,大約 2012 年 10 月,陽振坤找到了時任阿裡巴巴首席架構師的王堅博士,讨教 OceanBase 的生存機會。陽振坤心裡明白,“再找不到機會活下去,OceanBase 的氣數盡了。” 王堅博士提議 OceanBase 去支付寶,因為支付寶在數據庫上面臨的挑戰更大。在王堅博士的極力推薦下,2012 年 11 月 15 日,OceanBase 團隊從淘寶調到支付寶,暫時避免了關門大吉的命運。
到了 2013 年夏天,時任螞蟻金服 CTO 的程立提出全面去 O,這個 O 是指 Oracle。陽振坤預感到轉機來了,自薦用 OceanBase 代替 Oracle。
OceanBase 0.5 版本應運而生,為了做好 0.5 版本,OceanBase 團隊從那年 9 月幹到次年 5 月,很多同學春節也沒有怎麼休息,整整 8 個多月都在全力以赴。
0.5 版本把數據多副本技術引進到關系數據庫,即每一筆事務同時在 3 台甚至更多機器上落地,機器之間通過多數派來确定正确的數據,消除了當時 MySQL 等傳統數據庫由于機器故障導緻的數據錯誤或丢失,在不使用價格昂貴、容量受限的共享存儲的情況下,依然确保了金融系統的數據的正确性和可靠性。
當 OceanBase 團隊死磕技術突破,他們還得面臨組織協調上的内外交困。支付寶的業務技術團隊也有自己的擔憂:萬一 OceanBase 出問題怎麼辦,這麼多金融數據出錯或丢失了可不是開玩笑的。一方要推,一方要拒,還是時任螞蟻金服 CTO 的程立出面,把相關的負責人叫來坐下一起談。
會上,程立問:OceanBase 有問題,大家具體指出來,不要說“感覺不穩定,害怕出問題”這些虛的。最後決定 OceanBase 承擔 2014 年雙 11 交易流量的 1%。
正是這 1% 硬是給 OceanBase 撕開一條路。那年雙 11 前夕的壓力測試階段,機器模拟用戶購物,Oracle 卻無法支撐住全部流量,一旦達到 90%流量,硬盤開始大量故障,相當于一個最多隻能挑 90 斤擔子的人,突然加到 95 斤,腰折了。OceanBase 臨危受命,負擔雙 11 交易流量的 10% 。
這才有了開頭不成就跳樓的一幕。
代碼最美
OceanBase 替代 Oracle 在支付寶交易系統上線,讓它真正活了下來,甚至有了不少擁趸,在當時整個阿裡巴巴還有沒有一款數據庫,能真正解決高可用的問題。
涓涓細流,終彙大海。2015 年,網商銀行成立,OceanBase 成為全球首個應用在金融核心業務系統的分布式關系數據庫;
2016 年,OceanBase 1.0 版本在支付寶賬務系統上線,支撐 12 萬筆 / 秒支付峰值;
2017 年,支付寶首次把賬務庫在内的所有核心數據鍊路全部搬到 OceanBase 上,創造 4200 萬次/秒數據庫處理峰值紀錄;
同年,OceanBase 走出阿裡對外商用,先後在南京銀行在内的多家商業銀行落地。
2019 年,OceanBase 參加國際标準的數據庫 TPC-C 基準性能測試,成為唯一上榜的中國數據庫,并以兩倍于 Oracle 的成績(6088 萬 tpmC)登頂 TPC-C 性能榜,打破了甲骨文保持 9 年的世界記錄;
2020 年,OceanBase 再次登頂 TPC-C 測試性能榜首并創造了 7.07 億 tpmC 的新紀錄。
從 2010 年的立項,到如今 2020 年的勇奪 TPC-C 世界第一,這背後其實離不開每一個默默付出,團隊利益至上的 OceanBase 同學們。
楊琪是加入 OceanBase 不到一年的新人,也是少數的幾個女生之一,入職時正是團隊沖刺 TPC-C 的關鍵時刻。她記得那天,她的 Leader 趙裕衆在電梯門口接她,兩人尴尬地握了握手,然後把她領進了擁擠的項目閉關室。裡面坐着的師兄們,個個挂着黑眼圈外加一副倦容,楊琪心想:“這是一個怎樣的團隊呀”。
侯宇軒加入 OceanBase 剛剛兩年,去年被同事提名了“看見”獎項,這是一項完全由員工自行提名的獎項,提名那些幫助人問題的同學。“在過去,我一直扮演着兵王的角色,認為自己強就完事了”,加入 OceanBase 團隊後,侯宇軒發現讓人努力和為之堅持的就是這種被團隊需要和依賴的感覺,OceanBase 團隊建立了一個非常好的模式,讓他感受到了這種正向反饋所帶來的激勵。
OceanBase 有個不成文的規定,代碼要寫得漂亮,身體也要棒棒的。團隊裡年輕工程師,回憶起有一次部門 outing,面對着錦繡山河,和陽振坤開玩笑,問他是代碼美還是風景美?陽振坤說,“我還是覺得我們的代碼最美。”
這一行行代碼背後鮮活的面孔,經曆無處安放的業務困頓後,和默默無聞的歲月,終于被打撈被銘記。
十年如昔,初心不改,在推進分布式關系數據庫 OceanBase 的應用道路上,這群執着的追夢人他們仍将步履不停。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!