「張家港農村商業銀行科技部總經理 周明海」傳統核心系統分佈式數據庫探索實踐


「張家港農村商業銀行科技部總經理 周明海」傳統核心系統分佈式數據庫探索實踐

張家港農商行2019年8月16日開始上線新一代核心系統,歷經48小時完成全部系統改造。新核心系統硬件設備全部採用X86服務器,數據庫則採用騰訊雲TDSQL分佈式數據庫作為新核心數據庫。這是國內銀行首次在傳統核心業務系統場景下采用國產分佈式數據庫,打破了該領域對國外數據庫的長期依賴。

採用騰訊雲TDSQL,張家港農商行新一代核心實現降本增效、性能提升、同城雙活高可用等實際業務價值。正式上線至今3個多月的時間裡,數據庫運行穩定,各項指標均正常,即使業務高峰期也維持極低負載。

探索分佈式數據庫的起因

張家港農商行(以下簡稱“張家港行”)老核心系統使用的是國外商業數據庫Sybase,傳統數據庫架構在業務運行過程中,不可避免地遇到性能瓶頸問題,尤其是在高峰時段,經常出現數據庫的吞吐量低,機器負載高,業務響應緩慢等問題,已無法滿足當前的用戶請求量。

同時,隨著近年來互聯網、雲計算、大數據、人工智能等技術的飛速發展,銀行業務發展與傳統關係型數據庫已經呈現出非常多的矛盾。這主要表現為,數據量爆發式增長與傳統數據庫有限容量之間的矛盾;業務處理的高併發系統壓力與傳統傳統核心系統分佈式數據庫探索實踐數據庫性能無法水平擴展之間的矛盾;越來越高標準的業務連續性要求與昂貴的傳統數據庫容災技術越來越難以滿足要求之間的矛盾。

因此,張家港行非常迫切建設新一代核心銀行系統,在解決傳統核心系統面臨的問題的同時,實現傳統銀行業務向數字化方向轉型。

張家港行對新核心系統建設很重要的一個考慮點,需要具備支持海量數據場景下的高性能、高擴展、高可用等關鍵特徵的數據庫,從而引伸出銀行核心數據庫由集中式向分佈式架構轉型的需求。在選擇分佈式數據庫時,張家港行還著重關注數據庫在數據一致性以及分佈式事務可靠性、性能和穩定性、高可用性、自主可控、業務改造量、運營成本、員工培訓、上手難易程度等因素。

新核心系統分佈式數據庫探索建設過程

張家港行在探索核心銀行分佈式數據庫的前期過程中,也經歷交流討論、POC測試、決策選型等幾個階段。

在最早期的技術交流討論過程中,張家港行邀請了國內幾乎所有的主流廠商進行多輪深層次的技術交流和討論,在對各個廠商的技術有了深度認識和學習後,選擇了包括騰訊雲TDSQL在內的兩款分佈式數據庫產品進行POC測試。在最終的選擇決策時,基於“穩定和成熟”“是否是基於開源MySQL內核的數據庫”兩個標準,最終選擇了騰訊雲TDSQL分佈式數據庫。

改造時,張家港行做了一個大膽的決定:同時開發兩套新核心業務系統,一套基於國外某商用數據庫,而另外一套則基於TDSQL,然後進行“內部賽馬”,分別對兩個系統的穩定性、性能進行對比測試,根據測試結果決定使用哪套。經過整整一年的改造,無論從性能成本,還是易用性,分佈式數據庫都表現出明顯優勢,因此最終新核心系統採用了TDSQL分佈式數據庫,而之前採用集中式數據庫的核心繫統則保留為災備系統。

張家港行新核心系統的整個改造實施過程分為兩個階段,第一個階段是產品適配和功能性改造,第二個階段是性能優化。

從集中式架構轉變為分佈式架構,為了充分發揮分佈式架構的高擴展性特性,必須採用分佈式架構的開發思路,需要合理規劃庫表設計,以確保數據分佈最符合業務特性,同時能保證性能和擴展性。因此如何根據業務全景,選擇最佳的數據分佈策略,是首要問題。然後在此基礎上,對根據業務場景對索引做持續優化調整,以尋求最佳實踐。

新核心系統分佈式架構改造過程中最大的挑戰是複雜SQL問題。在集中式數據庫中,由於採用的是Shared-Disk數據集中存儲,SQL無需考慮跨多個節點關聯問題。而在分佈式數據庫中,一條複雜的SQL語句可能會涉及多個數據庫分片節點,此時可能會導致交易SQL處理性能急劇下降。

在解決這個難點問題時,張家港行在業務側通過調整分片關鍵字和複雜SQL拆分兩個方面做優化,讓SQL語句儘可能限制在同一個數據分片節點內。當然,必定會有一些SQL語句由於其業務邏輯的特殊性(如:銀行跑批類業務),無法避免跨多個數據節點的表關聯,針對這種情況,騰訊雲TDSQL產品團隊也配合張家港行做了大量針對複雜SQL語句的優化。如:子查詢上提、左連接消除、豐富下推邏輯以及基於統計信息的條件推導邏輯等,儘可能提高處理這種複雜SQL語句的性能。

