分佈式數據庫在光大銀行關鍵業務系統的應用探索

做者介紹:王志剛,光大銀行數據庫運維主管。

你們好,我是來自中國光大銀行信息科技部的王志剛,很是高興有機會給你們分享一些分佈式數據庫在光大銀行的應用探索。我目前在光大銀行銀行信息科技部負責數據庫管理團隊,在加入光大銀行以前在三星、索尼愛立信,還有 Oracle 工做過,一直在負責數據庫相關的工做。在近十年我和個人團隊一直負責光大銀行總行的數據庫運維,這裏面既包括咱們的交易型數據庫,也包括 MPP,還有 Hadoop 這樣的大數據運維。在運維的過程當中,咱們一直也在思考如今的數據庫有哪些問題、面臨哪些風險、數據庫技術的發展趨勢是什麼,這一點是很重要的,由於它決定了咱們爲何要轉向分佈式,咱們但願分佈式能替咱們解決哪些問題,它可以解決哪些問題和它不可以解決哪些問題。數據庫

咱們如今運維的數據庫包括商業數據庫,像 Oracle、SQL Server、DB2;也有開源數據庫,像關係型的 MySQL、NoSQL 數據庫、Redis(KV 型),還有大數據、MPP,和分佈式數據庫等等。安全

目前運維的數據庫面臨哪些挑戰?

以咱們的觀點去看如今銀行數據庫面臨哪些挑戰呢?咱們認爲有下面幾點。服務器

1. 處理能力受限

不少人都認爲咱們如今處理能力受限,可是數據庫能力受限到底瓶頸在哪裏?在咱們看來在高的業務壓力下瓶頸主要有兩點:架構

一是集中式存儲資源的壓力。咱們能夠用最高端的存儲,用最好的設備,但他終究是一個單點,他的性能受總體的限制;併發

二是熱點資源。其實咱們作數據庫的時候更會發現相較於硬件的限制,軟件的限制可能更大,像咱們常常遇到的鎖衝突的問題可能仍是比較表層的問題,其實更多的是在數據庫軟件給你提供 ACID 和各類 SQL 接口的時候,他自己不是沒有代價的,而是有成本的,這些成本自己會形成熱點的內存、熱點的序列、熱點的內部閂鎖等衝突,這些衝突在高壓力下會對咱們的性能形成極大的影響。框架

2. 部署集中會致使風險的集中

咱們能夠用最高端的設備,能夠用最好的軟件集羣,咱們能夠將故障率下降到很是很是的低,也可讓切換時間變得很是短,變成秒級,讓他能夠在幾秒的時間切換完,可是他仍舊避免不了一點,就是在咱們的數據庫是集中式的時候,一旦出現問題,在這幾秒以內咱們全部的交易都會中止。這實際上是咱們想提高的一個方面,咱們但願有一個可以 24 小時不間斷運行的數據庫。運維

3. 跨數據庫中心多活部署

銀行是兩地三中心的結構,它的投入很大,咱們但願每一箇中心都利用起來,可以利用咱們運維中數據中心的資源儘可能的對外提供業務服務,這也是咱們但願可以經過分佈式的方案去解決的。由於在傳統的架構下,咱們只能用最高端的設備,好比雙活的存儲、雙活的軟件,但這在更多的狀況下提供的是更高的可用性,並不能保證咱們在全部的數據中心同時對外服務。分佈式

4. 數據庫產品多樣化

面對內外部多變形勢,抵禦產品供應鏈風險,我認爲供應鏈的問題一直存在,在這咱們必需要感謝大洋彼岸的大統領,由於他讓咱們知道這個問題如今有多麼的緊迫,由於咱們是 China,咱們可能要跟大統領說一下「感謝,讓咱們意識到這個問題」。它決定了咱們爲何要轉向分佈式數據庫,咱們但願分佈式數據庫或者說分佈式架構替咱們解決什麼樣的問題,由於這是一個比較複雜的應用場景,當咱們在整個應用場景遇到一些問題的時候,當咱們面臨一些抉擇的時候,甚至是遇到一些困難的時候,它可讓咱們回到問題的本原,回到咱們的初心,讓咱們想一想咱們當時要解決什麼問題,咱們要選擇什麼樣的技術去解決這個問題。oop

銀行須要什麼樣的數據庫?

咱們總結了一下銀行到底須要什麼樣的數據庫。性能

首先數據庫是科技重器。

你們回想一下銀行的本原,銀行是經營什麼的?有人說銀行是經營錢的,我以爲不許確,印鈔廠是經營錢的,銀行的使命實際上是財富的流轉。之前的票號說匯通天下,意思是讓財富在空間之間流轉,如今你們貸款買房,銀行給你貸款,過幾十年你把他還清,在幾十年以後你去住這個房子,這是銀行讓財富在時間上流轉,其實銀行的使命是讓財富在時空之中流轉,在流轉的過程當中爲何你相信銀行能承擔這個使命呢?是由於銀行有一個經營的核心,這個核心是信用,只有有信用的銀行你才願意把錢存給它,這個信用不只僅是你的錢要一分不差的給你,同時還要準時的給你。若是你取存款的時候銀行跟你說:「你一個月以後再來吧,對不起如今沒有錢。」你還會存給他嗎?不會。銀行經營的核心決定了咱們後臺支撐銀行的整個系統,不只僅是數據庫,都要有準確極致的要求,既要時間準確,又要數字準確。

第二是銀行業務發展自己的須要。

互聯網金融某信、某寶的發展倒逼銀行信息系統不斷提高,既要提高交易的性能,也要提高咱們批處理的性能,由於銀行整個金融系統是互相鏈接的,你要這樣作,別人也要這樣作,咱們要連成一個總體的金融網。

第三是監管的要求。

這一點多是銀行發展和互聯網金融發展比較大的一個區別,在這裏我跟你們分享一下,在過去兩年雙十一大促的時候,光大銀行一直在雙十一網聯的統計中成功率排名第一,其實準確的說網聯考覈的不只是成功率,成功率是 99.9%,能夠說很好,可是不夠,網聯還要考覈成功的絕對數量。去年雙十一大促的時候,光大銀行在全國銀行中排名第一,是由於光大銀行在整個雙十一促銷過程當中只有三筆交易超時,因此整個系統對咱們的要求是至關苛刻的。咱們在整個環境中,不只在量大以後只能有很低的失敗比例,並且幾乎要求你每筆交易都不能錯。另外監管要求,若是有幾筆交易錯了必定要找出緣由,他對咱們的運維管理和對咱們的問題分析有極高的要求,這多是在實際應用場景中和現有的互聯網金融的一個區別。

第四是銀行也一樣面臨成本壓力。

常常有人跟咱們說銀行很好,有錢,你買買買就能夠了,銀行是有錢,可是沒有一分錢是能夠隨便花的,因此買買買只存在於段子中,現實是每一分錢都要精打細算,咱們但願把錢投入到一個真正有收益的地方,銀行須要的就是這樣的數據庫,這樣的科技產品。

關於分佈式數據庫,咱們的思考

基於上面這些思考,咱們轉向分佈式數據庫,咱們但願分佈式數據庫能解決咱們的難題,同時符合銀行對數據庫的要求。關於分佈式數據庫咱們的思考大概有如下幾種說法,有的咱們贊成,有的咱們不太贊成,在這裏我跟你們分享一下。

第一點是說中國的分佈式數據庫技術是世界第一梯隊,這點咱們認同。

由於中國的分佈式數據庫技術得益於中國有世界上最大的互聯網應用,就像你要作一個好的廚子,必定要有好的食客同樣,咱們有了好的食客,咱們就有了成爲好廚子的潛質。

第二點是當前(2020 年)分佈式數據庫產品已經成熟了嗎?

通過咱們的調研對比測試,咱們以爲這個答案是 No。分佈式數據庫產品的徹底成熟,固然也不排除後面會出現技術爆炸、飛躍,咱們認爲還須要五年以上的時間。你們能夠回想一下這個路程,咱們舉一個國外產品的例子,如今國外最大的一個數據庫廠商 70 年代末成立,進入中國是 80 年代末,真正在中國鋪開是 90 年代末,經歷了 20 年的時間。咱們如今雖然有了各類技術的飛躍,可是有些時間跨度仍是不可避免的,因此對於第二個問題的答案咱們認爲是 No。緊接着是第三個問題,咱們要繼續等待五年以後嗎?對不起,咱們的答案也是 No,其實不光是數據庫,對全部產品的成熟,咱們認爲有三種因素:

  • 第一產品自身;
  • 第二是應用開發的成熟,產品自身好仍是很差是他自身的能力,但你須要知道怎麼用他;
  • 第三是運維管理,就是你會不會管理他,會不會維護他。

就像一輛車同樣,把車作的很好這是產品自身的問題,那咱們會不會開,你會開了以後有沒有人會修。當全部這三個條件都成熟的時候,一個產品和他的環境才成熟,咱們無法等待一個產品,先把車造好了,咱們再去學怎麼開,而後咱們再去學怎麼修,這三個條件必定是同步的。

因此正是基於這個判斷,光大銀行在作分佈式數據庫這個項目的時候定了一個原則,叫躬身入局,咱們要參與其中,經過咱們的應用開發、測試、運維、實踐與產品、技術和生態共同成長。生態也很重要,你們想一想原來的廠商在中國的推廣是僅靠廠商自己嗎?我以爲不只僅是,咱們要感謝像 ITPUB 這樣的互聯網社區, 是這些社區讓咱們一塊兒成熟起來,包括在同業之間的分享和促進。

光大銀行分佈式數據庫實踐

咱們比較早認知到分佈式數據庫和整個分佈式架構轉型對銀行科技工做的重要做用。從光大銀行信息科技部整個部門來講,把分佈式數據庫的建設工做列爲了部門的年度重點工做之一,從 2018 年就開始研究,到 2019 年咱們連續同業調研、技術測試、選型論證以及試點的上線,今年咱們的計劃是進一步推廣使用的範圍。由於我是分佈式數據庫建設的項目經理,咱們之前也常常引入一些新產品,那這個項目和之前咱們作的其餘項目有什麼不一樣呢?仍是回到問題的本原,回到咱們的初心,咱們一開始要拿分佈式數據庫解決什麼問題。咱們但願它解決的是三個問題:

  • 第一是性能的問題;
  • 第二是可用性的問題;
  • 第三是多活的問題。

銀行有不少系統,小的有幾百個,大的有幾千個,這些系統中有大量的邊緣系統,在之前這些邊緣系統能夠給咱們新技術的測試提供很好的場景,可是在分佈式數據庫這個項目中,這個場景不太適用,由於咱們對邊緣系統的可用性的容忍度很高,一個邊緣系統沒有咱們以前說的那幾個問題,他無法驗證咱們的處理能力、穩定性、可用性,無法幫助咱們去鍛造開發測試和運維團隊的技術能力。並且咱們知道分佈式數據庫是比較複雜的,在這種系統中引入分佈式數據庫的時候,相對來講投入的設備量也比較大,而且他沒有真正解決技術問題,也沒有真正創造技術價值,因此正是基於這些考慮,咱們首先要把分佈式數據庫應用到真正須要的系統。因此有人跟我開玩笑說,咱們之前作項目都是 Normal 模式,但這個項目一上來就是 Hard 模式

光大銀行有兩個受客面最大的系統,也就是對客的系統,一個是理財,一個是繳費,偏偏是這兩個系統,咱們把他拿來作分佈式數據庫的引入的試點,能夠說是「到中流擊水」,咱們就要作到「第一戰即攻堅戰」。

1. 新一代財富管理平臺

光大銀行是一個有理財基因的銀行,2004 年光大銀行在國內發行了第一款人民幣理財產品,因此 2004 年也被稱爲中國的理財元年,2018 年光大集團的董事長李曉鵬提出了打造一流財富管理銀行的願景, 2019 年光大銀行成爲了首批獲批成立理財子公司的股份制商業銀行,到了同年的 9 月,光大銀行理財公司正式開業,成爲了首家開業的股份制商業銀行的理財公司。

新一代財富管理平臺是支撐咱們整個光大銀行理財公司運營的核心繫統,首先它要符合咱們的資管新規和理財新規,是新一代的理財業務的全流程管理平臺,裏面既包括銷售註冊登記,還要包括理財產品的研發設計、生命管理以及理財相關實時業務管理,能夠說是被銀行上下寄予厚望的一套系統。

在這裏安利一下光大的理財,光大理財的品牌叫作七彩陽光理財,你們看到這個圖裏七彩陽光是七種不一樣的理財風格,既有權益理財,也有混合型理財,咱們把 TiDB 用到了現金理財,就是綠色的這一部分,叫陽光碧現金理財,在這裏咱們是在受衆最廣的渠道中去應用咱們真正須要它的技術。

並非說有了分佈式數據庫,整個就萬事大吉,一鍵咱們分佈式了,其實整個過程仍是很複雜的,咱們設計了全面的分佈式架構來確保咱們的新一代理財系統可以支撐光大銀行理財子公司的財富管理的業務,依託光大銀行私有云基礎設施,基於我行自主研發平臺 4.0 開發框架,而且定製了分佈式批處理的方案。咱們的設計目標是餘額寶每小時理財交易 2000 萬,零錢通單日 5000 萬,同時還要知足將來三到五年的業務發展和接入更多互聯網的渠道,其實他是一個面向將來的系統,這個系統去年 11 月上線運行,今年 4 月正式對外開放。

具體到了 TiDB,咱們此次實施的是 TiDB 3.0.5 產品,咱們在北京有兩個中心,同城跨中心部署,15 節點,5 副本的 TiKV,設計的是 40TB 的邏輯容量,每一個節點是專門爲這個項目採購的機架式服務器,有兩個 4TB 的 SSD,24 核,512G 的內存。由於這是個重要產品,應該說「切入即決戰」,因此爲了保障新一代數據庫的平穩運行,咱們能夠開最好的車,可是必定要繫好安全帶,這個安全帶就是咱們在實施的過程當中,除了 TiDB 自己,咱們還把 TiDB 的數據實時複製到了 MySQL,用一個異構的數據庫來保證一旦出現極端狀況,能有一個逃生環境,去挽救咱們的數據,挽救咱們整個的應用。你們都知道 TiDB 以前版本有個樂觀鎖特性(TiDB 4.0 版本 正式推出了悲觀鎖功能,和 RC 隔離級別,使用 TiDB 4.0 讓應用適配更容易),這個是怎麼適配的呢?後面 TiDB 有他本身的一個方案,可是咱們這個版本尚未這個特性,咱們在整個過程當中作了大量的適配的,在出現業務衝突的時候,應用程序和業務代碼能捕獲異常、重試機制,咱們和 TiDB 的專家也作了不少合做,咱們的開發人員也作了不少修改,爲何這麼作呢?仍是回到初心,咱們但願用一個產品解決這個問題,但咱們不徹底依賴某個產品解決咱們的問題,咱們根據他的特點選定了他,而後咱們要適配他,這個事就像愛情同樣,你愛他就要愛他的所有。

2. 雲繳費

再安利一下咱們另一個項目,就是光大銀行的雲繳費。咱們有一個口號叫「雲繳費繳出新生活」,這是光大銀行近年來着力打造的一個名品業務,它也是咱們光大銀行在金融惠民宗旨下,經過銀行的資源、銀行的科技能力不斷的去方便你們,經過整合水、電、燃氣等等項目,咱們向第三方開放這些繳費資源,把各個服務提供商整合在一塊兒,向咱們其餘的銀行同業,行內、行外、某信、某寶這些第三方支付公司提供輸出。你們用某信、某寶去繳費的時候可沒有注意過,後面真正的繳費系統實際上是光大銀行的雲繳費。另外說一句雲繳費實際上是光大銀行目前 TPS 最高的系統,在這個系統中咱們用的是由光大銀行、光大科技和萬里開源合做打造的一款分佈式數據庫中間件叫 EverDB,是咱們自有知識產權的一個產品。

光大銀行數據庫技術領域發展規劃

咱們回到初心,再分享一下光大銀行在數據庫技術發展上的規劃。咱們雖然此次講分佈式,但分佈式並非光大銀行在數據庫領域的全部,尤爲銀行的系統特色是系統多,咱們相信將來分佈式數據庫和集中數據庫必定會各司其職。並非每一個系統都會用分佈式數據庫,分佈式數據庫適配的是那些大併發、高頻次的業務系統,集中式數據庫仍然有它的生存空間,並且從數量來講,它沒準仍是佔相對大的一個比例,它適配的是傳統業務系統,咱們經過 RDS 的服務化部署可以提供數據庫服務,國外商業產品、國內數據庫、開源產品結合使用,最後達到一個比較均衡的比例。在分佈式數據庫領域咱們會作到產品引入和自主研發結合,經過這種開放雙贏的方法,打造有光大銀行特點分佈式的技術方案。最後在應用推廣方面,今年咱們還會在互聯網渠道、支付等系統中應用分佈式數據庫產品,同時咱們會啓動新一代分佈式核心建設。全部這些規劃,咱們都很是歡迎像 PingCAP 這樣有實力的公司和咱們共同發展、共同創造,固然更但願數據庫領域的專家還有才俊可以加入咱們,讓咱們共同創造科技、創造財富。

本文整理自王志剛在  TiDB DevCon 2020 上的演講。
相關文章
相關標籤/搜索