各位朋友,下午好!
支付寶在全球有十幾億用戶,他們可以同時進(jìn)行可靠、穩(wěn)定、高效的支付交易,這背后離不開一個重要的秘密武器——OceanBase。今天我很榮幸向大家介紹OceanBase的發(fā)展過程、產(chǎn)品特點,以及在保險行業(yè)的最佳實踐。
分布式數(shù)據(jù)庫OceanBase的迭代
OceanBase數(shù)據(jù)庫立項于2010年,第一個客戶是淘寶收藏夾。2013年,OceanBase開始了對SQL的支持。2014年,OceanBase開始支持網(wǎng)商銀行的所有業(yè)務(wù),成為了全球首個應(yīng)用在金融核心業(yè)務(wù)系統(tǒng)的分布式關(guān)系數(shù)據(jù)庫。從2014年到2016年,支付寶全部的交易系統(tǒng)和核心賬務(wù)系統(tǒng)都跑在OceanBase之上。多年來全世界十幾億用戶在支付寶上發(fā)生的所有交易都是由OceanBase來承載,始終穩(wěn)若磐石。
2017年,我們開始向更多的外部客戶輸出我們的技術(shù),我們幫助南京銀行打造了“鑫云+”互聯(lián)網(wǎng)金融業(yè)務(wù)核心。OceanBase服務(wù)過的這些場景里既包括新興的互聯(lián)網(wǎng)金融核心業(yè)務(wù)、傳統(tǒng)的金融核心業(yè)務(wù),也包括對傳統(tǒng)數(shù)據(jù)庫的替換,對MySQL的替換,都非常成功。
2019年, OceanBase參加了世界數(shù)據(jù)庫范圍內(nèi)最權(quán)威的TPC-C認(rèn)證測試,我們?nèi)〉昧?088萬tpmC的成績,是第二名傳統(tǒng)數(shù)據(jù)庫公司甲骨文的兩倍。TPC-C絕對不是一個簡單的跑分測試,實際上,它是要求被測試的對象必須滿足數(shù)據(jù)庫的ACID四個事務(wù)特征才能夠進(jìn)行的測試。
2020年,我們又一次參加了TPC-C測試, 達(dá)到了7.07億tpmC,跑出了接近去年12倍的成績,再次問鼎TPC-C榜首。今年6月份OceanBase正式獨立成公司,我們立志于成為世界領(lǐng)先的企業(yè)級數(shù)據(jù)技術(shù)解決方案提供商。
數(shù)據(jù)庫形態(tài)演進(jìn)
金融業(yè)的核心業(yè)務(wù)系統(tǒng),包括保險行業(yè)的核心業(yè)務(wù)系統(tǒng)仍舊大規(guī)模使用傳統(tǒng)集中式數(shù)據(jù)庫。這種方案帶來了兩個問題,一是集中式數(shù)據(jù)庫造價非常高,來自于兩方面,一方面是軟件License很貴;另一方面是硬件很貴,因為它必須使用高端硬件,比如IBM的大機、EMC的高端存儲,這些都是非常昂貴的,時間長了再大的企業(yè)也很難承受;二是擴展性非常不好,傳統(tǒng)集中式數(shù)據(jù)庫都是基于共享存儲(shared-storage)的方式做橫向擴展,當(dāng)面臨關(guān)鍵業(yè)務(wù)系統(tǒng)發(fā)展需要不斷擴容的時候,這種方案有心無力,難以做有效的支撐。
對于上面這種方案業(yè)界提了一種補丁方案,十幾年前曾有人提出既然傳統(tǒng)集中式數(shù)據(jù)庫很貴,那么在單機開源的基礎(chǔ)上加一個語法兼容,這樣就解決了它昂貴的問題。但是發(fā)展到今天,我們在金融領(lǐng)域的核心系統(tǒng)還沒有看到廣泛使用這種方案。原因很簡單,金融業(yè)核心系統(tǒng)使用傳統(tǒng)集中式數(shù)據(jù)庫主要不是因為它們在語法上的完善和優(yōu)秀,根本原因在于它們的穩(wěn)定可靠,而這個補丁方案做不到這些,同時這個方案也沒有解決擴展性的問題。
說到擴展性同樣是在十幾年以前,最早在互聯(lián)網(wǎng)企業(yè)中提出了這么一種方案,叫做分庫分表,一個典型的例子就是在多臺單機的MySQL上,用Proxy把MySQL單機集成為MySQL集群,提供很好的算力。這種方案同樣具有很大的問題,當(dāng)計算發(fā)生在單個MySQL機器內(nèi)部的時候一切很好,但是一旦用戶的負(fù)載跨越MySQL單機邊界的時候,你可能會發(fā)現(xiàn)分庫分表系統(tǒng)的表現(xiàn)并不盡如人意。具體來說,在全局事務(wù)、數(shù)據(jù)強一致性、負(fù)載均衡以及復(fù)雜SQL方面都不能很好的支持,所以這種方案的使用場景非常受限。截止到今天,在銀行、保險、券商行業(yè)的核心業(yè)務(wù)系統(tǒng)中依然沒有廣泛使用過這種方案。
那么到底是否存在這樣一種數(shù)據(jù)庫系統(tǒng)?它既可以提供傳統(tǒng)集中式數(shù)據(jù)庫的高可靠性,又成本可控,同時擴展性良好。在這個基礎(chǔ)之上還能夠滿足事務(wù)的ACID、具備強一致性、復(fù)雜SQL的處理能力。答案是有,而且可以更好,那就是OceanBase。
OceanBase的三大獨特價值
首先,OceanBase是一款完全自主研發(fā)的分布式關(guān)系數(shù)據(jù)庫,代碼是百分之百自研的,包括SQL引擎、存儲引擎都是我們的工程師自己一行一行代碼寫出來的。這一點很重要,它意味著當(dāng)你的數(shù)據(jù)庫出現(xiàn)問題的時候,我們的工程師不需要求助開源社區(qū),我們自己就可以兜底,這對于要求穩(wěn)定,要求可靠,要求有可預(yù)期性的金融領(lǐng)域的核心業(yè)務(wù)系統(tǒng)是一個剛需,這一點OceanBase可以充分提供。
第二, OceanBase是全世界唯一一款經(jīng)過長時間復(fù)雜金融場景驗證的原生分布式數(shù)據(jù)庫。數(shù)據(jù)庫其實是一個非常復(fù)雜的系統(tǒng),它的復(fù)雜度甚至不亞于操作系統(tǒng),對它的各種復(fù)雜應(yīng)用場景的測試不是一個簡單的測試程序可以窮盡的。目前,可能唯一有效的方法就是在實踐中找到足夠復(fù)雜、足夠多的場景對數(shù)據(jù)庫進(jìn)行反復(fù)的使用,使用到最后沒有問題為止大家才會信任它。我們非常高興的告訴大家,OceanBase做到了。
第三,OceanBase數(shù)據(jù)庫是全世界范圍內(nèi)唯一一款基于普通的X86云服務(wù)器,在TPC-C領(lǐng)域獲得第一名的原生分布式數(shù)據(jù)庫。登頂TPC-C榜單意味著OceanBase不但可以提供世界級的性能,而且可以提供單機數(shù)據(jù)庫一樣的完整體驗,這一點意味著用戶可以像使用單機數(shù)據(jù)庫一樣使用OceanBase。
OceanBase核心特性
在OceanBase數(shù)據(jù)庫中,我們通過“五高一多”的特點定義了分布式數(shù)據(jù)庫的領(lǐng)先標(biāo)準(zhǔn)。
1、高可用
我們通過Paxos協(xié)議和多副本技術(shù),可以提供很好的高可用性,當(dāng)出現(xiàn)災(zāi)難的時候我們可以做到RPO=0,RTO<30秒,這完全可以滿足企業(yè)的容災(zāi)需求。同時由于我們使用的是Paxos協(xié)議, Paxos協(xié)議是支持日志空洞的,這就帶來一個好處,當(dāng)在網(wǎng)絡(luò)出現(xiàn)波動的時候,我們可以給到更好的性能保證。
OceanBase的高可用性,是完全在通用X86服務(wù)器和普通硬件上提供出來的,沒有使用任何高端硬件,所以我們的成本會更低一些。
2、高擴展
在實際生產(chǎn)系統(tǒng)中單個OceanBase集群內(nèi)的服務(wù)器可以達(dá)到100臺以上。而且OceanBase具有很好的線性擴展比。高擴展性還體現(xiàn)在擴容時的自動負(fù)載均衡,這意味著當(dāng)DBA需要擴容的時候,所做的只是增加一臺機器到集群里,接下來,我們的OceanBase管理系統(tǒng)會自動的根據(jù)系統(tǒng)的負(fù)載情況,把數(shù)據(jù)遷移到新加的機器上。整個擴容縮容過程中,業(yè)務(wù)沒有感知。
3、高性能
我們采用了很多先進(jìn)的技術(shù)來提高數(shù)據(jù)庫的性能。比如LSM Tree、無鎖結(jié)構(gòu)、消除磁盤的隨機寫等等,這些技術(shù)幫助我們充分使用硬件的能力,再輔以高擴展性,我們就可以提供一個世界級性能的OceanBase集群。
在實際的生產(chǎn)系統(tǒng)里,我們可以在峰值的時候提供6100萬次每秒,單表最大容量可以到3200億行。和高性能伴隨的是低成本,因為我們采用了LSM Tree結(jié)構(gòu),所以當(dāng)數(shù)據(jù)落盤的時候是更有組織的,可以做到1:3的壓縮比。
4、高透明
我們實現(xiàn)了不少關(guān)鍵技術(shù),比如全局一致性快照、全局索引、自動事務(wù)兩階段提交。使用OceanBase數(shù)據(jù)庫,應(yīng)用就像使用一臺單機數(shù)據(jù)庫一樣,不需要做針對分布式數(shù)據(jù)庫的特別感知和修改。
5、高兼容
我們在一套OceanBase集群上同時為您提供兩套生態(tài),一套是Oracle生態(tài),一套是MySQL生態(tài),有效地降低業(yè)務(wù)遷移改造的成本。同時我們和國內(nèi)主流的操作系統(tǒng)、芯片也都做了互認(rèn)的支持,可以有效滿足技術(shù)供應(yīng)鏈安全的需求。
6、多租戶
多租戶就是在一個OceanBase集群上,可以建立很多個租戶,每個租戶對應(yīng)一個Oracle實例或者是MySQL實例?梢杂眠@個特性實現(xiàn)業(yè)務(wù)大集中,把以前全國一省一套的傳統(tǒng)集中式數(shù)據(jù)庫都集中在一個OceanBase數(shù)據(jù)庫集群那里。也可以做不同種類的小業(yè)務(wù)的集中,之前幾十個小的業(yè)務(wù)現(xiàn)在都集中在一個OceanBase集群里統(tǒng)一管理,這個特性不但可以有效利用集群資源,更可以有效降低 DBA的運維成本。
OceanBase產(chǎn)品定位與形態(tài)
OceanBase可以提供擁有世界級性能的OLTP引擎,同時也提供一個非常優(yōu)秀的OLAP引擎,這意味著輔以剛才提到的多租戶功能,您可以在一個OceanBase的集群里創(chuàng)建不同的實例,有的專門用于交易,有的專門用于分析,當(dāng)然也可以創(chuàng)建一個大的實例,既做交易又做分析。OceanBase目前真正做到了一套HTAP引擎,它能夠同時支持交易和分析型業(yè)務(wù)。
OceanBase的容災(zāi)架構(gòu),既支持經(jīng)典的主備容災(zāi)方式,同時也支持基于Paxos協(xié)議的容災(zāi)方式,我們支持同機房三副本,也支持同城三機房,甚至是兩地三中心,三地五中心,這些不同的容災(zāi)級別可以完全滿足您的容災(zāi)訴求。
關(guān)于部署模式,如果您希望和阿里云其他的優(yōu)秀產(chǎn)品,比如和金融級分布式中間件SOFA或者對象云存儲OSS一起使用,那么OceanBase可以在阿里云的專有云上為您輸出。如果您只想使用OceanBase,我們也可以以一個純License的方式提供給您,就在您的服務(wù)器上安裝我們的軟件,一樣可以獲得一個高可用、高擴展、高性能的集群。如果您希望只是購買一個公有云的服務(wù),您可以在阿里云的公有云上購買一個OceanBase的RDS。這些不同選項可以無縫適配您各種不同的需求。
OceanBase在保險業(yè)的實踐
OceanBase在保險業(yè)的最佳實踐。一個很好的案例就是人保健康險。如果不熟悉的朋友可以打開您的手機支付寶,在上面搜好醫(yī)保就可以看到人保健康險的產(chǎn)品。人保健康利用了金融級分布式數(shù)據(jù)庫OceanBase和金融級分布式中間件SOFAStack解決了高并發(fā)保單處理能力速度慢的問題,目前每日平均出單量在15w左右。
自2018年4月11日人保健康險好醫(yī)保產(chǎn)品成功上線后,截止到目前,好醫(yī)保已成為支付寶網(wǎng)紅保險產(chǎn)品。OceanBase上線中國人保健康以后,取得了顯著的收益:
- 處理能力提升了上千倍,并可根據(jù)業(yè)務(wù)情況動態(tài)擴容
- 2018款好醫(yī)保住院醫(yī)療保險,每天1萬單的日結(jié)文件,處理速度從以前的4小時縮短至6分鐘
- 新產(chǎn)品上線時間縮短80%以上,從原來的數(shù)周縮短至數(shù)天
- 采用多種協(xié)議轉(zhuǎn)換和標(biāo)準(zhǔn)化對接流程,使外部渠道接入效率提升6倍,支持第三方業(yè)務(wù)快速拓展
謝謝大家聽完我的匯報,期待著未來我們可以用OceanBase數(shù)據(jù)庫更好的服務(wù)于保險行業(yè),和各位好朋友一起打造面向未來的保險業(yè)的核心業(yè)務(wù)系統(tǒng)。