金融業(yè)分布式數(shù)據(jù)庫選型及 TiDB HTAP 場景實(shí)踐

  作為數(shù)據(jù)基礎(chǔ)設(shè)施的重要組成部分,數(shù)據(jù)庫在其中扮演著重要的角色。近些年來,數(shù)據(jù)庫整體發(fā)展也呈現(xiàn)出較之以往很大的不同。

  其一是開源數(shù)據(jù)庫受到更為廣泛的關(guān)注,從多家機(jī)構(gòu)的最新報(bào)告來看,開源數(shù)據(jù)庫無論從產(chǎn)品數(shù)量還是受關(guān)注程度都超過商業(yè)數(shù)據(jù)庫。開源這一新模式,正成為未來數(shù)據(jù)庫發(fā)展的主流。

  其二是云計(jì)算成為未來主要資源供給方式得到普遍共識(shí)。已經(jīng)有越來越多的企業(yè)選擇在云上構(gòu)建基礎(chǔ)環(huán)境,包括云上數(shù)據(jù)庫的發(fā)展速度也遠(yuǎn)高于非云環(huán)境。據(jù)樂觀估計(jì),在未來 5~10 年云數(shù)據(jù)庫將占據(jù)整體數(shù)據(jù)庫市場的七成以上。此外,對(duì)遷移到公有云、使用多云環(huán)境等問題,也普遍被企業(yè)所接受。

  其三是數(shù)據(jù)融合趨勢,針對(duì)數(shù)據(jù)多場景應(yīng)用,使用融合技術(shù)簡化訪問,提升效率。作為數(shù)據(jù)使用高地,金融行業(yè)一方面對(duì)數(shù)據(jù)庫有著極高的要求,一方面又面臨很多來自數(shù)據(jù)新的挑戰(zhàn),諸如海量規(guī)模、高并發(fā)、數(shù)據(jù)安全、實(shí)時(shí)分析等訴求亟待解決。分布式數(shù)據(jù)庫的出現(xiàn),迎合這一發(fā)展趨勢,對(duì)于金融企業(yè)解決上述問題帶來新的解決思路。

  本文從金融用戶角度入手,對(duì)如何選擇分布式數(shù)據(jù)庫及選型后的最優(yōu)實(shí)踐進(jìn)行闡述。

  金融業(yè)數(shù)據(jù)庫選型背景

  隨著企業(yè)數(shù)字化轉(zhuǎn)型深入,對(duì)于數(shù)據(jù)使用場景也呈現(xiàn)多元化趨勢,正有越來越多數(shù)據(jù)被企業(yè)利用起來。金融行業(yè)作為數(shù)據(jù)庫應(yīng)用“高地”,這一趨勢表現(xiàn)更為明顯。同時(shí)我們也看到,近些年來數(shù)據(jù)庫領(lǐng)域也發(fā)展迅速,有分布式數(shù)據(jù)庫、多模數(shù)據(jù)庫、云數(shù)據(jù)庫為代表的產(chǎn)品不斷涌現(xiàn)。這些新興數(shù)據(jù)庫在特定場景有很好的使用前景?;谏厦鎯煞N趨勢,金融行業(yè)很多企業(yè)都在面臨選擇數(shù)據(jù)庫的問題。

  選型技術(shù)層面要素分析

  從技術(shù)角度來看,在數(shù)據(jù)庫選型中有哪些要素需要考慮呢?下面以近期比較關(guān)注的分布式數(shù)據(jù)庫的選型為例,說明下重點(diǎn)考量的技術(shù)要素。

  分布式事務(wù)

  分布式架構(gòu),自然會(huì)帶來分布式事務(wù)的問題。由于需要跨節(jié)點(diǎn)的網(wǎng)絡(luò)交互,因此較單機(jī)事務(wù)會(huì)有很多損耗,隨之帶來的是事務(wù)處理時(shí)間較長、事務(wù)期間的鎖持有時(shí)間也會(huì)增加,數(shù)據(jù)庫的并發(fā)性和擴(kuò)展性也會(huì)受到影響。針對(duì)單筆事務(wù)來說,分布式事務(wù)執(zhí)行效率是肯定會(huì)有降低的,分布式帶來的更多是整體處理能力的提升。

  性能

  由于分布式數(shù)據(jù)庫通常使用的二階段提交和各節(jié)點(diǎn)之間的網(wǎng)絡(luò)交互會(huì)有性能損耗,分布式數(shù)據(jù)庫優(yōu)勢不是單個(gè)簡單 SQL 的性能,而是大數(shù)據(jù)量的 SQL 查詢,每個(gè)節(jié)點(diǎn)會(huì)將過濾之后的數(shù)據(jù)集進(jìn)行返回,會(huì)提升性能,并且分布式數(shù)據(jù)庫的優(yōu)勢是并發(fā),大量的 SQL 并發(fā)也會(huì)比單機(jī)數(shù)據(jù)庫強(qiáng)大,應(yīng)用需要做分布式架構(gòu)的適配,將串行執(zhí)行機(jī)制盡量都改造成并發(fā)處理。對(duì)于含有需要節(jié)點(diǎn)間數(shù)據(jù)流動(dòng)的 SQL 語句的事務(wù),OLTP 類的分布式數(shù)據(jù)庫處理效率一般較差,事務(wù)處理時(shí)間會(huì)較長,事務(wù)期間的鎖持有時(shí)間也會(huì)增加,數(shù)據(jù)庫的并發(fā)性和擴(kuò)展性也會(huì)受到影響。建議盡量改造存在跨節(jié)點(diǎn)數(shù)據(jù)流動(dòng)的 SQL 語句(主要是多表關(guān)聯(lián))的事務(wù)。

  數(shù)據(jù)備份

  分布式數(shù)據(jù)庫的一致性保證通過內(nèi)部時(shí)鐘機(jī)制所提供的全局時(shí)間戳,所有節(jié)點(diǎn)都會(huì)遵循該機(jī)制,所以備份恢復(fù)的增量也是基于全局時(shí)間戳,但是分布式數(shù)據(jù)庫的備份解決方案最重要的標(biāo)志為是否支持物理級(jí)的備份,物理級(jí)的備份會(huì)比邏輯的備份性能吞吐大很多,還有就是是否支持一些分布式備份方案,比如 S3 協(xié)議接口,是否支持壓縮等功能。分布式數(shù)據(jù)庫基本都具備備份和恢復(fù)方案,通常從備節(jié)點(diǎn)進(jìn)行連續(xù)備份(全量+日志),恢復(fù)的時(shí)候指定節(jié)點(diǎn)進(jìn)行恢復(fù)到指定時(shí)間點(diǎn),整個(gè)過程可配置自動(dòng)任務(wù)、自動(dòng)執(zhí)行。

  高可用

  分布式數(shù)據(jù)庫大多都是基于多數(shù)派協(xié)議,同城雙中心不適合多數(shù)派的要求,同城數(shù)據(jù)級(jí)多活建議采用三中心部署。如果同城主備可以采用集群級(jí)的異步復(fù)制,異地建議采用集群級(jí)的 binlog 異步復(fù)制,建議實(shí)例的主備節(jié)點(diǎn)設(shè)置在同城兩個(gè)雙活數(shù)據(jù)中心,仲裁節(jié)點(diǎn)三機(jī)房部署;異地災(zāi)備單獨(dú)啟實(shí)例與本地實(shí)例進(jìn)行數(shù)據(jù)庫間同步,也可以將本地備份文件 T+1 恢復(fù)到異地災(zāi)備。

  數(shù)據(jù)一致性

  分布式數(shù)據(jù)庫大多都是通過獲取全局時(shí)鐘時(shí)間戳,采用二階段提交,可以實(shí)現(xiàn)一致性的保證,分庫分表架構(gòu)對(duì)于事務(wù)的一致性,需要應(yīng)用層考慮,比如通過合理的分區(qū)鍵設(shè)計(jì)來規(guī)避。部分分布式數(shù)據(jù)庫對(duì)于跨節(jié)點(diǎn)事務(wù)目前還是實(shí)現(xiàn)的最終一致,對(duì)于全局一致性讀,一般通過引入類似全局時(shí)間戳的組件統(tǒng)一管理全局事務(wù),在數(shù)據(jù)庫選型時(shí)可以重點(diǎn)關(guān)注廠商對(duì)這一塊的實(shí)現(xiàn)。如果目前暫時(shí)無法提供全局一致性讀的分布式數(shù)據(jù)庫,對(duì)于要依賴分布式事務(wù)“中間狀態(tài)”的業(yè)務(wù),優(yōu)先進(jìn)行業(yè)務(wù)改造進(jìn)行規(guī)避,其次通過合理的數(shù)據(jù)分片設(shè)計(jì)讓其在單節(jié)點(diǎn)內(nèi)完成。

  數(shù)據(jù)分析

  分布式數(shù)據(jù)庫,大多采用存算分離架構(gòu)。針對(duì)數(shù)據(jù)分析場景,需要對(duì)數(shù)據(jù)從下層存儲(chǔ)節(jié)點(diǎn)上移到計(jì)算節(jié)點(diǎn),這對(duì)分布式數(shù)據(jù)庫提出了更高的要求。一方面可通過算子下推等技術(shù),減少需傳輸?shù)接?jì)算節(jié)點(diǎn)的數(shù)量;一方面針對(duì)匯聚后的結(jié)果需要通過流式處理等方式,規(guī)避諸如 OOM 的問題;此外也可采用如 MPP 等并行處理技術(shù),加速數(shù)據(jù)分析過程。

  選型過程問題痛點(diǎn)分析

  在選型過程中,會(huì)遇到來自以下幾方面的痛點(diǎn):

  由于分布式數(shù)據(jù)庫整體架構(gòu)還比較新,也是近十年來逐步發(fā)展完善的。針對(duì)新型架構(gòu)的諸多特點(diǎn),包括廠商和用戶還都在不斷摸索積累之中,還需要有個(gè)長期實(shí)踐的過程。此外,新架構(gòu)也需要有個(gè)逐步成熟完善的過程。

  大量產(chǎn)品來自國內(nèi)數(shù)據(jù)庫廠商,其發(fā)展周期相對(duì)較短,還需要在產(chǎn)品成熟度、穩(wěn)定性、周邊生態(tài)等方面不斷完善。對(duì)于用戶來說,一方面需面臨產(chǎn)品多、技術(shù)棧多的現(xiàn)狀;另一方面還需面對(duì)成熟度不足等問題,存在較多痛點(diǎn)。

  近些年金融行業(yè)發(fā)展迅速,各種新的業(yè)態(tài)產(chǎn)品不斷涌現(xiàn),這些對(duì)作為底層數(shù)據(jù)基礎(chǔ)的數(shù)據(jù)庫也提出了更高的要求。

  數(shù)據(jù)庫選型技術(shù)架構(gòu)

  分布式路線分析

  針對(duì)分布式數(shù)據(jù)庫的發(fā)展路線,大體可分為兩種:

  分布式中間件

  這種架構(gòu)是從中間件路線演進(jìn)而來。其采用存儲(chǔ)與計(jì)算分離架構(gòu),底層采用標(biāo)準(zhǔn)單機(jī)數(shù)據(jù)庫,副本間基于數(shù)據(jù)庫主從復(fù)制機(jī)制。上層承擔(dān)計(jì)算,并可將部分計(jì)算下推到存儲(chǔ)節(jié)點(diǎn)執(zhí)行。這種架構(gòu)在分布式事務(wù)、全局 MVCC 等方面,往往存在一定難點(diǎn),各廠商也有各自解決之道。

  原生分布式

  這種架構(gòu)正是受到 Google 論文影響演進(jìn)而來。其采用存儲(chǔ)與計(jì)算分離架構(gòu),底層采用單機(jī)庫(不一定是關(guān)系型),副本間采用分布式一致性協(xié)議完成復(fù)制,支持多數(shù)派提交。上層承擔(dān)計(jì)算,并可將部分計(jì)算下推到存儲(chǔ)節(jié)點(diǎn)執(zhí)行。

  重點(diǎn)需求滿足情況

  針對(duì)上述遇到的痛點(diǎn),兩類產(chǎn)品實(shí)現(xiàn)邏輯也所有不同:

  路線場景分析

  從數(shù)據(jù)使用場景來講,可大致按下面進(jìn)行劃分:

  針對(duì)不同的場景,不同分布式數(shù)據(jù)庫路線產(chǎn)品各有所長:

  針對(duì)事務(wù)類場景下,強(qiáng)調(diào)高并發(fā)聯(lián)機(jī)交易、對(duì)分析能力要求不高的場景比較適合分布式中間件路線產(chǎn)品。

  針對(duì)事務(wù)類及事務(wù)/分析混合類場景,既要滿足常規(guī)聯(lián)機(jī)交易場景的同時(shí),還需滿足分析類的一部分能力,這種情況比較適合原生分布式產(chǎn)品?;谠植际降?HTAP 數(shù)據(jù)庫,用一個(gè)數(shù)據(jù)平臺(tái)應(yīng)對(duì)規(guī)?;灰缀蛯?shí)時(shí)分析,提升業(yè)務(wù)決策的時(shí)效性,降低數(shù)據(jù)技術(shù)棧的復(fù)雜性,越來越多的混合負(fù)載需求推動(dòng)了 HTAP 在金融場景的落地。

  金融業(yè) HTAP 應(yīng)用場景實(shí)踐

  金融場景下 HTAP 的分析

  在金融企業(yè)數(shù)字化轉(zhuǎn)型的過程中,各類業(yè)務(wù)對(duì)“海量、實(shí)時(shí)、在線”的數(shù)據(jù)需求變得愈發(fā)迫切。在金融企業(yè)運(yùn)營場景中,實(shí)時(shí)推薦、精準(zhǔn)營銷是企業(yè)提升競爭力的一大因素。在企業(yè)風(fēng)險(xiǎn)控制場景中,實(shí)時(shí)風(fēng)控、反欺詐等業(yè)務(wù)開展可以更早地識(shí)別和阻斷風(fēng)險(xiǎn)可以讓企業(yè)減少損失,HTAP 正是基于上述背景誕生出的需求,為各類實(shí)時(shí)數(shù)據(jù)處理需求提供了解決方案。

  某金融用戶 HTAP 的架構(gòu)設(shè)計(jì)和實(shí)踐

  隨著金融市場同業(yè)業(yè)務(wù)的蓬勃發(fā)展,業(yè)務(wù)部門對(duì)于交易數(shù)據(jù)的實(shí)時(shí)統(tǒng)計(jì)分析和展現(xiàn)有了急切的需求。基于大數(shù)據(jù)技術(shù)棧的 T+1 報(bào)表模式,已無法滿足業(yè)務(wù)部門通過實(shí)時(shí)分析交易發(fā)生情況來防范風(fēng)險(xiǎn)以及提供決策的需求,迫切的需要找到一種能讓數(shù)據(jù)實(shí)時(shí)變現(xiàn)的解決方案。結(jié)合金融行業(yè)特點(diǎn),在技術(shù)選型過程中,重點(diǎn)考察待選產(chǎn)品如下能力:包括承載業(yè)務(wù)復(fù)雜查詢處理、海量數(shù)據(jù)容量存儲(chǔ)、應(yīng)用透明無侵入、開發(fā)協(xié)議可適配及混合負(fù)載下的表現(xiàn)等。經(jīng)過測試,選擇 TiDB 作為基礎(chǔ)數(shù)據(jù)庫平臺(tái),基于其 HTAP 的特性,打造金融市場實(shí)時(shí)數(shù)據(jù)平臺(tái),目前已投產(chǎn)了靈活報(bào)表和交易對(duì)手分析等應(yīng)用場景。整個(gè)處理流程包括:

  ·Flink 消費(fèi)交易系統(tǒng)產(chǎn)生的實(shí)時(shí)增量數(shù)據(jù),對(duì)部分事實(shí)表進(jìn)行拉寬處理并寫入 TiDB

  ·維表和其他明細(xì)表直接寫入 TiDB

  ·BI 工具直接連接 TiDB,提供秒級(jí)的實(shí)時(shí)計(jì)算和分析能力

  這一案例中,構(gòu)建千萬及以上數(shù)據(jù)規(guī)模、超過五張表的復(fù)雜關(guān)聯(lián)實(shí)時(shí)查詢能力,讓業(yè)務(wù)人員在極短的時(shí)間內(nèi)(大部分報(bào)表執(zhí)行時(shí)間為幾十到幾百毫秒、個(gè)別報(bào)表秒級(jí)別)獲得實(shí)時(shí)交易的詳情。

  未來 HTAP 的場景發(fā)展

  實(shí)時(shí)數(shù)據(jù)處理技術(shù)還以某些具體的應(yīng)用場景為主,從現(xiàn)狀來看以事件驅(qū)動(dòng)類、流式管道數(shù)據(jù)計(jì)算類為代表的場景,已經(jīng)開始使用 HTAP 場景的。未來隨著 HTAP 計(jì)算能力進(jìn)一步的提升,實(shí)時(shí)全量數(shù)據(jù)的計(jì)算將帶來更多場景。

  面向未來的架構(gòu)趨勢

  云原生

  從未來的發(fā)展趨勢來看,云方向是一個(gè)大的趨勢。

  從上圖可見,云數(shù)據(jù)庫的發(fā)展經(jīng)歷了幾個(gè)階段,從云托管、云服務(wù)、云原生之路。

  云托管,是最接近傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的部署模式。本質(zhì)是將原本部署于 IDC 機(jī)房內(nèi)物理服務(wù)器上的傳統(tǒng)數(shù)據(jù)庫軟件部署在了云主機(jī)上。這種模式下,云平臺(tái)提供諸如高可用、異地災(zāi)備、備份恢復(fù)、數(shù)據(jù)安全、SQL 審計(jì)、性能優(yōu)化和狀態(tài)監(jiān)測等企業(yè)級(jí)數(shù)據(jù)庫管理能力,用戶可減少運(yùn)維投入即可享受之前同等的服務(wù)水平。

  云服務(wù),之前的托管架構(gòu)中,受限于傳統(tǒng)數(shù)據(jù)庫架構(gòu)的局限,未能完全發(fā)揮云計(jì)算的優(yōu)勢。在諸如彈性擴(kuò)展、高性能、高可用等方面,均有不足。到了云服務(wù)時(shí)代,充分利用云基礎(chǔ)設(shè)施的底層能力,提供定制化的數(shù)據(jù)庫產(chǎn)品。

  云原生,與之前的云服務(wù)架構(gòu)不同,這一階段產(chǎn)品將更為充分地利用云基礎(chǔ)設(shè)施的能力,通過多層資源解耦,可享受云帶來的彈性擴(kuò)展、按需供給、超大規(guī)模能力,真正做到了數(shù)據(jù)庫與云的深度結(jié)合。從長期來看,金融機(jī)構(gòu)逐漸把業(yè)務(wù)和技術(shù)向云原生演進(jìn),實(shí)現(xiàn)傳統(tǒng)應(yīng)用遷移上云和云原生改造是重要的方向。在這個(gè)過程中需要考慮分布式數(shù)據(jù)庫對(duì) K8s、微服務(wù)應(yīng)用的支持,提供高效、彈性調(diào)度能力,同時(shí)需要兼顧開發(fā)運(yùn)維和敏捷度。

  多云方向

  云作為未來主流的資源供給方式,多云必然是企業(yè)不得不考慮的問題。多云通常指金融機(jī)構(gòu)同時(shí)采用多種不同的云環(huán)境組合來滿足業(yè)務(wù)需求的多樣性和金融業(yè)監(jiān)管的要求。如何圍繞數(shù)據(jù)打造面向未來的多云 IT 架構(gòu),滿足在多云之間提供數(shù)據(jù)服務(wù)能力,擺脫單一供應(yīng)商的弊端,是必須考慮的問題。多云架構(gòu)對(duì)分布式數(shù)據(jù)庫的考察重點(diǎn)聚焦于跨地域、跨公有私有云、跨本地 IDC 和 K8s 的部署、服務(wù)提供與統(tǒng)一運(yùn)維能力等。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )