厲害了,螞蟻金服!創造了中國本身的數據庫OceanBase(上)

摘要: 兩萬字長文帶你瞭解關於OceanBase的一切!數據庫

clipboard.png

2008年,王堅從微軟亞洲研究院常務副院長的位置上離職後,於當年9月加入了阿里巴巴集團擔任首席架構師一職,負責集團技術架構以及基礎技術平臺建設。加入阿里沒多久後,王堅就提出了「去IOE」的想法,即擺脫過去IT系統中對IBM小型機、Oracle數據庫以及EMC存儲的過分依賴。安全

2009年開始,阿里舉全公司之力投入到雲計算的研發和使用中,這可視爲取代IOE之舉。2010年,陽振坤加入了阿里,這位在1999年就成爲北京大學首批長江學者、曾得到國家科技進步一等獎、前後擔任北京大學計算機科學技術研究所副所長、聯想研究院首席研究員、微軟亞洲研究院主任研究員、百度高級科學家等職務的研究員,帶領團隊在阿里作出來了取代商業數據庫的OceanBase。服務器

2013年5月,阿里集團最後一臺IBM小機在支付寶下線。2013年7月,淘寶廣告系統使用的Oracle數據庫下線,也是整個淘寶最後一個Oracle數據庫。2014年,OceanBase替換了支付寶交易系統中的Oracle數據庫。2015年,OceanBase替換了支付寶支付系統中的Oracle數據庫。2016年,OceanBase替換了支付寶最核心的帳務系統中的Oracle數據庫。2017年,螞蟻金服全面去IOE。網絡

從2011年開始參戰雙十一到2016年雙十一支付寶支付峯值12萬筆/秒的世界紀錄,再到2017年雙十一支付峯值達到25.6萬筆/秒,再次刷新2016年創下的峯值紀錄,這背後,是一個由OceanBase研發和運維組成的幾十人的團隊。2016年的世界互聯網大會,OceanBase入選世界互聯網領先科技成果,其它獲獎公司還包括特斯拉、IBM、微軟、卡巴斯基等。架構

在6000多名螞蟻員工中,這幾十我的辨識度很高,由於只有他們的工牌帶是「土豪金」,而其餘全部人的工牌帶都是清一色螞蟻藍。「土豪金」工牌帶是螞蟻金服內部最高榮譽——CEO大獎。2016年5月,螞蟻金服董事長彭蕾親自爲這幾十位技術明星戴上了「土豪金」 工牌帶,理由是這個小團隊自主研發的OceanBase數據庫,以遠低於傳統數據庫的成本,更高的可用性,扛住了支付寶一次又一次自我刷新的支付峯值世界紀錄,打破了IT核心技術長期被西方壟斷的格局。併發

從2017年開始,OceanBase跟隨整個螞蟻金服的金融科技開放,開始了向傳統金融賦能的實踐過程。2017年年末,OceanBase在南京銀行正式上線,OceanBase數據庫爲南京銀行「鑫雲+」互金開放平臺提供金融級分佈式關係數據庫服務。OceanBase還出口到了印度和美國等地,爲當地的支付業務提供數據庫服務。做爲螞蟻金服自研的分佈式關係型數據庫,OceanBase從一開始的目標就是傳統商業數據庫的升級換代產品,並堅持走通用關係數據庫產品之路。運維

經歷了7年坎坷、成立的頭三年一直被邊緣化、屢次面臨解散的OceanBase團隊,現在雖然集體戴上了「土豪金」,但是他們都知道OceanBase這樣的中國技術奇蹟,是阿里巴巴/螞蟻金服舉全集團之力所創造出來的成果,這個過程自己也堪稱「奇蹟」。2018年2月初,OceanBase團隊的主幹成員陽振坤、馮柯、陳萌萌、蔣志勇、楊傳輝等與筆者展開了深刻的交流,介紹了OceanBase的前因後果。分佈式

OceanBase:劃時代的數據庫

clipboard.png

▲OceanBase 團隊SQL開發方向負責人 陳萌萌高併發

爲何OceanBase可以入選世界互聯網領先科技成果,可以進入IBM、微軟等世界科技巨頭行列?性能

首先,簡要回顧一下基礎軟件歷史。自1975年微軟公司創立、1977年甲骨文公司創立後,逐漸出現了商用操做系統和商用關係型數據庫產品。再加上1995年創立的BEA公司及其表明的商用中間件產品,傳統基礎軟件的核心技術:操做系統、中間件和數據庫,就此誕生。

除了BEA公司於2008年被甲骨文公司收購外,爲何後來全球再也沒有企業可以超越微軟和甲骨文公司的操做系統與數據庫及中間件產品呢?

這其中的緣由不少,除了最先投入、培養了最多的相關技術研發人才和技術積累外,更重要的緣由在於做爲全球化的商用軟件產品,不管是微軟的操做系統仍是甲骨文的數據庫,都是伴隨着全球用戶集體使用、集體反饋、集體推進技術進步而打磨出來的。

實際上,不管是操做系統、數據庫仍是中間件,本質上都是軟件和硬件集成在一塊兒的優化技術,其目的就是經過軟硬件集成調優來達到計算效率最大化、成本最優、用戶體驗最佳、兼容性最廣、安全與穩定性最高等結果。以甲骨文公司的Oracle數據庫爲例,其普遍支持並行機、大型主機、小型計算機、工做站、我的電腦等多種計算設備,容許用戶在不一樣計算設備上使用並遷移Oracle數據庫,1994年的時候Oracle關係型數據庫支持超過100種硬件和操做系統環境,兼容多項國際及國家的數據庫相關標準。

令Oracle數據庫成名的,是OLTP聯機交易處理也稱爲面向交易的處理過程,其基本特徵是前臺接收的用戶數據,能夠當即傳送到計算中心進行處理並在很短的時間內給出處理結果,針對諸如銀行、證券、民航訂票系統等須要實時響應的關鍵性業務系統等。Oracle數據庫在全球的金融、電信、民航等各種系統和業務場景中獲得了普遍的應用,在應用過程當中不斷改進技術,最終出現了一個「強者恆強」的結果。

正由於Oracle數據庫在關鍵性的OLTP交易處理中佔據了牢不可破的市場地位,這讓後來的數據庫廠商很難有機會再重複一遍Oracle數據庫曾經走過的這樣一個反覆實踐、反覆打磨、反覆修正的過程。緣由很簡單,不會有企業願意把本身的核心業務拿出來,給新進技術廠商當實驗田。因此在以IOE爲表明的傳統IT環境中,除了已經創建起市場地位的主流技術廠商外,其它的後起技術廠商包括開源技術開發商,只能在企業的邊緣業務或當地政府扶持的業務場景下,纔有少許的機會。

這種狀況一直持續到近十年的雲計算變革。雲計算其實是由大型互聯網公司發起和主導的技術變革,在最近幾年逐漸從互聯網公司向傳統企業蔓延。雲計算的初衷是大型互聯網公司爲了下降本身的IT支出,而從IOE架構向基於廉價PC服務器爲主的IT架構進行演變的過程。雲計算最先起源於2006年亞馬遜推出的Amazon Web Service網絡服務,簡稱AWS。而到了2008年王堅成爲阿里的首席架構師,負責集團每一年的IT規劃與預算,這個時候王堅就意識到了IOE架構對於阿里長期運營成本的影響以及對將來業務發展的制約。

在2008年的時候,阿里的數據庫就已是全亞洲最大的數據庫,也是Oracle最大的用戶之一,那年阿里尚未啓動雙十一。從2009年開始的雙十一,每一年產生和處理的數據量都在爆發式增加,若是一直採用Oracle數據庫的話,運營成本將是天價。而在另外一方面,爲傳統IT環境而設計的Oracle數據庫,並無考慮到互聯網的大規模、高併發、實時在線、大型網絡優化等新興需求。2008年的時候,Oracle數據庫就已經難以處理阿里的大規模數據量了。

本質上理解,OceanBase與Oracle數據庫同樣都是關係型數據庫,但不一樣的是OceanBase是面向超大規模互聯網公司的分佈式計算環境而從新開發的關係型數據庫,Oracle數據庫則相應能夠理解爲針對傳統企業的計算環境而造成的「單機」數據庫。

所謂「單機」數據庫,首先指Oracle數據庫所基於的硬件環境是IBM小型機和EMC企業級存儲所構成的高度穩定共享存儲環境,IBM與EMC的企業級硬件本質上就提供了高度穩定的共享硬件環境。其次,Oracle數據庫以共享存儲爲理念,全部的數據庫看到的是同一個數據磁盤、共享數據訪問,於是能夠確保全部的數據均可被訪問到,並且底層硬件自己也穩定可靠,因此是「單機」視角。

陳萌萌目前在螞蟻金服基礎數據部(OceanBase團隊)負責SQL相關方向的開發工做。2006年畢業於清華大學、2006年到2008年在歐洲核子研究中心(CERN)負責網格計算調度器的開發工做、2009年5月在美國威斯康辛大學麥迪遜分校得到計算機碩士學位,陳萌萌前後在Oracle、華爲美國研究所從事數據庫的開發和研究,他於2014年6月加入OceanBase團隊。

陳萌萌對於「單機」的視角有一個形象的比喻:就像今天使用PC服務器,要擔憂若是忽然某臺PC服務器掛掉了、甚至機房自己遭遇地震、火災等極端狀況,如何保障數據訪問的穩定性。因爲是徹底基於PC服務器架構,OceanBase在處理數據訪問的時候,至關於把一臺原來的小型機或存儲設備從縱向「切片」成不少機器,再把數據分佈到這些分散在不一樣的機器上,數據須要經過網絡纔可以被訪問到。「之前是一個磁盤,如今看到的是幾十個甚至幾百個分佈在不一樣地方的磁盤,怎麼作查詢優化?這個訪問模式會很是不同。」

過去的傳統IT環境是集中在一個地點的高穩定、高可靠、高可用高端企業級設備,如今的雲計算環境是分散在不一樣地點甚至跨國家區域地理位置的廉價PC服務器機羣。OceanBase與Oracle數據庫是基於一樣的數據庫原理,但底層的基礎計算環境發生了根本性的變化,這對於像亞馬遜、阿里巴巴/螞蟻金服和谷歌這樣的互聯網公司來講,有三條出路:一是與甲骨文公司合做,全面開放本身的業務和數據;二是採用MySQL等開源數據庫技術進行改良;三是從頭開始從新設計一個徹底自主知識產權的數據庫產品。顯然,亞馬遜、阿里巴巴/螞蟻金服、谷歌都不約而同地走上了自研的道路。

這個緣由其實很簡單,若是與甲骨文公司合做,須要全面開放本身的業務和數據不說,更重要的是互聯網公司的快節奏、快響應、快研發、與業務運維並肩開發等特色,已經超越了甲骨文公司等上一代IT公司的企業文化和公司機制。而對於開源技術來講,不一樣的開源數據庫只適用於特定的業務場景,由不一樣的開源社區「各自爲戰」式主導各自的技術方向,互聯網公司須要針對不一樣的業務場景拼接不一樣的開源數據庫到一個大系統中,這無疑也不利於長期發展。而走全面自研的方向,是一種最辛苦、看似最不可能卻最具長期投資價值的選擇。

馬雲曾經針對阿里自研雲計算等新一代IT技術說:「網上不少人批評說我被王堅忽悠了,這個雲計算要把5000臺計算機合在一塊兒,是根本不可能實現的……騰訊、百度沒搞下去,重要的緣由是他們的領導知道這個搞不下去。」相反,不懂技術的馬雲,卻最堅決地支持自研雲計算等新技術。「想也沒想,從預算、人頭、資金,咱們一路投,最後咱們走了出來。」

王堅從2009年開始在阿里搞雲計算,陽振坤從2010年加入阿里後開始搞OceanBase,兩條線幾乎是同時並進。陽振坤回憶,整個OceanBase其實並無一個產品經理,根本的緣由是OceanBase做爲商用關係型數據庫的升級換代產品,在OceanBase立項伊始就參照商用關係數據庫列了一個長達千頁的產品功能列表,隨後的OceanBase開發過程就是根據這個列表,但卻從分佈式計算的角度從新實現每個功能。「直到2018年初,OceanBase還只是實現了這個列表中的部分核心功能,但足以支撐整個螞蟻金服的業務」,陽振坤錶示。從2017年開始,三年以內,OceanBase要實現商用關係數據庫的絕大部分功能。

可以與OceanBase類比、能夠稱爲分佈式數據庫的產品,目前只有谷歌於2017年2月發佈的Spanner數據庫雲服務。陳萌萌認爲,Spanner是谷歌從頭開始所有自研的分佈式數據庫,也是針對谷歌的交易業務場景,但整體來講並無阿里巴巴及螞蟻金服的交易業務規模大,而AWS推出的Aurora數據庫則更接近於Oracle數據庫的共享磁盤設計。「真正用分佈式架構解決像螞蟻金服這麼大規模事務性需求的分佈式數據庫,目前咱們只看到OceanBase這一家」, 陳萌萌表示。

從第一行代碼起步到今天的百萬行代碼級產品、支撐雙十一的十萬筆級每秒支付峯值以及螞蟻金服的全面業務,OceanBase能夠說創造了一個劃時代的數據庫產品。OceanBase是中國第一個具備自主知識產權的分佈式關係數據庫,也是全球首個應用在金融核心業務的分佈式關係數據庫。業內人士認爲,OceanBase的出現,在高端金融領域打破了傳統商業數據庫的壟斷,爲金融科技的國產化進程邁出了重要一步。

OceanBase:劃時代的中國技術

圖片描述

▲OceanBase 團隊架構師 馮柯

現任螞蟻金服基礎數據部(OceanBase團隊)架構師的馮柯,於2014年加入螞蟻金服,目前的技術領域爲分佈式關係數據庫、數據存儲、性能診斷和優化。馮柯在入職螞蟻金服前,曾在國內數據庫廠商天津神舟通用數據技術有限公司(如下簡稱:神舟通用)任CTO,是浙江大學計算機應用專業博士,具備15年的數據庫研發和產業化經驗。

做爲國內最先一批從事國產數據庫開發者之一,馮柯表示國內早期從事國產數據庫開發的人們,基本都成爲先驅了。之前作國產數據庫,更多體現的是國家科研的意志,而不是企業的市場化行爲。更爲重要的是,自主研發數據庫須要的是行業背景和企業實踐。「數據庫產品是用出來的,不僅是被研製出來的。」馮柯強調。專一於國產數據庫的國內的數據庫專業公司,到後來每每發展的很差,就是由於沒有行業屬性、沒有真正可以找到成熟應用的市場。

「我當時加入螞蟻金服的時候,以爲螞蟻金服自主研發OceanBase這件事其實很另類,以爲很是難以想象。並且阿里巴巴原來是開源文化,爲何會徹底從頭開始作一個數據庫,這直到今天仍是一個很是奇妙和神奇的事情。」馮柯回憶說,不少人都會問爲何不從MySQL開源數據庫入手,「無論是自主研發,仍是基於開源產品來作,從技術上面來看,沒有絕對的對和錯,不少時候是理想主義使然。」

正如馬雲所說,阿里巴巴/螞蟻金服對於雲計算和通用數據庫等自研技術的投入,正是理想主義的結果。在2017年9月的阿里巴巴18週年年會上,馬雲說:「讓阿里巴巴堅持18年的是由於咱們有理想主義,堅持理想主義使阿里巴巴走到了今天。」「絕大部分人是由於看見而相信,不多部分人是由於相信而看見,」這是馬雲在阿里巴巴18週年年會上引用的話,「過去的18年,阿里是由於相信纔有今天。」

蔣志勇如今是螞蟻金服基礎數據部(OceanBase團隊)SQL組負責人,致力於高可用、高性能、高可擴展性併兼具成本優點的分佈式關係數據庫系統。蔣志敢於2014年加入螞蟻金服,以前在神舟通用負責數據庫開發長達十年之久。蔣志勇在浙江大學完成了計算機專業的本科和研究生學業後,即加入了中國航天科技集團下面的一家研究所,從事國產自研數據庫開發,當時主要爲了科研服務的數據庫及存儲系統。蔣志勇在研究生期間就已經參與到該科研項目中,後來就加入了航天科技集團組建的專一於國產數據庫開發的神舟通用公司。

做爲國內早期從事國產數據庫開發工做的專業人員,蔣志勇認爲螞蟻金服開發自研數據庫與其它專業數據庫公司開發自研數據庫的最大區別在於螞蟻金服自有業務場景。「螞蟻金服不是一家數據庫公司,而是一家金融科技公司。OceanBase在螞蟻金服內部發展的一個基本前提,是可以爲業務不斷創造價值,這是跟傳統數據庫公司的最大差異。」

「以前的困境是開發了不少技術,可是很難找到一個真實的大規模場景去使用這些技術。但在螞蟻金服這邊就不同,咱們作的技術都是業務部門迫切須要的、確實能解決業務痛點問題的技術,加上螞蟻金服的業務發展很是快,也逼着技術部門把產品作的更好,這是一個正向循環:不斷促進技術開發,同時又能對開發成果提供真實業務場景下的及時反饋。」 蔣志勇介紹說。

做爲整個OceanBase的始做俑者,陽振坤的感覺最深。「作自研數據庫,這真的是一把手工程,只有真的得到企業最高層的決策支持才能作成。對於業務部門來講,哪一個數據庫最穩定、最好用,就會選用哪一個數據庫,由於業務部門的首要目標是發展業務。」爲了嘗試自研數據庫技術,螞蟻金服的業務部門須要付出的代價是:修改業務系統,同時支持兩種數據庫,兩邊要可以隨時切換,以便保證在自研數據庫出問題的狀況下,還可以切換回原有的Oracle數據庫。「因此一開始業務團隊在這件事情上其實並無積極的理由。」

爲何說OceanBase是阿里巴巴/螞蟻金服舉全集團之力所創造的成果呢?陽振坤一直是從事分佈式技術的專家,2006年他從微軟到百度,從事分佈式系統研發。對於百度數以萬億計的網頁來講,意味着與日俱增的天量數據,雲計算系統有很是好的發展機會。陽振坤在百度作了兩年多的自研分佈式系統,但因爲百度不肯意再投入更多資源而最終採用了一套現成的開源系統,陽振坤的團隊也被解散了。

來到阿里以後,陽振坤與其它阿里技術人員同樣,須要找到一個合適的業務場景,跟一個業務團隊並負責技術,爲本身的技術方向謀一條「生路」,同時隨着業務的發展而壯大本身的技術。淘寶的技術「大牛」,大都是經過這條路徑成長起來的。在加入淘寶以前,陽振坤其實並不懂數據庫,他的本科與碩士都是數學專業,到了博士才轉到了計算機專業,所以陽振坤的長項在於基礎計算科學。

當陽振坤加入淘寶後,最開始選擇本身技術方向的時候,剛好遇上了一個百年不遇的「天時」與「地利」。「天時」就是當時互聯網對數據庫的需求激增。之前金融企業等用的Oracle數據庫,都是事先設計好業務場景,好比固定用於銀行櫃檯和ATM機器、服務於固定的人羣,數據庫的併發量也很小,原來數據庫有幾十到幾百我的、最多幾千人的併發量就不得了,到了阿里巴巴雙十一以及支付寶業務的時候,一下就激增到幾十萬、上百萬人甚至是上千萬人的併發訪問,結果就是要原來的IOE投資要放大幾百倍甚至幾千倍,「誰都買不起了」。

