下午好,我叫楊祥合來自網(wǎng)商銀行架構(gòu)部,過去沒有分布式數(shù)據(jù)庫的時候,業(yè)界往往用類似MYSQL這樣數(shù)據(jù)庫做分庫分表,把一個大庫拆成很多小庫。通過分庫分表提升我們數(shù)據(jù)庫的擴展能力。當拆完之后發(fā)現(xiàn)主庫和備庫之間搭建master-slave的架構(gòu),當主庫出問題,如果備庫拉起來就會丟失(部分主庫)數(shù)據(jù)。如果備庫不拉成主庫,就會損失新的業(yè)務(wù)。這樣就陷入難以決策的麻煩。隨著分布式數(shù)據(jù)庫的發(fā)展,給了我們解決這些問題的方式。
隨著移動互聯(lián)網(wǎng)、大數(shù)據(jù)、云計算以及新興技術(shù)的蓬勃發(fā)展,誕生了互聯(lián)網(wǎng)金融,傳統(tǒng)銀行在往互聯(lián)網(wǎng)模式轉(zhuǎn)型。
網(wǎng)商銀行在移動互聯(lián)網(wǎng)、大數(shù)據(jù)、云計算等新興技術(shù)之上服務(wù)于小微企業(yè)、三農(nóng)用戶、大眾消費者以及中小金融機構(gòu)提供普惠金融服務(wù),我們建行之初提出了低成本、高可用、高彈性的要求,銀行作為強監(jiān)管行業(yè),銀監(jiān)會和人行在不同場合提出了自主可控的要求,在這種背景下,我們使用了自主研發(fā)的分布式數(shù)據(jù)庫OceanBase來作為我們核心的數(shù)據(jù)庫。
先看一下oceanBase的核心特性,每年雙十一大促是全民的雙十一也是OceanBase的雙十一,OceanBase去年的數(shù)據(jù)每秒32.5萬筆/秒,這是從性能方面說。從單表數(shù)據(jù)量來看,單表數(shù)據(jù)量已遠超過3200億,3200億是兩年前的數(shù)據(jù)。
可擴展性方面,單機群達到百臺服務(wù)器以上。每年雙十一有可能建設(shè)新的機房,利用 OceanBase本身的彈性能力,把一部分數(shù)據(jù)彈到新的機房去。
在高可用方面,oceanBase是用Paxos協(xié)議,提供多副本的協(xié)議,RTO=0,RTO<30秒。高可用方面,給大家的感知就是我們的系統(tǒng)到底怕不怕挖掘機的問題。
(據(jù)媒體報道)6月2日,AWS(中國)中斷了十多個小時。(網(wǎng)商銀行)我們希望為用戶提供高可靠的服務(wù),那需要付出一定的成本,這個后面去談。
我們提供了多租戶的能力,前面幾位老師提過不同業(yè)務(wù)之間擔心相互干擾,多租戶提供了這樣的隔離能力。
易用性方面兼容MYSQL和Oracle語法,可以讓應用免修改代碼直接使用。許多現(xiàn)有業(yè)務(wù),可直接運行在oceanBase數(shù)據(jù)庫上。
從架構(gòu)方面來說,OceanBase集群是分布式的多副本架構(gòu),我們建議使用三個副本以上,每個副本分布在一個zone里面,每個zone分布在一個機房里。對于金融行業(yè)來說,我們是這么看分布式數(shù)據(jù)庫的,我們說它拓展了單機數(shù)據(jù)庫的容量,提供了機房級、地域級容災及異地多活等能力。
回顧網(wǎng)商銀行的架構(gòu)發(fā)展史,創(chuàng)新能力一直是網(wǎng)商銀行架構(gòu)發(fā)展的一個驅(qū)動力。在網(wǎng)商銀行整個4年的架構(gòu)發(fā)展當中,我們經(jīng)歷了數(shù)據(jù)庫的版本升級、拆庫拆表、秒級彈性數(shù)據(jù)源建設(shè)。很多時候傳統(tǒng)銀行要向分布式數(shù)據(jù)庫上轉(zhuǎn)型可能會面臨著把單機數(shù)據(jù)庫通過拆庫拆表拆成成多個,從而提高極端情況下的可用性。對比傳統(tǒng)銀行有ATM,有物理網(wǎng)點,現(xiàn)在因為大家都有了隨身攜帶的手機,我們希望網(wǎng)商銀行手機APP能夠為大家隨時隨地的7×24小時的服務(wù),為了這個(目標)我們不遺余力。
網(wǎng)商銀行的架構(gòu)發(fā)展從5庫10表發(fā)展到百庫百表并且建立秒級彈性數(shù)據(jù)源,下面一起看一下。先說數(shù)據(jù)庫的遷移和拆分,這個可能是傳統(tǒng)銀行要上到分布式數(shù)據(jù)庫需要經(jīng)歷的,我們通過如上圖一種架構(gòu),在我們內(nèi)部叫OMS的一站式數(shù)據(jù)遷移平臺,它具備的能力是什么?
當我們有一個老的庫比如OB0.5,美國服務(wù)器租用,從老的庫OB0.5遷移到OB1.0,我們一定想使用生產(chǎn)數(shù)據(jù)做驗證、生產(chǎn)的流量做驗證,因為線下人力測試驗證遠遠趕不上線上數(shù)據(jù)真實而且復雜。在這種情況下,我們通過分布式的數(shù)據(jù)訪問組件或者數(shù)據(jù)流量錄制能力把流量錄制下來,把流量轉(zhuǎn)發(fā)到雙寫測試庫當中,雙寫測試庫是一個1.0的庫。通過這樣的驗證知道SQL性能是否OK和語法是不是兼容。
在遷移切換中有增量全量同步并且提供秒級數(shù)據(jù)校驗,分鐘級切換和回滾,整個過程一鍵完成,通過OMS平臺構(gòu)建了異構(gòu)數(shù)據(jù)庫之間進行互相遷移。
去年做的第二個創(chuàng)新點,上了秒級彈性數(shù)據(jù)源,當一套數(shù)據(jù)庫集群不能滿足我們要求的時候,我們想著加更多數(shù)據(jù)庫集群上來,網(wǎng)商銀行實現(xiàn)了在一個應用數(shù)據(jù)源上掛多個數(shù)據(jù)庫集群。我們實現(xiàn)了最大一百個數(shù)據(jù)中心同時為提供服務(wù),任何一個業(yè)務(wù)都可以跨100個數(shù)據(jù)中心,這就是我們架構(gòu)創(chuàng)新帶來的擴展能力。
通過這樣一個能力,比如我們的生產(chǎn)庫如果耗時達到一定的閾值,會自動切換到新的FO(故障切換)庫,是實現(xiàn)了不同數(shù)據(jù)庫集群自動化容災。(盡管分布式數(shù)據(jù)庫足夠穩(wěn)健),這是在非常極端的情況下數(shù)據(jù)庫出現(xiàn)問題會自動幫你完成切換。