主頁 > 資料庫 > 騰訊云分布式資料庫TDSQL在銀行傳統核心系統中的應用實踐

騰訊云分布式資料庫TDSQL在銀行傳統核心系統中的應用實踐

2021-09-01 11:44:33 資料庫

本文是騰訊云TDSQL首席架構師張文在騰訊云Techo開發者大會現場的演講實錄,演講主題是《TDSQL在銀行傳統核心系統中的應用實踐》,

image.png

我是TDSQL架構師張文,同時也是TDSQL的開發人員之一,今天的分享內容主要包含四個部分,分別為銀行行業現狀介紹、核心系統分布式改造、TDSQL最佳實踐和改造效果,

張文演講現場

搜索關注“騰訊云資料庫”官方微信,回復“1106張文”即可下載本視頻演講PPT,

一、關于TDSQL

銀行資料庫系統被外企壟斷超過99%,資料庫的復雜程度比擬作業系統,作為基礎性軟體資料庫對成熟度有著極高的要求,這意味著需要較長的研究周期和測驗才可以進入市場,這也是為什么國內商用資料庫領域長期被國外企業所壟斷,

外企資料庫相對收費比較高昂,對于騰訊這種大型互聯網企業,比如說搞個游戲充值活動或者過年的微信紅包,都會產生突增的負載和流量,按照負載來收費,成本將無法估量,所以,如果用傳統的商用資料庫,我們賺的錢可能還不夠買資料庫服務付出的費用,這就倒逼大型互聯網企業研發自己的資料庫,

TDSQL誕生于騰訊計費平臺部,2002年以前計費業務最早使用MySQL就能滿足需求,但是隨著公司規模的發展,到2007年我們對性能、可用性以及資料一致性要求越來越高,同時騰訊的增值業務、娛樂業務在不斷增長,比如Q幣,這時我們開始研制服務于計費、定位于金融場景的分布式資料庫——TDSQL,

2007-2014年,TDSQL在內部通過不斷迭代、踩坑,逐步打磨成了一款比較成熟的資料庫產品,2014年TDSQL首次嘗試對外輸出,成功應用于微眾銀行的核心系統,開始商業化探索,2019年TDSQL成功應用到張家港銀行新核心系統,成為國內第一家投產于銀行傳統核心系統的分布式資料庫,這是TDSQL又一個里程碑式的發展,

二、TDSQL在銀行核心系統的實踐

剛才提到銀行的核心系統,介紹一下什么叫銀行的核心系統,

銀行的核心系統為什么這么重要?銀行的核心系統相當于銀行的心臟,大家知道銀行是要存錢、管錢的,銀行系統分兩部分,一個是核心系統,一個是外圍系統,核心系統可以比作銀行的大腦,所有和錢有關的交易都需要經過核心系統,完成資金的清算核算,換句話說核心系統需要和其他所有關于錢的系統打交道,因而它的業務邏輯也最為復雜、最為關鍵,它直接影響著銀行核心資產相關的資料,如果核心系統比作大腦的話,外圍系統更像是四肢軀干,所以,外圍系統一般都是泛指各類渠道類業務,比如:手機銀行、貸款、柜面、ATM等,而這些外圍系統一旦涉及到金錢交易,必須通過核心系統完成資金的清算結算,一個外圍系統一般都是一個單一的業務場景,所以一個外圍系統故障只影響當前業務,不會影響全域,

此外,銀行對資料庫的可用性要求極高,如果一家銀行長時間不能對外提供服務的話,客戶會對他在銀行中存的錢擔憂,可能會覺得不安全,進而把錢取出來,如果大家都這么做,那么對于銀行來說就是擠兌危機,

  1. 傳統資料庫架構的分布式改造

下面我們來了解一下如何把銀行的核心系統資料庫從集中式升級成分布式,

image.png

在切入正題之前,這里先講一個小故事,在做分布式改造的時候,一開始大家很有信心感覺非常簡單,直接套用即可,進而直接把集中式的系統照搬到分布式,發現效果非常不理想主要表現在性能很差,甚至一些復雜的SQL都跑不出來結果,雖然信心備受打擊,但事情都要邁出第一步,如果什么事情都很容易的話,國內當時為何還遲遲沒有銀行分布式核心資料庫的先例?

對于資料庫從集中式遷移到分布式遇到的問題,首先我們通過對每一個庫表進行分析并重新設計其分片關鍵字,獲取最佳的資料分布策略,從集中式遷移到分布式,多少有一些資料庫高級特效的耦合問題,比如說TDSQL不支持序列,而Oracle支持序列同時業務代碼中用到了大量序列,需要指出的是,TDSQL已經是一款標準化的資料庫產品,但同時TDSQL也非常珍惜在銀行傳統核心系統的實踐機會,因而對于一些行業內比較好的特性建議(比如序列),我們會將其放入迭代特性中開發,

解決了這個語法差異之后,又發現一個問題,由于銀行的核心系統都是運行多年的老系統,這些老系統在早期開發時為了讓業務層更簡單,將很多計算相關的操作也放在了資料庫層,即用到了很多函式、存盤程序、觸發器,在我們內部盡可能不使用這些特性,這些特性不適用于分布式場景下,同時一旦使用后,將來還會面臨復雜的遷移作業,此外,資料庫應該專注于資料存取,計算相關的復雜邏輯放在業務層更符合規范,對這些問題經TDSQL團隊與跟業務方一起溝通評估,將更合適放在應用層的部分邏輯上移,最終實作了更為徹底的分布式架構,

最后是性能問題解決,對于銀行這類金融企業經常會有一些跑批類業務,這類業務的特點是大多都是較為復雜的AP型的SQL,這類SQL對于OLTP型分布式資料庫來說是一個比較大的挑戰,主要體現在資料的存盤方式上,復雜的SQL一般涉及多個表之間的資料,對于集中式所有資料存盤在一個節點上,不存在跨節點取資料,而分布式架構下,資料分散在不同物理節點,一旦涉及多個節點的關聯查詢,會導致性能急劇下降,針對銀行業務的這種AP型場景,TDSQL在復雜SQL處理方面做了一系列優化,如:子查詢上體、左連接消除,豐富下推策略等,盡可能提高處理復雜sql的性能,最后當前述作業做完之后,其實我們已經達到交付標準,對于張家港行來說已經夠用了,但是,畢竟是作為全國第一家投產于傳統核心系統的分布式資料庫,作為第一家就應該有一個第一家的樣子,所以步驟5是一個持續優化的程序,利用TDSQL一系列性能優化、診斷工具,對每一條可優化sql進行優化,最終把性能提升到極致,步驟5結束后,張家港行新核心系統從剛開始的不可用,到后來表現優異,宛如從一架馬車進化成了一艘火箭,

剛剛討論了改造程序,我們看到其實這個改造程序說簡單也不簡單,說難其實也沒有太復雜,總體思路是一個先跑通再優化,從簡單到復雜的程序,因為在銀行業務里,大部分都是一些相對不算是特別復雜的SQL,特別復雜的SQL往往都是跑批類的,而銀行大部分業務都是高頻交易,所以,解決了高頻交易,代表解決了問題的百分之九十的問題,剩下只是花多少時間的問題,總結成一句話就是:“先解決高頻率,再解決跑批類”,

  1. 分布式事務

作為分布式資料庫,尤其是銀行場景的分布式資料庫,最關心的就是分布式事務,

image.png

比如銀行里A、B兩人需要轉帳,用戶A的賬戶是在第一個物理結點,用戶B的賬戶是在第二個物理結點,對于轉賬這個場景,也就是對A、B賬戶的余額的操作,要么全部成功,要么全部失敗,不能給A扣了款B沒有加款,或者B加了款A沒有扣款,這就是TDSQL分布式事務的保證,所以說,如果分布式資料庫不支持健壯的分布式事務,那么它很難適應銀行類金融場景,當然,分布式事務由于涉及到多個資料節點,同時需要額外做很多的校驗和通信,因而一定會有性能損耗,TDSQL這里通過大量優化僅損耗25%,TDSQL的分布式事務基于MySQL經典的兩階段提交,在MySQL的XA事務上二次開發,修復了大量官方BUG保證分布式事務的健壯性,

  1. 高可用部署架構

說完了分布式事務,再來聊聊銀行的高可用部署架構,這是一個標準的兩地三中心架構,同城部署,總行機房和災備機房兩個機房之間的資料同步基于TDSQL的強同步復制,保證在主機房寫成功的同時,至少在備機房的一個節點上落盤成功,異地機房,主要用來做異地的災備實體,

image.png

  1. 資料同步

下面我們再來聊聊資料同步,對銀行來說,尤其是第一家核心系統采分布式資料庫的銀行,無論上線前你講得再好,演練得再好,或者說測驗得再好,也還是有一定的不確定因素,這就引出了個Oracle災備的方案,將Oracle作為備胎和TDSQL保持實時同步關系,在極端情況下允許從TDSQL切換到Oracle,也許這個方案永遠都不會用,但是正因為有了這個兜底方案,對銀行來說用分布式資料庫才更有信心,

資料同步方案這里另一個設計是多源同步解決方案——TDSQL到其他異構資料庫的匯入匯出,TDSQL抱著一個開放的態度讓用戶選擇接入,并不綁架用戶,如果哪一天銀行客戶用了TDSQL,覺得用得不好,或者覺得TDSQL不滿足他的需求或有比它更好的,通過資料同步方案可以輕松將資料遷出,TDSQL支持業內標準格式的資料訂閱,方便資料的匯入匯出,

  1. 自動化資料庫運營管理
    下面我們繼續再往下看到的是TDSQL自動化運營管理平臺,作為銀行科技部門的運維,希望盡可能快速上手,減少人員培訓成本,運維系統盡可能自動化高,集成化高,

image.png

赤兔監控就是一個資料庫的監控指標,提供上百項的資料庫監控,資料庫各項健康狀態、性能引數一目了然;監控通過結合智能告警,及時捕獲資料庫例外狀態,通知DBA相關責任人處理,扁鵲系統,是一套強大的智能DBA診斷系統,基于騰訊海量運維經驗,結合強大的語法、規則庫,對資料庫進行一鍵診斷、迅速定位性能問題,一鍵運維,顧名思義所有運維操作集成到頁面上,降低運維人員誤操作的概率,需要強調的是,我們TDSQL跟傳統資料庫廠商有什么不同,傳統資料庫廠商研發資料庫產品,賣給客戶使用,而我們在賣給客戶之前,首先在自己內部充分驗證和適用,先拿自己的業務體驗和采坑,

  1. 性能和成本雙優化
    剛剛介紹了那么多,最后我們分享一下以張家港行為例,銀行傳統核心完成分布式改造之后達到的效果,主要是成本和性能兩方面,

image.png

先看性能,查詢交易100毫秒之內,高頻率交易300毫秒,貸款結息3分鐘,日終跑批14分鐘,這是銀行披露的資料,目前這個性能已經完全滿足張家港行未來十年的業務量,

image.png

再看成本,按照Oracle的架構,硬體方面需要采用大型機、小型機,張家港行采用騰訊云TDSQL分布式資料庫架構后的硬體成本,只有傳統架構成本的1/5甚至更低,此外,由于TDSQL是分布式的架構,支持水平擴展,通過不斷增加硬體資源可繼續提高吞吐量,

所以,當看到這樣的成本性價比,相信任何一個有商業頭腦的銀行,當目前核心涉及到更新換代時,肯定不會再像以往那么堅定的選擇國外廠商,而是更多考慮國內互聯網公司的分布式資料庫,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/296424.html

標籤:其它

上一篇:TiDB 學習筆記一(運維管理)

下一篇:騰訊云TDSQL監控庫密碼忘記問題解決實戰

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more