揭秘阿里服務(wù)互聯(lián)網(wǎng)金融的關(guān)系數(shù)據(jù)庫(kù)——OceanBase(轉(zhuǎn))

時(shí)至今日,“Big data”(大數(shù)據(jù))時(shí)代的來(lái)臨已經(jīng)毋庸置疑,尤其是在電信、金融等行業(yè),幾乎已經(jīng)到了“數(shù)據(jù)就是業(yè)務(wù)本身”的地步。這種趨勢(shì)已經(jīng)讓很多相信數(shù)據(jù)之力量的企業(yè)做出改變。為了應(yīng)對(duì)大數(shù)據(jù)的沖擊,淘寶將以前的Oracle、小型機(jī)、高端存儲(chǔ)模式轉(zhuǎn)變到現(xiàn)今的MySQL、OceanBase、Hbase、MongoDB等數(shù)據(jù)庫(kù),并使用普通PC服務(wù)器。本篇文章來(lái)自螞蟻金服高級(jí)研究員陽(yáng)振坤,將會(huì)介紹OceanBase如何服務(wù)互聯(lián)網(wǎng)金融業(yè)務(wù),以及實(shí)現(xiàn)過程中的一些技術(shù)細(xì)節(jié)。

OceanBase進(jìn)入金融級(jí)應(yīng)用

4月2日,螞蟻金服方面宣布,螞蟻金服及阿里巴巴自主研發(fā)的通用關(guān)系數(shù)據(jù)庫(kù)OceanBase已經(jīng)開始支撐淘寶、天貓和聚劃算的所有日常交易。這個(gè)改變意味著OceanBase已經(jīng)有能力滿足互聯(lián)網(wǎng)海量數(shù)據(jù)處理的需求,可以支撐復(fù)雜、高可靠的金融級(jí)業(yè)務(wù)。

隨著互聯(lián)網(wǎng)的發(fā)展,海量數(shù)據(jù)的處理越來(lái)越成為擺在大型互聯(lián)網(wǎng)公司面前的問題。而傳統(tǒng)的IT企業(yè)提供的服務(wù),在系統(tǒng)可擴(kuò)展性、性價(jià)比方面已經(jīng)不再適用。

以數(shù)據(jù)庫(kù)系統(tǒng)舉例,一般來(lái)說(shuō),數(shù)據(jù)庫(kù)系統(tǒng)的穩(wěn)定可靠,取決于數(shù)據(jù)庫(kù)軟件、數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)存儲(chǔ)三方面。其中,數(shù)據(jù)庫(kù)軟件的維護(hù)升級(jí)總是讓互聯(lián)網(wǎng)企業(yè)比較頭疼:數(shù)據(jù)庫(kù)軟件的維護(hù)升級(jí)有很大的風(fēng)險(xiǎn),為了保障數(shù)據(jù)庫(kù)系統(tǒng)的穩(wěn)定可靠,企業(yè)需要匹配使用穩(wěn)定性好的高端服務(wù)器和共享存儲(chǔ),但是這些設(shè)備不僅價(jià)格昂貴,性能和擴(kuò)展能力也有限。

在這種情況下,2010年起,阿里巴巴、螞蟻金服開始自主研發(fā)數(shù)據(jù)庫(kù)系統(tǒng)OceanBase,這一系統(tǒng)從立項(xiàng)到開花結(jié)果經(jīng)歷了足足五年時(shí)間。

與傳統(tǒng)數(shù)據(jù)庫(kù)公司的產(chǎn)品相比,OceanBase的升級(jí)維護(hù),不需要昂貴的共享存儲(chǔ)、高可靠的服務(wù)器、數(shù)據(jù)庫(kù)軟件的許可費(fèi),可以將商業(yè)數(shù)據(jù)庫(kù)成本降到一半以下。同時(shí),分布式的系統(tǒng),可以保證業(yè)務(wù)在服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)等出現(xiàn)異常情況的情況下不受影響。

實(shí)際上,OceanBase此前已經(jīng)通過了“雙十一”考驗(yàn)。數(shù)據(jù)顯示,2014年雙十一,支付寶支付峰值就達(dá)到了285萬(wàn)筆/分鐘,是2013年雙十一支付峰值的3倍。借助OceanBase全分布、全冗余、高彈性、低成本的海量交易與數(shù)據(jù)處理架構(gòu),支付寶順利通過交易洪峰的考驗(yàn)。目前,OceanBase已經(jīng)可以支撐淘寶、天貓、聚劃算在支付寶的所有日常交易。

OceanBase服務(wù)互聯(lián)網(wǎng)金融業(yè)務(wù)背后的技術(shù)

數(shù)據(jù)庫(kù)系統(tǒng)不僅保存了現(xiàn)代企業(yè)的關(guān)鍵業(yè)務(wù)數(shù)據(jù),而且對(duì)這些數(shù)據(jù)提供訪問從而支撐著企業(yè)業(yè)務(wù)。因此,數(shù)據(jù)庫(kù)系統(tǒng)的穩(wěn)定可靠對(duì)現(xiàn)代企業(yè)至關(guān)重要。

數(shù)據(jù)庫(kù)系統(tǒng)通常由數(shù)據(jù)庫(kù)軟件、運(yùn)行數(shù)據(jù)庫(kù)軟件的數(shù)據(jù)庫(kù)服務(wù)器硬件以及保存數(shù)據(jù)庫(kù)數(shù)據(jù)的數(shù)據(jù)庫(kù)存儲(chǔ)硬件(即共享存儲(chǔ))組成,如下圖所示:

001.png

數(shù)據(jù)庫(kù)系統(tǒng)的穩(wěn)定可靠,也取決于這三個(gè)部分。

首先是數(shù)據(jù)庫(kù)軟件,數(shù)據(jù)庫(kù)軟件廠商平均2~3年發(fā)布一個(gè)大版本,新版本發(fā)布前會(huì)進(jìn)行反復(fù)測(cè)試。即使如此,數(shù)據(jù)庫(kù)軟件的維護(hù)升級(jí)依然有很大的風(fēng)險(xiǎn),2013年6月中國(guó)工商銀行系統(tǒng)不可用即是其數(shù)據(jù)庫(kù)DB2的維護(hù)升級(jí)導(dǎo)致,2014年8月美國(guó)國(guó)務(wù)院簽證數(shù)據(jù)庫(kù)系統(tǒng)超過1周的不可用也是其數(shù)據(jù)庫(kù)Oracle的維護(hù)升級(jí)導(dǎo)致。

其次是數(shù)據(jù)庫(kù)服務(wù)器。為了保障數(shù)據(jù)庫(kù)系統(tǒng)的穩(wěn)定可靠,傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)廠商推薦用戶使用穩(wěn)定性較高的高端服務(wù)器,這些服務(wù)器價(jià)格非常昂貴,難以擴(kuò)展,并且擴(kuò)展能力也十分有限。

第三是數(shù)據(jù)庫(kù)存儲(chǔ)(共享存儲(chǔ))。數(shù)據(jù)庫(kù)中的數(shù)據(jù)是企業(yè)最寶貴的財(cái)富,為了避免數(shù)據(jù)丟失,傳統(tǒng)數(shù)據(jù)庫(kù)廠商推薦用戶使用穩(wěn)定性較高的共享存儲(chǔ),同樣地,這類存儲(chǔ)設(shè)備價(jià)格非常昂貴,難以擴(kuò)展,并且擴(kuò)展能力也有限。

為了避免水災(zāi)、火災(zāi)或者其他自然災(zāi)害導(dǎo)致的數(shù)據(jù)庫(kù)系統(tǒng)不可用甚至數(shù)據(jù)丟失,傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)通常還要搭建備庫(kù),出于安全考慮,主庫(kù)與備庫(kù)需要保持一定的距離,例如50km或以上,俗稱主備鏡像,如下圖所示:

002.png

然而,盡管稱為主備鏡像,數(shù)據(jù)庫(kù)的備庫(kù)并不能保證與主庫(kù)一致:假如強(qiáng)制要求兩者一致,那么主庫(kù)的每一筆事務(wù)都必須到達(dá)備庫(kù)后才能提交和應(yīng)答客戶,這樣一旦主庫(kù)備庫(kù)之間的網(wǎng)絡(luò)異?;蛘邆鋷?kù)異常,整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)將不可用,從而導(dǎo)致業(yè)務(wù)的中斷,與主庫(kù)備庫(kù)部分?jǐn)?shù)據(jù)不一致相比,業(yè)務(wù)的中斷對(duì)于企業(yè)來(lái)講更加不能接受,因而主庫(kù)故障后業(yè)務(wù)切換到備庫(kù)時(shí),通常會(huì)有少量數(shù)據(jù)不一致。因此,即使部署了主備鏡像,傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)也不得不使用可靠性盡可能高的服務(wù)器和存儲(chǔ),以降低主庫(kù)故障的幾率,減少對(duì)業(yè)務(wù)的影響。之所以要使用可靠的服務(wù)器和可靠的存儲(chǔ),本質(zhì)上是因?yàn)閭鹘y(tǒng)數(shù)據(jù)庫(kù)假設(shè)硬件(服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)等)是“可靠的”。

對(duì)于數(shù)據(jù)庫(kù),與傳統(tǒng)企業(yè)相比,互聯(lián)網(wǎng)企業(yè)最大的不同之一是并發(fā)訪問量非常大。傳統(tǒng)商業(yè)企業(yè)、銀行,用戶需要通過收銀臺(tái)、銀行終端、ATM柜員機(jī)、POS機(jī)等專用設(shè)備開展業(yè)務(wù)并訪問數(shù)據(jù)庫(kù),幾百和幾千的數(shù)據(jù)庫(kù)并發(fā)訪問比較常見,幾萬(wàn)以上的并發(fā)訪問相當(dāng)少見。在互聯(lián)網(wǎng)上,每一個(gè)草根網(wǎng)民都可以發(fā)起購(gòu)物交易并訪問數(shù)據(jù)庫(kù),幾十萬(wàn)的數(shù)據(jù)庫(kù)并發(fā)訪問時(shí)??梢?,幾百萬(wàn)甚至千萬(wàn)的并發(fā)訪問都可以見到(例如雙11下的淘寶、天貓和支付寶)。如此之大的并發(fā)訪問下,商業(yè)數(shù)據(jù)庫(kù)軟件及其高可靠的數(shù)據(jù)庫(kù)服務(wù)器和共享存儲(chǔ)的成本成為了不可承擔(dān)之重。

由于上述原因,OceanBase的一個(gè)基本假設(shè)就是硬件(服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)等)是不可靠的,另一個(gè)基本假設(shè)是單機(jī)(數(shù)據(jù)庫(kù)服務(wù)器及共享存儲(chǔ))無(wú)法滿足互聯(lián)網(wǎng)業(yè)務(wù)的需求。因此,OceanBase必須是一個(gè)多機(jī)(分布式)系統(tǒng),并且必須保證任何時(shí)刻出現(xiàn)的少量硬件(服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)等)異常不影響業(yè)務(wù)。

為此,OceanBase引入了Paxos協(xié)議,每一筆事務(wù),主庫(kù)執(zhí)行完成后,要同步到半數(shù)以上庫(kù)(包括主庫(kù)自身),例如3個(gè)庫(kù)中的2個(gè)庫(kù),或者5個(gè)庫(kù)中的3個(gè)庫(kù),事務(wù)才成功。這樣,少數(shù)庫(kù)(例如3個(gè)庫(kù)中的1個(gè)庫(kù),或者5個(gè)庫(kù)中的2個(gè)庫(kù))異常后業(yè)務(wù)并不受影響:

003.png

與傳統(tǒng)數(shù)據(jù)庫(kù)相比,OceanBase的另外一個(gè)關(guān)鍵特征是軟件版本的灰度升級(jí)。主備方式的傳統(tǒng)數(shù)據(jù)庫(kù)是“單活”的,只有主庫(kù)可執(zhí)行寫事務(wù),盡管維護(hù)升級(jí)時(shí)可以先操作備庫(kù),操作完成后備庫(kù)變成主庫(kù)并且接受用戶訪問是一步到位的,如果新版本有問題,則業(yè)務(wù)受到影響:

004.png

005.png

OceanBase則是“多活”設(shè)計(jì),即多個(gè)庫(kù)(3個(gè),5個(gè)等)每個(gè)都可以有部分讀寫流量,升級(jí)時(shí)先把要升級(jí)的庫(kù)的讀寫流量切走,升級(jí)后先進(jìn)行數(shù)據(jù)對(duì)比,正常后逐步引入讀寫流量(白名單,1%,5%,10%......),一切正常并運(yùn)行一段時(shí)間后再升級(jí)其他的庫(kù):

006.png

007.png

008.png

009.png

010.png

基于硬件不可靠的假設(shè)并且能夠容忍少量服務(wù)器的故障,OceanBase使用了相對(duì)廉價(jià)的PC服務(wù)器代替高可靠服務(wù)器并且不再使用昂貴的共享存儲(chǔ),從而不僅提供了比使用高可靠服務(wù)器和共享存儲(chǔ)低得多的成本,容忍少數(shù)服務(wù)器乃至少數(shù)機(jī)群故障意味著比傳統(tǒng)數(shù)據(jù)庫(kù)更高的可靠性。通過灰度升級(jí),OceanBase避免了傳統(tǒng)數(shù)據(jù)庫(kù)的“一錘子買賣”的升級(jí),極大地降低了數(shù)據(jù)庫(kù)維護(hù)升級(jí)的風(fēng)險(xiǎn)。

來(lái)源:CSDN 資訊 本文作者:陽(yáng)振坤

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP