OceanBase 的前世今生

作者 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

有程序員自稱自己是“CURD工程師”,日常工作是用封裝好的方法簡單地調用數據庫。假如較少用戶或者數據量較少時,選擇何種數據庫或如何調用數據庫都沒有關係。假如有千萬級別或以上的數據處理量,稍有不慎數據庫可能就要掛了。

而在2019 雙11抗住6100萬筆/秒的數據處理峰值,阿里自研數據庫OceanBase到底是用了哪些硬核黑技術呢?

11月19日,在巔峰洞見·聚焦金融新技術發佈會上,螞蟻金服高級研究員陽振坤、螞蟻金服研究員韓鴻源為我們講述OceanBase的前世今生。

OceanBase 的前世今生

隨著互聯網興起,傳統企業級數據庫的侷限

韓鴻源表示,從上90年代和本世紀初,關係數據庫成為企業級應用開發的主要支撐平臺。那時在傳統企業裡的業務系統,接入終端的數量是有限的,所以數據是集中存儲和處理,且企業內部的使用場景可通過垂直擴展滿足要求。

隨著互聯網的發展,企業裡的業務系統不能只是給內部人員使用,而是廣泛地暴露在海量的外部用戶使用,僅憑數據庫的垂直擴展無法解決此問題。傳統關係數據庫的集中式架構已無法有效地支撐用戶訪問的請求。

隨著互聯網的發展,我們發現了一些變化。隨著用戶量和併發度暴增,這導致:

1、單體數據庫支撐業務系統逐漸變得不可能;

2、數據價值密度差異很大,低價值密度數據放鬆一致性要求;

3、從數據庫拆分走向分佈式架構設計和演進;

4、應付特定負載類型的NoSQL開始出現和發展;

5、互聯網公司的用戶規模帶來的基礎設施的擴充帶來了新的可能性——多數據中心,全局選路與負載均衡等。

另外,大規模部署的通用硬件催生了對運維自動化和自主高可用的需求,我們可以看到:

1、以Paxos為代表的分佈式選主協議開始取代主備的保護方式進入生產環境的存儲系統;

2、通用硬件的能力不斷增強了數據庫技術新的發展機會;

3、公有云提供商的區域都是三個可用區起步。

所以新一代企業級數據庫平臺應該具備新能力:消除特定的軟硬件架構以來,充分配合公有云通用資源提供的發展趨勢;有效配合跨代的應用構建和運行方式,兼顧傳統企業級和雲原生分佈式環境;支持數據在運行環境間靈活遷移;多租戶及混合負載數據庫雲服務提供能力。

由此,金融級分佈式關係數據庫OceanBase應運而生。

OceanBase 的前世今生

OceanBase的發展歷程

2011年:OceanBase 0.1版本發佈,並應用在淘寶收藏夾。

2014年:OceanBase 0.5版本發佈,引入Paxos協議保證主庫故障不丟數據,處理當年雙11的10%交易數據鏈。

2015年:OceanBase 0.5版本在支付寶的交易庫和支付庫上線,同年OceanBase上線網商銀行,成為全球首個應用在金融核心業務系統的分佈式關係數據庫。OceanBase在當年雙11處理100%交易數據鏈和50%支付數據鏈。

2016年:OceanBase 1.0版本在支付寶賬務系統上線,支撐當年雙11的12萬筆/秒的支付峰值。

2017年:OceanBase發佈1.4版本,增加轉儲功能、層次查詢功能。在當年雙11裡,包括整個賬務庫在內的全部核心系統都100%運行在OceanBase上,創造了4200萬次/秒數據庫處理峰值的紀錄。

2018年:OceanBase 2.0版本發佈,支持MySQL/Oracle雙兼容模式,是第一款支持存儲過程的原生分佈式數據庫;在OLTP場景性能較1.4版本提升50%以上,存儲成本下降30%。

2019年:OceanBase2.2版本發佈,在TPC-C測試中跑贏Oracle一舉奪冠,並在雙11裡達到6100萬筆/秒數據處理峰值。

OceanBase 的前世今生

OceanBase的特性

陽振坤錶示,傳統數據庫採用主庫+備庫的設計,如果需要備庫跟主庫完全一致,每一筆事務主庫實時同步給備庫。如此一來,可靠性主要依賴於硬件,如果備庫出現異常或者主備庫之間的網絡異常,主庫上的事務就會積壓,可能將在很短時間內撐爆主庫,導致業務不可用。

而OceanBase在傳統的主備鏡像的基礎上增加一個備庫,主庫同步事務到兩個備庫,只要有一個備庫收到,加上主庫自己至少兩個庫收到就可以。如此一來,每一筆事務至少在三個庫中的兩個庫落地,任何一個庫出問題了,每筆交易至少存在於一臺機器上,這樣便實現高可用。

在架構上,OceanBase採用Share-Nothing架構,各個節點之間完全對等,每個節點都有自己的 SQL 引擎和存儲引擎:

OceanBase 的前世今生

如此一來,OceanBase擁有以下特性:

1、強一致:採用分佈式事務,並進行多重數據校驗,ACID(原子性、一致性、隔離性、持久性)強一致。

2、高可用:基於 Paxos 協議,少數派故障,數據不丟,服務不停;RPO(Recovery Point Objective,復原點目標)=0;RTO (Recovery Time Objective,復原間目標)<30s。

3、高可擴展:水平擴展,在線擴容縮容,服務不停;單集群規模超100臺,數據量超2PB;單表最多記錄數超3200億條。

4、低成本:基於普通 PC 服務器,高存儲壓縮率;金融單賬戶成本為傳統方案的1/10 - 1/5。

5、高性能:準內存數據庫性能,6100 萬次/秒處理峰值的記錄。

6、高兼容:兼容MySQL和Oracle。

在會上,韓鴻源宣佈OceanBase2.2版正式發佈,兼容MySQL和Oracle兩種模式,並在Oracle模式中引入了多種功能,相對2.0版本,集群穩定性大幅提升,分佈式事務運行穩定,最大單錶行數達萬億級,單集群最大數據量超過3PB。OLTP性能相比2.0版本提升50%以上,部分複雜場景提升100%。

目前,網商銀行、南京銀行、中國建設銀行、西安銀行、招商證券、常熟農商銀行、蘇州銀行等多家金融機構已經在生產系統中使用OceanBase。

在未來兩年的時間裡,OceanBase 預計實現大部分Oracle 業務的平滑遷移,並將進一步完善商業智能分析的功能,以一套系統、一份數據實現交易處理+商業智能分析的混合負載。

從一開始OceanBase應用到“邊緣性”業務——收藏夾,到處理10%交易鏈數據,再到整個賬務庫在內的全部核心系統100%運行在OceanBase。其處理峰值從12萬次/秒,到4200萬次/秒,再到今年的新峰值6100萬次/秒,我們每年見證OceanBase的“不可思議”與“再創新高”。

下一年雙11,OceanBase又將給我們帶來怎樣的驚喜呢?

又或許OceanBase僅僅只是將“所有不可思議,終將化為尋常。”

OceanBase 的前世今生

【End】


分享到:


相關文章: