Categories
程式開發

分佈式數據庫是金融機構數字化轉型的最佳路徑


支付寶在全球有十幾億用戶,他們可以同時進行可靠、穩定、高效的支付交易,這背後離不開一個重要的秘密武器——OceanBase。 今天我很榮幸向大家介紹OceanBase的發展過程、產品特點,以及在保險行業的最佳實踐。

分佈式數據庫OceanBase的迭代

OceanBase數據庫立項於2010年,第一個客戶是淘寶收藏夾。 2013年,OceanBase開始了對SQL的支持。 2014年,OceanBase開始支持網商銀行的所有業務,成為了全球首個應用在金融核心業務系統的分佈式關係數據庫。 從2014年到2016年,支付寶全部的交易系統和核心賬務系統都跑在OceanBase之上。 多年來全世界十幾億用戶在支付寶上發生的所有交易都是由OceanBase來承載,始終穩若磐石。

2017年,我們開始向更多的外部客戶輸出我們的技術,我們幫助南京銀行打造了“鑫雲+”互聯網金融業務核心。 OceanBase服務過的這些場景裡既包括新興的互聯網金融核心業務、傳統的金融核心業務,也包括對傳統數據庫的替換、對MySQL的替換,都非常成功。

2019年, OceanBase參加了世界數據庫範圍內最權威的TPC-C認證測試,我們取得了6088萬tpmC的成績,是第二名傳統數據庫公司甲骨文的兩倍。 TPC-C絕對不是一個簡單的跑分測試,實際上,它是要求被測試的對象必須滿足數據庫的ACID四個事務特徵才能夠進行的測試。

2020年,我們又一次參加了TPC-C測試, 達到了7.07億tpmC,跑出了接近去年12倍的成績,再次問鼎TPC-C榜首。 今年6月份OceanBase正式獨立成公司,我們立志於成為世界領先的企業級數據技術解決方案提供商。

數據庫形態演進

金融業的核心業務系統,包括保險行業的核心業務系統仍舊大規模使用傳統集中式數據庫。 這種方案帶來了兩個問題,一是 集中式數據庫造價非常高 ,來自於兩方面,一方面是軟件License很貴;另一方面是硬件很貴,因為它必須使用高端硬件,比如IBM的大機、EMC的高端存儲,這些都是非常昂貴的,時間長了再大的企業也很難承受;二是 擴展性非常不好 ,傳統集中式數據庫都是基於共享存儲(shared-storage)的方式做橫向擴展,當面臨關鍵業務系統發展需要不斷擴容的時候,這種方案有心無力,難以做有效的支撐。

對於上面這種方案業界提了一種補丁方案,十幾年前曾有人提出既然傳統集中式數據庫很貴,那麼在單機開源的基礎上加一個語法兼容,這樣就解決了它昂貴的問題。 但是發展到今天,我們在金融領域的核心系統還沒有看到廣泛使用這種方案。 原因很簡單,金融業核心系統使用傳統集中式數據庫主要不是因為它們在語法上的完善和優秀,根本原因在於它們的穩定可靠,而這個補丁方案做不到這些,同時這個方案也沒有解決擴展性的問題。

說到擴展性同樣是在十幾年以前,最早在互聯網企業中提出了這麼一種方案,叫做 分庫分錶 ,一個典型的例子就是在多台單機的MySQL上,用Proxy把MySQL單機集成為MySQL集群,提供很好的算力。 這種方案同樣具有很大的問題,當計算發生在單個MySQL機器內部的時候一切很好,但是一旦用戶的負載跨越MySQL單機邊界的時候,你可能會發現分庫分錶系統的表現並不盡如人意。 具體來說,在全局事務、數據強一致性、負載均衡以及復雜SQL方面都不能很好的支持,所以這種方案的使用場景非常受限。 截止到今天,在銀行、保險、券商行業的核心業務系統中依然沒有廣泛使用過這種方案。

那麼到底是否存在這樣一種數據庫系統,它既可以提供傳統集中式數據庫的高可靠性,又成本可控,同時擴展性良好? 在這個基礎之上還能夠滿足事務的ACID、具備強一致性、複雜SQL的處理能力? 答案是有,而且可以更好,那就是OceanBase。

OceanBase的三大獨特價值

首先,OceanBase是一款完全自主研發的分佈式關係數據庫, 代碼是百分之百自研的,包括SQL引擎、存儲引擎都是我們的工程師自己一行一行代碼寫出來的。 這一點很重要,它意味著當你的數據庫出現問題的時候,我們的工程師不需要求助開源社區,我們自己就可以兜底,這對於要求穩定,要求可靠,要求有可預期性的金融領域的核心業務系統是一個剛需,這一點OceanBase可以充分提供。

第二, OceanBase是全世界唯一一款經過長時間複雜金融場景驗證的原生分佈式數據庫。 數據庫其實是一個非常複雜的系統,它的複雜度甚至不亞於操作系統,對它的各種複雜應用場景的測試不是一個簡單的測試程序可以窮盡的。 目前,可能唯一有效的方法就是在實踐中找到足夠複雜、足夠多的場景對數據庫進行反复的使用,使用到最後沒有問題為止大家才會信任它。 我們非常高興的告訴大家,OceanBase做到了。

第三,OceanBase數據庫是全世界範圍內唯一一款基於普通的X86雲服務器,在TPC-C領域獲得第一名的原生分佈式數據庫。 登頂TPC-C榜單意味著OceanBase不但可以提供世界級的性能,而且可以提供單機數據庫一樣的完整體驗,這一點意味著用戶可以像使用單機數據庫一樣使用OceanBase。

OceanBase核心特性

在OceanBase數據庫中,我們通過“五高一多”的特點定義了分佈式數據庫的領先標準。

高可用

我們通過Paxos協議和多副本技術,可以提供很好的高可用性,當出現災難的時候我們可以做到RPO=0,RTO<30秒,這完全可以滿足企業的容災需求。 同時由於我們使用的是Paxos協議, Paxos協議是支持日誌空洞的,這就帶來一個好處,當在網絡出現波動的時候,我們可以給到更好的性能保證。

OceanBase的高可用性,是完全在通用X86服務器和普通硬件上提供出來的,沒有使用任何高端硬件,所以我們的成本會更低一些。

高擴展

在實際生產系統中單個OceanBase集群內的服務器可以達到100台以上。 而且OceanBase具有很好的線性擴展比。 高擴展性還體現在擴容時的自動負載均衡,這意味著當DBA需要擴容的時候,所做的只是增加一台機器到集群裡,接下來,我們的OceanBase管理系統會自動的根據系統的負載情況,把數據遷移到新加的機器上。 整個擴容縮容過程中,業務沒有感知。

高性能

我們採用了很多先進的技術來提高數據庫的性能。 比如LSM Tree、無鎖結構、消除磁盤的隨機寫等等,這些技術幫助我們充分使用硬件的能力,再輔以高擴展性,我們就可以提供一個世界級性能的OceanBase集群。

在實際的生產系統裡,我們可以在峰值的時候提供6100萬次每秒,單表最大容量可以到3200億行。 和高性能伴隨的是低成本,因為我們採用了LSM Tree結構,所以當數據落盤的時候是更有組織的,可以做到1:3的壓縮比。

高透明

我們實現了不少關鍵技術,比如全局一致性快照、全局索引、自動事務兩階段提交。 使用OceanBase數據庫,應用就像使用一台單機數據庫一樣,不需要做針對分佈式數據庫的特別感知和修改。

高兼容

我們在一套OceanBase集群上同時為您提供兩套生態,一套是Oracle生態,一套是MySQL生態,有效地降低業務遷移改造的成本。 同時我們和國內主流的操作系統、芯片也都做了互認的支持,可以有效滿足技術供應鏈安全的需求。

多租戶

多租戶就是在一個OceanBase集群上,可以建立很多個租戶,每個租戶對應一個Oracle實例或者是MySQL實例。 可以用這個特性實現業務大集中,把以前全國一省一套的傳統集中式數據庫都集中在一個OceanBase數據庫集群那裡。 也可以做不同種類的小業務的集中,之前幾十個小的業務現在都集中在一個OceanBase集群裡統一管理,這個特性不但可以有效利用集群資源,更可以有效降低DBA的運維成本。

OceanBase產品定位與形態

OceanBase可以提供擁有世界級性能的OLTP引擎,同時也提供一個非常優秀的OLAP引擎,這意味著輔以剛才提到的多租戶功能,您可以在一個OceanBase的集群裡創建不同的實例,有的專門用於交易,有的專門用於分析,當然也可以創建一個大的實例,既做交易又做分析。 OceanBase目前真正做到了一套HTAP引擎,它能夠同時支持交易和分析型業務。

OceanBase的容災架構,既支持經典的主備容災方式,同時也支持基於Paxos協議的容災方式,我們支持同機房三副本,也支持同城三機房,甚至是兩地三中心,三地五中心,這些不同的容災級別可以完全滿足您的容災訴求。

關於部署模式,如果您希望和阿里云其他的優秀產品,比如和金融級分佈式中間件SOFA或者對象雲存儲OSS一起使用,那麼OceanBase可以在阿里雲的專有云上為您輸出。 如果您只想使用OceanBase,我們也可以以一個純License的方式提供給您,就在您的服務器上安裝我們的軟件,一樣可以獲得一個高可用、高擴展、高性能的集群。 如果您希望只是購買一個公有云的服務,您可以在阿里雲的公有云上購買一個OceanBase的RDS。 這些不同選項可以無縫適配您各種不同的需求。

OceanBase在保險業的實踐

OceanBase在保險業的最佳實踐,一個很好的案例就是人保健康險。 如果不熟悉的朋友可以打開您的手機支付寶,在上面搜“好醫保”就可以看到人保健康險的產品。 人保健康利用了金融級分佈式數據庫OceanBase和金融級分佈式中間件SOFAStack解決了高並發保單處理能力速度慢的問題,目前每日平均出單量在15萬左右。

自2018年4月11日人保健康险好医保产品成功上线后,截止到目前,好医保已成为支付宝网红保险产品。OceanBase上线中国人保健康以后,取得了显著的收益:

  • 處理能力提升了上千倍,並可根據業務情況動態擴容
  • 2018款好醫保住院醫療保險,每天1萬單的日結文件,處理速度從以前的4小時縮短至6分鐘
  • 新產品上線時間縮短80%以上,從原來的數週縮短至數天
  • 採用多種協議轉換和標準化對接流程,使外部渠道接入效率提升6倍,支持第三方業務快速拓展

謝謝大家聽完我的匯報,期待著未來我們可以用OceanBase數據庫更好地服務於保險行業,和各位好朋友一起打造面向未來的保險業的核心業務系統。

作者介紹

郭援非,螞蟻集團高級解決方案架構師

本文轉載自公眾號支付寶技術(ID:Ant-Techfin)。

原文鏈接

分佈式數據庫是金融機構數字化轉型的最佳路徑