而「地利」就是阿里巴巴/螞蟻金服自有龐大的業務和數據庫。「當時來阿里的時候,‘單機’在阿里系統內部就已經走到盡頭了。IOE等‘單機’的性能再好,也有個盡頭;‘單機’的盡頭,就是分佈式系統的開始。」 陽振坤及其團隊剛好是作分佈式系統出身的,而阿里巴巴/螞蟻金服內部有數以萬計的數據庫。雖然數據庫做爲IT系統的底層,一旦出現故障就會嚴重影響整個業務系統,特別是支付等關鍵業務系統。但阿里內部總有一些業務,由於數據量和自身業務需求等因素,能夠先試用自研技術,從而打磨自研技術。

淘寶收藏夾就是這樣一個業務,有大規模的數據量,其業務需求傳統數據庫又難以知足。2011年的時候,淘寶用戶已達數千萬級,就算每人收藏十條即達幾億條的數量級。另外,淘寶收藏夾業務還有一個特色,就是數據庫訪問邏輯不太複雜,可讓OceanBase團隊在短期內開發出代碼並投產使用。若是選擇很是複雜業務做爲目標,那麼可能須要耗費技術團隊幾年的時間才能開發出一個可用的版本,而業務卻不可能等這麼長的時間。

這個項目取名OceanBase,相對於Database而言,寓意要作一個海洋同樣的海量數據庫系統。完成了淘寶收藏夾的挑戰後,很快就難以在淘寶內部找到相似的業務場景,可讓OceanBase技術團隊繼續生存下去。淘寶的核心業務已經應用了MySQL開源數據庫而且比較穩定,MySQL已經能知足淘寶的大部分業務需求。到了2012年的時候,OceanBase團隊面臨要解散的危機。這個時候,王堅聯繫了當時的螞蟻金服CEO彭蕾,把OceanBase團隊推薦到了支付寶。而螞蟻金服的CTO程立,又極大地支持了OceanBase的發展。2014年雙十一,程立出面,把交易流量的1%切給OceanBase,但實際的結果倒是切了10%,由於當時的Oracle數據庫系統確實支撐不了洶涌而來的巨大流量。

後來的結果是OceanBase成功支撐了2014年雙十一10%的交易流量。但就在2014年6月份,當OceanBase已經從技術上準備好,須要切到交易業務時,由於業務系統改造的工做量大,致使OceanBase兩個月都沒法上線。「到了8月份,我急了,就給魯肅(程立)和Lucy(彭蕾)寫郵件,這個事情後來就推進了。」

除了王堅、彭蕾、程立等阿里巴巴/螞蟻金服等「一把手」對於OceanBase的大力支持外,當時負責阿里巴巴整個後臺系統的劉振飛從第一天起就一直是OceanBase的堅決支持者。劉振飛於2006年加入阿里,曾任淘寶技術保障部總監,後來升至阿里巴巴副總裁負責技術保障部、是阿里巴巴合夥人之一,現任阿里集團首席風險官兼任高德總裁。正是劉振飛的支持,才讓淘寶收藏夾用上了OceanBase。「當時振飛負責整個阿里巴巴的後臺系統,包括數據庫,沒有他的鼎力支持,OceanBase沒法在任何業務上線。」陽振坤回憶。

「甲骨文公司有十幾萬人,從事數據庫核心研發的就有2千多人,而OceanBase一開始只有幾我的,到後來也才20多我的,憑什麼讓別人相信咱們能作出比Oracle數據庫更好的技術與產品?這個確實聽起來就不靠譜。」陽振坤說,這就是雞生蛋、蛋生雞的問題,好的產品必需要有好的口碑纔會有人用,但好的口碑和好的產品卻要在使用中才能打磨出來。數據庫是作出來、更是用出來的,中國有那麼多企業、高校和科研機構作數據庫,真正可以在生產環境中大批量使用的少之又少。

今天回頭來看,OceanBase是阿里巴巴/螞蟻金服舉全集團之力而開發出來的自有知識產權數據庫,若是沒有阿里巴巴/螞蟻金服內部衆多「一把手」高管的鼎力支持,OceanBase團隊也許早就解散了。

本文做者:安和林

完整文章敬請期待後續介紹

相關文章
相關標籤/搜索