交易一致性是銀行核心業務系統的基本要求,銀行核心業務系統交易一致性要求遠高於電商平臺和其他互聯網應用。由於分佈式架構採取分庫分表策略,導致跨庫跨表的事務增多,如果採用傳統交易中間件層二階段提交(TwoPhaseCommit)機制來進行事務管理,則會引起性能和一致性、可用性問題,成為分佈式架構在銀行核心業務應用的最大障礙。

MySQL在發展的早期提供了異步複製的數據一致性技術,但是這套方案提供的一致性保證,對於計費或者金融行業是不夠的。到了MySQL5.5版本的時候,出現了半同步半異步的插件,MySQL半同步是比較輕量級的高一致性容災方案,但同樣存在缺限,受限於已有的同步網絡模型。其一,MySQL工作線程在等待備機應答時阻塞,其二,MySQL工作線程利用率低,而導致吞吐率和響應時間會受到影響。

騰訊雲TDSQL在MySQL開源版本的內核做了很多優化,採取了基於主從架構的線程池結合強同步複製方案大幅提高了性能,對比在跨可用區(IDC機房,延遲約10~20ms)同樣的測試方案下,騰訊雲TDSQL強同步技術性能優於MySQL5.6的半同步約5倍,優於MariaDBGaleraCluster性能1.5倍,是MySQL5.7異步的1.2倍。

此外,張家港行在張家港本地建設同城主備中心,同時也建設了異地災備中心。在這個兩地三中心的架構中,在同城,採用TDSQL一主三備的模式,主備之間採用強同步複製技術,無論主節點還是單個數據中心出現異常的情況下,都可以實現災備自動切換。騰訊雲TDSQL強同步機制,則可以原生地支持兩地三中心的容災架構,完全可以做到災難發生時的無縫、自動化切換。

實現成果、價值與意義

2019年8月18日下午6點,整個改造工作結束,新核心系統成功跑在了騰訊雲TDSQL分佈式數據庫上,張家港銀行新核心系統正式對外開業。

投產後新核心系統相比舊核心系統有了很大的提升,相比老核心100TPS的處理能力,新核心可以達到6200TPS。在性能方面,高頻賬戶類交易耗時在300毫秒之內,查詢類交易耗時在100毫秒之內,20秒內可以完成1萬筆批量代發代扣業務,日終跑批耗時17分鐘,存貸款結息耗時16分鐘,相比老核心日終批處理耗時60分鐘、存貸款結息耗時180分鐘有著質的變化。

新核心系統採用TDSQL分佈式數據庫同時也幫助張家港行大大節約了成本。張家港行在硬件層面採用傳統的X86服務器,取代了大型機、小型機。以近期上線核心系統的某商業銀行為例,傳統的商業數據庫綜合硬件成本大概在4000~5000萬,系統處理能力大約為8000TPS。而張家港行新核心的硬件成本不到1000萬,綜合降低成本75%以上,吞吐量達到了6200TPS,並且支持橫向擴展。

張家港行將二三類電子賬戶整合到新核心系統中,憑藉分佈式數據庫高併發、橫向擴展優勢,可以很好地支持爆款金融產品、秒殺、紅包、搶購等海量在線客戶流量的“小額高頻交易”需求,豐富了行內金融產品,與互聯網金融業務融合,有效提升銀行競爭力。

此外,騰訊雲TDSQL數據庫為張家港行提供了私有云數據庫解決方案,提供的分佈式和非分佈式的數據庫均可實現高可用和跨機房數據強一致容災,解決了傳統集中式數據庫跨機房強一致容災的痛點,而且分佈式架構的TDSQL數據庫也解決了傳統集中式數據庫IO性能不足的問題。在引入TDSQL數據庫後,張家港行就開始計劃在新核心業務系統中使用TDSQL數據庫,同時應用服務器部署在分佈式架構的私有云平臺上。解決方案既保證了跨機房強一致容災,又獲得高IO性能,加快了全面向雲架構轉型演進的進程。

新核心系統採用TDSQL分佈式數據庫後,張家港行也成為全國首個在傳統核心系統採用國產分佈式數據庫的商業銀行,打破了新核心系統包括交易子系統和會計子系統,業務涵蓋公共、資產、負債、銀行卡、結算、內部資金管理等模塊,屬於全核心系統。提前實現了人民銀行近期發佈的金融科技發展三年規劃中提到的“加強分佈式數據庫研發應用”的要求,邁出了銀行業核心系統全面國產化的關鍵一步,積極響應了國家在關鍵領域自主可控的戰略要求。

「張家港農村商業銀行科技部總經理 周明海」傳統核心系統分佈式數據庫探索實踐


分享到:


相關文章: