金融業分佈式數據庫選型及HTAP場景實踐

語言: CN / TW / HK

作為數據基礎設施的重要組成部分,數據庫在其中扮演着重要的角色。近些年來,數據庫整體發展也呈現出較之以往很大的不同。其一、是開源數據庫受到更為廣泛的關注,從多家機構的最新報吿來看,開源數據庫無論從產品數量還是受關注程度都超過商業數據庫。開源這一新模式,正成為未來數據庫發展的主流。其二、是雲計算成為未來主要資源供給方式得到普遍共識。已經有越來越多的企業選擇在雲上構建基礎環境,包括雲上數據庫的發展速度也遠高於非雲環境。據樂觀估計,在未來5~10年雲數據庫將佔據整體數據庫市場的七成以上。此外,對遷移到公有云、使用多雲環境等問題,也普遍被企業所接受。其三、是數據融合趨勢,針對數據多場景應用,使用融合技術簡化訪問,提升效率。 作為數據使用高地,金融行業一方面對數據庫有着極高的要求,一方面又面臨很多來自數據新的挑戰,諸如海量規模、高併發、數據安全、實時分析等訴求亟待解決。分佈式數據庫的出現,迎合這一發展趨勢,對於金融企業解決上述問題帶來新的解決思路。本文從金融用户角度入手,對如何選擇分佈式數據庫及選型後的最優實踐進行闡述。

1. 金融業數據庫選型背景

隨着企業數字化轉型深入,對於數據使用場景也呈現多元化趨勢,正有越來越多數據被企業利用起來。金融行業作為數據庫應用 高地 ,這一趨勢表現更為明顯。同時我們也看到,近些年來數據庫領域也發展迅速,有分佈式數據庫、多模數據庫、雲數據庫為代表的產品不斷湧現。這些新興數據庫在特定場景有很好的使用前景。基於上面兩種趨勢,金融行業很多企業都在面臨選擇數據庫的問題。

1).選型技術層面要素分析

從技術角度來看,在數據庫選型中有哪些要素需要考慮呢?下面以近期比較關注的分佈式數據庫的選型為例,説明下重點考量的技術要素。

  • 分佈式事務

分佈式架構,自然會帶來分佈式事務的問題。由於需要跨節點的網絡交互,因此較單機事務會有很多損耗。隨之帶來的是事務處理時間較長、事務期間的鎖持有時間也會增加,數據庫的併發性和擴展性也會受到影響。針對單筆事務來説,分佈式事務執行效率是肯定會有降低的,分佈式帶來的更多是整體處理能力的提升。

  • 性能

由於分佈式數據庫通常使用的二階段提交和各節點之間的網絡交互會有性能損耗,分佈式數據庫優勢不是單個簡單SQL的性能,而是大數據量的SQL查詢,每個節點會將過濾之後的數據集進行返回,會提升性能,並且分佈式數據庫的優勢是併發,大量的SQL併發也會比單機數據庫強大,應用需要做分佈式架構的適配,將串行執行機制儘量都改造成併發處理。對於含有需要節點間數據流動的SQL語句的事務,OLTP類的分佈式數據庫處理效率一般較差,事務處理時間會較長,事務期間的鎖持有時間也會增加,數據庫的併發性和擴展性也會受到影響。建議儘量改造存在跨節點數據流動的SQL語句(主要是多表關聯)的事務。

  • 數據備份

分佈式數據庫的一致性保證通過內部時鐘機制所提供的全局時間戳,所有節點都會遵循該機制,所以備份恢復的增量也是基於全局時間戳,但是分佈式數據庫的備份解決方案最重要的標誌為是否支持物理級的備份,物理級的備份會比邏輯的備份性能吞吐大很多,還有就是是否支持一些分佈式備份方案,比如S3協議接口,是否支持壓縮等功能。分佈式數據庫基本都具備備份和恢復方案,通常從備節點進行連續備份(全量+日誌),恢復的時候指定節點進行恢復到指定時間點,整個過程可配置自動任務、自動執行。

  • 高可用

分佈式數據庫大多都是基於多數派協議,同城雙中心不適合多數派的要求,同城數據級多活建議採用三中心部署。如果同城主備可以採用集羣級的異步複製,異地建議採用集羣級的binlog異步複製,建議實例的主備節點設置在同城兩個雙活數據中心,仲裁節點三機房部署;異地災備單獨啟實例與本地實例進行數據庫間同步,也可以將本地備份文件T+1恢復到異地災備。

  • 數據一致性

分佈式數據庫大多都是通過獲取全局時鐘時間戳,採用二階段提交,可以實現一致性的保證,分庫分表架構對於事務的一致性,需要應用層考慮,比如通過合理的分區鍵設計來規避。部分分佈式數據庫對於跨節點事務目前還是實現的最終一致,對於全局一致性讀,一般通過引入類似全局時間戳的組件統一管理全局事務,在數據庫選型時可以重點關注廠商對這一塊的實現。如果目前暫時無法提供全局一致性讀的分佈式數據庫,對於要依賴分佈式事務“中間狀態”的業務,優先進行業務改造進行規避,其次通過合理的數據分片設計讓其在單節點內完成。

  • 數據分析

分佈式數據庫,多采用存算分離架構。針對數據分析場景,需要對數據從下層存儲節點上移到計算節點,這對分佈式數據庫提出了更高的要求。一方面可通過算子下推等技術,減少需傳輸到計算節點的數量;一方面針對匯聚後的結果需要通過流式處理等方式,規避諸如OOM的問題;此外也可採用如MPP等並行處理技術,加速數據分析過程。

2).選型過程問題痛點分析

在選型過程中,會遇到來自以下幾方面的痛點。

  • 一是由於分佈式數據庫整體架構還比較新,也是近十年來逐步發展完善的。針對新型架構的諸多特點,包括廠商和用户還都在不斷摸索積累之中,還需要有個長期實踐的過程。此外,新架構也需要有個逐步成熟完善的過程。

  • 二是大量產品來自國內數據庫廠商,其發展週期相對較短,還需要在產品成熟度、穩定性、周邊生態等方面不斷完善。對於用户來説,一方面需面臨產品多、技術棧多的現狀;另一方面還需面對成熟度不足等問題,存在較多痛點。

  • 三是近些年金融行業發展迅速,各種新的業態產品不斷湧現,這些對作為底層數據基礎的數據庫也提出了更高的要求。

  • 四是隨着內外部環境的變化,自主可控等問題受到更多的關注。金融行業首當其衝,針對上述問題也需要引起足夠的重視。在數據庫選型問題上,也需要考慮這一因素。這無疑對用户選擇帶來一定困難。

2. 數據庫選型技術架構

1).分佈式路線分析

針對分佈式數據庫的發展路線,大體可分為兩種:

  • 分佈式中間件

這種架構是從中間件路線演進而來。其採用存儲與計算分離架構,底層採用標準單機數據庫,副本間基於數據庫主從複製機制。上層承擔計算,並可將部分計算下推到存儲節點執行。這種架構在分佈式事務、全局MVCC等方面,往往存在一定難點,各廠商也有各自解決之道。

  • 原生分佈式

這種架構正是受到Google論文影響演進而來。其採用存儲與計算分離架構,底層採用單機庫(不一定是關係型),副本間採用分佈式一致性協議完成複製,支持多數派提交。上層承擔計算,並可將部分計算下推到存儲節點執行。

2).重點需求滿足情況

針對上述遇到的痛點,兩類產品實現邏輯也所有不同。

3). 路線場景分析

從數據使用場景來講,可大致按下面進行劃分:

針對不同的場景,不同分佈式數據庫路線產品各有所長。

  • 針對事務類場景下,強調高併發聯機交易、對分析能力要求不高的場景比較適合分佈式中間件路線產品。

  • 針對事務類及事務/分析混合類場景,既要滿足常規聯機交易場景的同時,還需滿足分析類的一部分能力,這種情況比較適合原生分佈式產品。 基於原生分佈式的 HTAP 數據庫,用一個數據平台應對規模化交易和實時分析,提升業務決策的時效性,降低數據技術棧的複雜性,越來越多的混合負載需求推動了 HTAP 在金融場景的落地。

3. 金融業 HTAP 應用場景實踐

1). 金融場景下 HTAP 的分析

在金融企業數字化轉型的過程中,各類業務對“海量、實時、在線”的數據需求變得愈發迫切。在金融企業運營場景中,實時推薦、精準營銷是企業提升競爭力的一大因素。在企業風險控制場景中,實時風控、反欺詐等業務開展可以更早地識別和阻斷風險可以讓企業減少損失,HTAP正是基於上述背景誕生出的需求,為各類實時數據處理需求提供瞭解決方案。

2).某金融用户 HTAP 的架構設計和實踐

隨着金融市場同業業務的蓬勃發展,業務部門對於交易數據的實時統計分析和展現有了急切的需求。基於大數據技術棧的 T+1 報表模式,已無法滿足業務部門通過實時分析交易發生情況來防範風險以及提供決策的需求,迫切的需要找到一種能讓數據實時變現的解決方案。結合金融行業特點,在技術選型過程中,重點考察待選產品如下能力:包括承載業務複雜查詢處理、海量數據容量存儲、應用透明無侵入、開發協議可適配及混合負載下的表現等。經過測試,選擇 TiDB 作為基礎數據庫平台。通過一段時間上線使用,滿足業務場景,基於其 HTAP 的特性,打造金融市場實時數據平台,目前已投產了靈活報表和交易對手分析等功能。整個處理流程包括:

  • Flink 消費交易系統產生的實時增量數據,對部分事實表進行拉寬處理並寫入TiDB

  • 維表和其他明細表直接寫入 TiDB

  • BI 工具直接連接 TiDB,提供秒級的實時計算和分析能力

這一案例中,構建千萬及以上數據規模、超過五張表的複雜關聯實時查詢能力,讓業務人員在極短的時間內(大部分報表執行時間為幾十到幾百毫秒、個別報表秒級別)獲得實時交易的詳情。

3).未來 HTAP 的場景發展

實時數據處理技術還以某些具體的應用場景為主,從現狀來看以事件驅動類、流式管道數據計算類為代表的場景,已經開始使用 HTAP 場景的。未來隨着 HTAP 計算能力進一步的提升,實時全量數據的計算將帶來更多場景。

4. 面向未來的架構趨勢

1).雲原生

從未來的發展趨勢來看,雲方向是一個大的趨勢。

從上圖可見,雲數據庫的發展經歷了幾個階段, 從雲託管、雲服務、雲原生之路。

  • 雲託管,是最接近傳統數據庫系統的部署模式。本質是將原本部署於IDC機房內物理服務器上的傳統數據庫軟件部署在了雲主機上。這種模式下,雲平台提供諸如高可用、異地災備、備份恢復、數據安全、SQL審計、性能優化和狀態監測等企業級數據庫管理能力,用户可減少運維投入即可享受之前同等的服務水平。

  • 雲服務,之前的託管架構中,受限於傳統數據庫架構的侷限,未能完全發揮雲計算的優勢。在諸如彈性擴展、高性能、高可用等方面,均有不足。到了雲服務時代,充分利用雲基礎設施的底層能力,提供定製化的數據庫產品。

  • 雲原生,與之前的雲服務架構不同,這一階段產品將更為充分地利用雲基礎設施的能力,通過多層資源解耦,可享受雲帶來的彈性擴展、按需供給、超大規模能力。真正做到了數據庫與雲的深度結合。從長期來看,金融機構逐漸把業務和技術向雲原生演進,實現傳統應用遷移上雲和雲原生改造是重要的方向。在這個過程中需要考慮分佈式數據庫對 K8s、微服務應用的支持,提供高效、彈性調度能力,同時需要兼顧開發運維和敏捷度。

2).多雲方向

雲作為未來主流的資源供給方式,多雲必然是企業不得不考慮的問題。多雲通常指金融機構同時採用多種不同的雲環境組合來滿足業務需求的多樣性和金融業監管的要求。如何圍繞數據打造面向未來的多雲 IT 架構,滿足在多雲之間提供數據服務能力,擺脱單一供應商的弊端,是必須考慮的問題。多雲架構對分佈式數據庫的考察重點聚焦於跨地域、跨公有私有云、跨本地 IDC 和 K8S 的部署、服務提供與統一運維能力等。

韓鋒頻道:

關注技術、管理、隨想。

長按掃碼可關注