螞蟻金服高級研究員陽振坤:爲何咱們要選擇自研數據庫這條艱難之路

「若是你們當時能看見原來十年後OceanBase能長成這樣,可能十年前OceanBase獲得的支持會好不少。可是這種若是是不存在的,不少時候你要先證實本身。」 數據庫

根據工信部數據顯示,1998年,中國軟件企業5000家,市場規模325億;到了2018年末,中國軟件企業3.78萬家,收入規模超過6.3萬億元,營收增加了193.8倍。可在最核心的基礎設施三大件芯片、操做系統和數據庫上,過去咱們並未取得商用意義上的重大突破。服務器

不過,相比芯片和操做系統,國內數據庫領域的局面要略微樂觀一些。除了傳統的數據庫廠商、數據服務商,互聯網巨頭、雲計算廠商、硬件廠商、新興的創業公司也愈來愈多地投入到數據庫的研發中。而談及國產自研數據庫,就不得不提OceanBase。OceanBase是徹底由阿里巴巴和螞蟻金服自主研發、全球首個應用於金融核心業務的分佈式關係數據庫。OceanBase的研發始於2010年6月,由於選擇從零開始,研發之路從一開始就磨難重重,中途由於找不到願意使用的業務,團隊曾經瀕臨解散。架構

最終OceanBase仍是跨越了死亡之谷,在螞蟻金服實現了全面替代Oracle,成功支撐了過去5年「雙11」螞蟻金服所有核心業務的重壓,創造了25.6萬筆/秒支付峯值和4200萬筆/秒請求數處理峯值這一業內全新的紀錄。自2017年開始,OceanBase開始走向外部商用,目前已經在數十家商業銀行落地,其中包括南京銀行、浙商銀行、蘇州銀行、人保健康險等。OceanBase幫助南京銀行共同打造「鑫雲+」互金開放平臺,實現貸款交易處理能力10倍提高,輕資產模式顯著下降成本,從原有的30~50元/帳戶下降到上線後的4元/帳戶。日處理百萬筆放款,平均處理時間小於1 秒,讓老百姓借錢更方便,真正實現了普惠金融。併發

站在如今這個時間點上顧盼今昔,螞蟻金服高級研究員、OceanBase創始人陽振坤認爲,OceanBase的成功其實有行業和時代的必然性。分佈式

這是最壞的時代,也是最好的時代

2009年開始,大量新的非關係型數據庫如雨後春筍般涌出,在整個數據庫行業掀起了一場空前盛大的NoSQL革命。這時候的關係數據庫早已過了而立之年,在此期間雖然曾短暫爆發過一些所謂終結關係數據庫的革命,但絲毫沒有動搖到關係數據庫的主導地位。高併發

但這一次彷佛與以往不一樣,火熱發展的雲計算帶來了對更大規模數據庫的需求,而關係數據庫的缺點則相應地被愈來愈多人詬病:不可以擴展、容量小、處理能力不夠、成本又很是高。在當時的不少人看來,關係數據庫的末日是真的要來了。大數據

那時陽振坤已經作了兩年多的自研分佈式系統,他十分看好雲計算系統的發展機會。同一年,陽振坤加入阿里巴巴,開始了分佈式關係數據庫OceanBase的研發。阿里雲

數據庫從誕生起已經有幾十年的時間了,但基本上它的市場格局就沒有多少變化,最先起來的幾家廠商今天仍是佔據着統治地位。由於數據庫很是難被替換,它處在整個產品或者產業鏈最底層的位置,替換風險很大,但收益相比起來卻小得多。這也是爲何像IBM、微軟這樣的後來者也沒法取代Oracle。這就致使了數據庫變成了一個門檻極高、強者恆強的領域,後來者很難居上。前有Oracle擋道、後有NoSQL數據庫追趕,在大部分人看來,那時候怎麼也不會是自研關係數據庫的好時機,但陽振坤卻不這麼想。雲計算

加入阿里以後,陽振坤發現不管對淘寶仍是支付寶,關係數據庫都扮演着十分關鍵的角色,在使用上根本不可能擺脫。但已有的數據庫,不管是商業數據庫仍是開源數據庫,都有很是多的侷限,遠遠沒法知足如淘寶、支付寶這樣的互聯網和金融業務對高擴展、高併發、高可用和低成本的需求。單機數據庫已經走到了盡頭,下一步只能走向分佈式,而分佈式剛好是陽振坤所擅長的。若是能將分佈式技術揉到數據庫裏面,解決單機數據庫存在的各類問題,對當時整個互聯網的基礎設施都會是一個巨大的幫助和進步。陽振坤認爲他們遇上了一個「天時地利人和」的好機會。spa

「天時」指的是互聯網的爆發式增加對數據庫的高併發、大數據量提出了很大的需求,有了需求去推進就會容易得多;「地利」指的是阿里內部從淘寶到螞蟻金服擁有大量須要使用數據庫的場景,OceanBase能夠從不是特別重要的應用場景開始嘗試,一步步地將數據庫作成關鍵系統;「人和」指的是當時單機數據庫已經走到了盡頭,下一步必定是走向分佈式,而當時團隊成員大可能是研究分佈式出身,作的就是本身最擅長的工做。用陽振坤的原話就是:「這是百年不遇的機會,咱們必定要作,並且必定能作成。」

一個不斷「破格」的人

「一個不斷破格的人」,這是早前某次採訪中記者對陽振坤的評價。1984年陽振坤考入北京大學數學系,碩士師從本系的張恭慶院士,後又轉向計算機領域,博士師從計算機系的王選院士。須要強調的是,他修完大學課程只用了3年,碩士只用了一年多,成爲王選院士博士生的時候他只有24歲。1995年其所在團隊研究成果獲國家科技進步一等獎(排名第四),1997年也就是他32歲那年被破格晉升爲教授。

在他人或許都安於現狀之時,他卻毅然選擇了離校。箇中緣由也不復雜,他的工做更偏於工程,而在工業界有更多的機會,也能發揮更大的做用。2002年離開北大/方正的時候,陽振坤心裏很清楚本身必需要作點不同的事情。他先是加入聯想研究院擔任首席研究員,負責無線通訊領域的研究;後來接觸到分佈式系統並看好其前景,在微軟亞洲研究院、百度所從事的工做都屬於分佈式這個範疇,前者側重研究,後者偏重工程實踐。

回想在北大的那些年,陽振坤以爲特別感激的是,學數學讓他有了一個很好的數學基礎,後來轉到計算機系之後,碰到了王選老師,又打下了一個比較牢靠的計算機基礎,這纔有了他後來的今天。做爲對陽振坤影響最大的人,恩師王選有兩點讓他至今受益:一是如何判斷一件事情是否有價值,二是「頂天立地」的技術理念,「頂天」就是技術上要不斷追求新突破,「立地」就是要把技術作成通用產品,讓整個社會都能廣泛使用。

其實2010年去淘寶的時候,陽振坤根本不知道本身會作什麼事情。加入淘寶以後,擺在他面前的有兩個選擇,一個是加入正在快速發展的淘寶業務團隊,去主管技術,這是一條已經能看到很大的發展機會、相對輕鬆的道路;另外一條是陽振坤後來本身選的,從頭組建團隊作一個技術平臺,也就是今天咱們看到的OceanBase數據庫。從加入淘寶到選擇作自研數據庫,一共只花了兩個星期的時間。

這不是一個容易的選擇,但陽振坤相信本身的判斷:「2010年選這個項目的時候,我是以爲這件事情須要作。當時互聯網迅速發展帶來了對大數據量、高併發的需求,你們對傳統單機數據庫有很大的抱怨,以爲它既沒有擴展能力,又沒有高併發的能力,成本還很是高,可是互聯網根本就離不開關係數據庫。這件事情怎麼看都是一件應該要作、須要作的事情。」陽振坤沒有說出來的是,這件事到底有多難。

那時候阿里巴巴剛開始要「去IOE」,幾乎沒人想着說要本身從頭作一個數據庫。傳統關係數據庫都是經過外部硬件來保證可用性,用便宜的PC機替換高端服務器以後,硬件更容易出故障了,如何保證數據庫高可用?高可用和數據一致性如何同時保證?分佈式系統怎麼同時實現CAP的要求?幾十年來這麼多作數據庫的廠商,國內國外基本沒有人成功過。並且從公司的業務發展的角度,也不可能等你幾年把數據庫作出來,再去發展業務,更可行的作法是基於開源作出一些東西,讓業務先往前走。所以OceanBase立項之初,除了陽振坤和他當時的直屬領導,其餘人對這個項目要麼不關心,要麼不同意。從零開始自研分佈式關係數據庫並全面替換Oracle,在當時有多少人會相信這真的能作成呢?當時整個淘寶一共只有兩三千人,而Oracle有十幾萬人,就算整個淘寶的人所有去作數據庫,跟Oracle比起來也只是很小很小的一個比例。

