圖說TDSQL | 張家港行,我是你的「破壁人」

  • 2020 年 3 月 12 日
  • 筆記

隨著互聯網的不斷發展和逐漸普及,各行各業也紛紛選擇了上雲之路,騰訊雲資料庫致力於運用領先技術,助力企業上雲,分散式資料庫TDSQL就是部署在騰訊雲上的一款具備強一致高可用、全球部署架構、分散式水平擴展、高性能、企業級安全等特性的資料庫產品,《圖說TDSQL》欄目將以圖文結合的形式,帶大家了解TDSQL的方方面面。

本文將為你詳細解讀,騰訊雲TDSQL攜手張家港農商銀行的「破壁之路」,共同促進銀行傳統核心資料庫首次實現國產化。

接下來我們以文字更詳細地分享每張圖背後的細節和故事

內外劇變的背景

銀行傳統核心系統被國外壟斷

雖然在目前來看,國外的集中式資料庫已經逐漸跟不上時代的腳步,但對於銀行來說,試錯的成本是難以承擔的,任何一條錯誤數據造成的損失都無法估量。銀行資料庫系統被外企壟斷超過99%。資料庫的複雜程度比擬作業系統,作為基礎性軟體資料庫對成熟度有著極高的要求,這意味著需要較長的研究周期和測試才可以進入市場,這也是為什麼中國商用資料庫領域長期被國外企業所壟斷。

國產資料庫得到了長足發展

2002 年,騰訊技術團隊選擇完全開源MySQL 構建資料庫體系,為了解決計費等公司級敏感業務高可用、核心數據的零流失、核心交易的零錯賬等問題,騰訊從 07 年開始自研了一款資料庫產品,這也是 TDSQL 的前身,這款資料庫在當時很好的支撐了 09 年的開放平台浪潮。隨著騰訊開放合作的發展擴大,行業場景越來越多,這款資料庫無法很好的為合作夥伴提供服務,因此從 2012 年開始,由騰訊內部業務適配而衍生的自研資料庫 TDSQL 正式誕生。隨著不斷地迭代和發展,如今的TDSQL 已經完美解決了金融等系統中高可用、數據一致性和水平伸縮等問題。

艱難的破壁之路

面臨的挑戰

系統結構特殊且複雜,數據遷移要求苛刻。通常行業內銀行業務分為傳統業務和互聯網業務,並各有一套核心系統,兩者的相對獨立性較大,但與行業一般情況不同的是,張家港行一套核心系統支撐了全行的傳統業務和互聯網業務。本次遷移的核心系統的數據量在 TB 級,包括了賬戶、賬目、流水、賬單、日誌等數據。張家港行系統建設方長亮科技表示其核心系統主要分為兩大部分,一個為交易子系統,總共有 70 多個結構,覆蓋銀行卡、資金管理等等;另一個為會計子系統,主要是資金的交易分離、清算總賬。核心系統不僅本身系統結構複雜,且還與各個系統都有聯繫,因此資料庫遷移十分複雜、而且難度大。

解決方案

1.兩個版本同步開發

在系統建設過程中,張家港行聯合騰訊雲及系統建設方長亮科技,充分結合銀行傳統業務與互聯網業務的場景差異,對業務邏輯進行重新設計,共同完成新一代核心系統應用兼容性改造和資料庫升級優化。三方還共同制定了TDSQL和集中式資料庫數據准實時同步的策略作為兜底方案。最終,在充分的技術驗證和周密的實施方案保障下,張家港行搭建出一套具備高可用和強一致等特性的資料庫架構。

資料庫採用分片「一主三備」的模式,保證主節點故障時可以在40秒以內自動切換到備節點並恢復業務;完善的全局分散式事務設計,也能夠完全避免發生錯帳、亂賬、賬不平等問題。

2.解決兼容問題

兼容性差異,包括兩部分:Oracle 生態與 MySQL 生態、集中式架構與分散式架構的差異,如何解決這個問題呢?針對 Oracle支援的語法但 MySQL 不支援這個問題,TDSQL 做了大量對 Oracle 語法兼容性的優化。對於一些不太適合分散式場景下的使用特性如:存儲過程、視圖、觸發器等,業務之所以用到這些特性,是因為將很多業務邏輯也放在了資料庫中,這一定程度上導致了擴展性不足,TDSQL 團隊與銀行方、核心系統開發商長亮科技進行了仔細的分析與評估,將更合適放到應用層的部分邏輯上移,實現了更為徹底的分散式架構,極大提升了整體的水平擴展性。

3.數據同步模式

設計多源同步解決方案,保證TDSQL到其他異構資料庫的導入導出。當因為某些原因需要更換TDSQL,通過數據同步方案可以輕鬆將數據遷出,TDSQL支援業內標準格式的數據訂閱,方便數據的導入導出。同時還引入Oracle災備方案,將Oracle作為備胎和TDSQL保持實時同步關係,極端情況下可以將TDSQL切換到Oracle,讓銀行更有信心。

4.完善分布事務機制

TDSQL的分散式事務方案基於兩階段提交,在MySQL原生XA事務的基礎上做了大量優化,使其滿足分散式事務的使用場景,同時對事務在兩階段期間各類異常場景做到了充分考慮,提供全局視角的分散式死鎖檢測,清晰查看多個分散式事務之間的鎖等待關係,方便開發排查。此外整個設計完全去中心化,不存在單點瓶頸問題,整個事務對業務完全透明,業務只需要像常規事務那樣使用即可,因此十分適應銀行類的金融場景。

5.兩大系統輔助運營

騰訊雲提供的「赤兔」和「扁鵲」系統為資料庫實現自動化運維提供了豐富的工具,極大地解決了困擾傳統集中式資料庫運維效率問題。

「赤兔」平台能提供上百項監控指標的展示,結合靈活豐富的告警策略提供風險預警;「扁鵲」系統是 TDSQL 提供包括數據採集、實時檢測、自動處理、性能檢測與健康評估、SQL性能分析、業務診斷等多種智慧工具的集合,採用模組插件化無縫對接各種資料庫,可以自動抓取存在性能問題的SQL,並進行智慧分析提供索引優化建議,將資料庫的性能問題及時扼殺在萌芽當中。在扁鵲的幫助下,DBA可以從日常繁雜的資料庫運維工作中解脫出來。「赤兔」平台從管理員視角提供TDSQL的全部運維功能和上百項資料庫狀態監控指標的展示,讓資料庫管理員日常90%以上的操作均可通過介面化完成,同時更方便定位排查問題。 「赤兔」和「扁鵲」這一套組合拳既滿足高星級業務的精細化運維,又能輕鬆應對大量的普通資料庫運維需求,更好地幫助用戶降低運維成本。

破壁過程

1.外圍試點

18 年年初,騰訊雲首次接觸到了張家港行,當時張家港行的一個繳存水電費的外圍系統想要嘗試國產分散式資料庫,經過若干輪 POC 測試最終選擇了 TDSQL,這種外圍業務嘗試國產分散式資料庫並不算稀奇,但是大多數的銀行對國產資料庫的嘗試也僅限於此。

2.一年驗證

2018 年 8 月左右,張家港行準備對核心系統進行改造,原計劃資料庫採用國外某商用資料庫,張家港行做了一個大膽的決定:同時開發兩套新核心業務系統,一套基於國外某商用資料庫而另外一套則基於 TDSQL,然後進行「內部賽馬」,一年之後對兩個系統的穩定性、性能進行對比測試,根據測試結果再決定使用哪套。最終,在充分的技術驗證和周密的實施方案保障下,張家港行搭建出一套具備高可用和強一致等特性的資料庫架構。資料庫採用分片「一主三備」的模式,保證主節點故障時可以在40秒以內自動切換到備節點並恢復業務;完善的全局分散式事務設計,也能夠完全避免發生錯帳、亂賬、賬不平等問題。

3.最終勝出

經過整整一年的改造,無論是從性能成本,還是易用性,分散式資料庫都表現出明顯優勢,進而最終新核心系統採用了 TDSQL 分散式資料庫,而之前採用集中式資料庫的核心系統則保留為災備系統。

落地影響

性能

根據銀行披露的數據,銀行傳統核心系統完成分散式改造之後,查詢交易100毫秒之內,高頻率交易300毫秒,貸款結息3分鐘,20 秒內可以完成 1 萬筆批量代發代扣業務,日終跑批14分鐘,存款結息耗時 11 分鐘,同時資料庫負載均保持在10%以下,目前這個性能已經完全滿足張家港行未來十年的業務量。

成本

新核心系統在硬體層面全面採用x86伺服器,取代傳統商用資料庫所需的大型機、小型機,成本優勢明顯。數據顯示,張家港行採用騰訊雲TDSQL分散式資料庫架構後的硬體成本,只有傳統架構成本的1/5甚至更低。

新方向

這個案例像我們證明了在銀行核心系統中,長期被國外所壟斷商用資料庫是可以被替換為國產分散式資料庫的。不論是對於銀行還是騰訊雲來說,這都是一個具有代表性的案例,未來可能會出現更多類似的案例,而銀行和國產資料庫的發展也有了更多的可能。

本周直播預告

點擊圖片掃描二維碼即可進行直播預約

 特惠體驗雲資料庫  

↓↓更多驚喜優惠請點這兒~