在陽振坤看來,若是一件事情幾乎全部的人都認爲它很重要、須要作,這件事情就已經不是創新了。當全部人都認爲這件事情要作的時候,其實作這件事情的時機已通過去了一大半。做爲最底層的基礎軟件設施,數據庫須要很長時間的積累,不可能今年作,明年就能真正大規模地用起來。 雖然在2010年選擇作數據庫的時候,沒有太多人看重和支持,對於團隊來講這可能反而是一件好事。無人關注,反倒給了團隊幾年積累發展的時間。

陽振坤不僅要自研,還要把OceanBase定位成恩師王選所說的「頂天立地」的技術產品——走標準化的路,作一個通用的關係數據庫產品,而不是一個僅僅在公司內部使用的產品。每一個公司使用任何產品其實都只用了其中很小的一部分功能,若是隻作知足公司自用需求的數據庫,可能只須要投入十分之1、五分之一的人力物力時間。而要作成通用產品就意味着必須實現全部功能,這要困可貴多,團隊的投入、花費的精力和時間也要大好多倍。但也由於陽振坤最初的堅持,今天的OceanBase才得以走出螞蟻金服,走進衆多銀行系統。不過這都是後話了。

作數據庫就像在黑暗中前行,守得住寂寞、擔得了壓力,甚至要有近乎偏執的性格纔可能跨越死亡之谷,到達最終目的地。陽振坤團隊中一位新人曾經向他表達過本身的困惑,當時這位新人入職三個月了,由於有太多東西要學,什麼也沒作出來,而跟他同時入職天貓的新員工纔來了一個月,作的系統就已經在線上使用了。陽振坤當時給新人講了一個故事,他說:「你過三年再看,沒有人還記得那個同窗三年前在天貓上把網頁作了什麼改版,但是三年之後你今天作的東西還會在生產系統中使用。」

十年蟄伏,一飛沖天

OceanBase的第一個客戶來自淘寶收藏夾。當時的淘寶收藏夾正處於業務高速發展期,數據庫的訪問量飛快增加,面臨着第二年服務器數量須要翻一倍甚至幾倍的局面。業務方忙於尋找解決方案的時候,陽振坤主動找上門去提出了能夠用OceanBase幫他們解決問題,把服務器數量下降一個數量級。四個月出Demo,八個月出試用版,一年後系統正式上線,淘寶收藏夾就這樣成了第一個吃OceanBase螃蟹的業務,新數據庫取得了很是好的效果。這時候是2011年,收藏夾項目成爲了OceanBase第一個小小的里程碑。

但在後續一年多的時間裏,OceanBase團隊一直在尋找更多業務,也確實有一些業務用了,卻再也沒有找到像淘寶收藏夾效果這麼顯著的業務。作數據庫難度大、週期長,前幾年的投入也許有那麼一點點產出,但其實跟投入比幾乎微不足道,團隊面臨的壓力可想而知。數據庫少不了人力投入,OceanBase團隊從最先只有陽振坤一我的,後來發展到2012年已經有30多我的了。佔了這麼多人頭,但在公司裏卻沒有足夠多、足夠重要的業務,沒能產生足夠大的價值和效益。團隊陷入了一個比較困難的時期,甚至數度瀕臨解散。

當被問及「中間有沒有想過這事若是沒作成,怎麼辦?」,陽振坤回答得雲淡風輕:「不是每件事都能作成,那太難了。若是每件事在作以前都想着它能不能作成,那最後作成的事就會不多。」

在最困難也最危險的時候,團隊迎來了一絲起色。2012年末,公司把OceanBase整個團隊調到了支付寶。支付寶屬於金融領域,面臨的數據庫挑戰會比其餘業務更大,這至關於給了OceanBase團隊一次從頭開始的機會。

2013年夏天,支付寶也開始啓動「去IOE」,並但願可以把Oracle數據庫替換掉。陽振坤又一次主動出擊,向當時的主管、也是如今螞蟻金服的CTO程立自薦了OceanBase的解決方案。

金融行業數據庫,最怕的就是突發故障致使數據丟失,涉及到錢的事,多了少了都是不可接受的。爲了解決高可用與主備庫數據一致的矛盾,OceanBase將可用性作到了數據庫系統內部,用一主兩備或一主多備代替一主一備。主庫到備庫同步的時候不要求同步到每一個備庫,而是同步到包括主庫在內的多數庫(超過半數),也就是說總共三個庫中若是有兩個成功了,這個事務就成功了。若是任何一臺機器出了問題,這個系統的可用性和數據一致性都是能夠保證的。

程立承認了陽振坤提出的方案,OceanBase團隊開始埋頭開發,第一個要攻克的目標是支付寶交易庫。2014年雙11,OceanBase迎來了第一次大考。

大促開始前的凌晨,各個團隊都在本身的做戰室裏熱火朝天地準備。當時任螞蟻金服董事長的彭蕾去了OceanBase團隊的做戰室,問你們:「有沒有信心?」陽振坤跟彭蕾開了個玩笑說:「你看咱們窗子都已經打開了,若是等會出問題,咱們就準備從這跳下去。」

在一開始的計劃裏,雙11交易流量的1%會切給OceanBase,但由於當時的Oracle數據庫系統支撐不了洶涌而來的巨大流量,最後OceanBase成功支撐了2014年雙11中10%的交易流量。通過了雙11的考驗以後,OceanBase獲得了更多的承認和支持。後來OceanBase團隊得到了2015年螞蟻金服的CEO大獎,這也是第一次由技術團隊拿到這個獎。彭蕾但願借這個獎鼓勵那些可以沉下心來、紮紮實實地把一項技術作好作紮實的技術人們。

2015年春夏,支付寶交易庫和支付庫都換成了OceanBase;2016年,支付寶帳務系統上線,這也標記着OceanBase真正在金融系統最核心最關鍵的領域站住了腳。

從2017年開始,OceanBase開始走出支付寶、走出螞蟻金服,在商業銀行推廣使用,最先的兩家客戶是浙商銀行和南京銀行。僅僅用了兩年多的時間,OceanBase已經在人保健康險、常熟農商行、蘇州銀行、廣東農信等數十家商業銀行和保險機構上線。

2017年10月,南京銀行「鑫雲+」互金開放平臺正式發佈,這是阿里雲、螞蟻金服合做總體輸出的第一次嘗試,經過「鑫雲」+平臺的建設,南京銀行互金核心系統在交易處理能力、成本控制和對接效率都獲得了極大的提高。

南京銀行傳統的線下消費金融業務開展10年,餘額100億,而與互聯網平臺合做開展線上業務僅一年時間業務量已達到100億。南京銀行「鑫雲+」平臺上線後,業務快速增加,貸款交易處理能力全面升級,從原有的10萬筆/天到上線後實現100萬筆/天,對普惠金融起到了更有利的支撐。輕資產模式使得單帳戶管理成本約爲傳統IOE架構的1/5至1/10,從原有的30~50元/帳戶降到了上線後的4元/帳戶。「鑫雲+」平臺的維護人員較傳統銀行業務系統約爲1/5左右。以往合做時銀行須要分別與各個互聯網平臺進行對接,自項目上線後,只需對接鑫雲+一家平臺便可實現多家互聯網平臺的對接,大大減小了重複建設,提升對接效率,同時也下降了中小銀行以及互聯網平臺的對接成本。

從瀕臨解散到浴火重生,OceanBase已經走了快十年,但在自研關係數據庫這條漫漫長路上,OceanBase才僅僅走出了一小步。在陽振坤看來,OceanBase如今「開了很大的一朵花,可是結了很小的一個果」,雖然它已經向全部人證實了通用的分佈式關係數據庫是可以作成的,並且能真正應用在生產系統中,但今天OceanBase的應用還頗有限,遠遠沒有充分發揮它的價值。

陽振坤告訴咱們,OceanBase當初沒有選擇基於開源或已有的技術思路開發,而是選擇走分佈式自研這條路,雖然走得艱難,但作成以後就會成爲不可替代的優點。過去這十來年正好是分佈式系統發展的十來年,轉型到分佈式已經成爲全部人都承認的一個選擇。現在,以螞蟻金服的OceanBase爲表明的分佈式關係數據庫,不只解決了關係數據庫的擴展性問題,也極大地下降了關係數據庫的成本,還提高了可用性。

如今,兼容Oracle的工做是OceanBase的重中之重。OceanBase團隊的目標是,用兩年時間作到Oracle業務的平滑遷移,不須要修改一行代碼、不須要業務作任何調整就可以將數據庫遷移過來。

在陽振坤看來,可以把最先的一些想法一些創新變成產品,真的是很是艱難甚至說過程當中充滿痛苦的一條道路。可是OceanBase作的全部事情其實仍是從業務、從客戶中出發,只有技術真的可以落到生產中去,落到用戶中去纔是真正有價值的,不然作得再好也只是一個空中樓閣。

相信將來,OceanBase還會走得更快、更遠。



本文做者:華蒙

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索