
導(dǎo)讀
在當(dāng)今快速發(fā)展的金融科技領(lǐng)域,技術(shù)的創(chuàng)新與優(yōu)化是企業(yè)保持競爭力的關(guān)鍵。數(shù)禾科技,作為一家以大數(shù)據(jù)和技術(shù)為驅(qū)動(dòng)的智能零售金融解決方案提供商,始終致力于通過技術(shù)創(chuàng)新來提升業(yè)務(wù)效率和服務(wù)質(zhì)量。其主要產(chǎn)品還唄 APP 激活用戶已達(dá) 1.3 億,累計(jì)交易金額突破 3100 億元。隨著業(yè)務(wù)的迅速擴(kuò)展,數(shù)禾科技面臨著日益復(fù)雜的技術(shù)棧挑戰(zhàn)。如何在確保系統(tǒng)穩(wěn)定性和數(shù)據(jù)處理能力的同時(shí),簡化技術(shù)架構(gòu)并降低運(yùn)維成本,成為數(shù)禾科技亟需解決的關(guān)鍵問題。
通過引入 TiDB,數(shù)禾科技不僅成功簡化了技術(shù)架構(gòu),還顯著提升了數(shù)據(jù)處理能力和業(yè)務(wù)響應(yīng)速度。這一舉措不僅幫助公司降低了 50% 的資源成本,還為數(shù)禾科技在金融科技領(lǐng)域的技術(shù)創(chuàng)新積累了豐富的經(jīng)驗(yàn)。本文將詳細(xì)分享數(shù)禾科技在使用 TiDB 進(jìn)行技術(shù)棧簡化過程中的實(shí)踐與經(jīng)驗(yàn)。從技術(shù)選型的考量、實(shí)施過程中的挑戰(zhàn)與收獲,到運(yùn)維管理的策略與創(chuàng)新,全方位展示數(shù)禾科技如何借助 TiDB 實(shí)現(xiàn)技術(shù)架構(gòu)的優(yōu)化升級,為金融科技行業(yè)的技術(shù)發(fā)展提供有益的借鑒和啟示。

視頻回顧及 PPT 下載:【TiDB 上海地區(qū)交流回顧】TiDB 在小紅書、愛奇藝、咪咕、華安基金、數(shù)禾科技的核心場景/簡化技術(shù)棧/降本增效實(shí)踐

數(shù)禾科技將 TiDB 應(yīng)用在多個(gè)核心場景,如特征、獲客、對賬系統(tǒng)等。其中,特征是數(shù)禾非常重要的場景。在數(shù)禾科技的業(yè)務(wù)中,特征是指在策略、模型、分析中用到的、與某個(gè)主題綁定的數(shù)據(jù)。特征可以分為離線特征和實(shí)時(shí)特征。離線特征通常是定時(shí)跑批生成的,如用戶的屬性數(shù)據(jù);而實(shí)時(shí)特征則是實(shí)時(shí)計(jì)算并生成的,具有更高的時(shí)效性,能夠更好地反映用戶的即時(shí)狀態(tài)。特征平臺(tái)的高效運(yùn)作對數(shù)禾科技的業(yè)務(wù)決策和風(fēng)險(xiǎn)控制至關(guān)重要,與用戶體驗(yàn)和交易息息相關(guān)。TiDB 在數(shù)禾科技特征場景的應(yīng)用QPS 達(dá) 1.5 w,主要搭了兩套大集群,一套承載離線特征,一套承載實(shí)時(shí)特征。



技術(shù)棧簡化前的挑戰(zhàn)
在引入 TiDB 之前,數(shù)禾科技的技術(shù)棧包括 MySQL、Kafka、Flink 和 HBase 等多種技術(shù)。復(fù)雜的技術(shù)架構(gòu)帶來了諸多挑戰(zhàn):
- 開發(fā)復(fù)雜、周期長:數(shù)據(jù)從 MySQL 通過 DTS 同步到 Kafka,再由 Flink 消費(fèi)并計(jì)算后寫入另一個(gè) Kafka,最后應(yīng)用消費(fèi) Kafka 并經(jīng)過一系列轉(zhuǎn)換后存入 HBase。整個(gè)過程不僅開發(fā)復(fù)雜,而且周期較長;
- 成本高:云上的 Kafka、Flink、HBase 等服務(wù)費(fèi)用較高,增加了企業(yè)的運(yùn)營成本;
- 延時(shí)長,用戶流失率高:由于數(shù)據(jù)處理鏈路較長,特征的平均延時(shí)超過 10 秒,在某些場景下導(dǎo)致用戶流失率較高。
用 TiDB 實(shí)現(xiàn)技術(shù)棧簡化后的收益
- 開發(fā)門檻降低,只需會(huì)寫關(guān)系型 SQL;
- 鏈路更加清晰,不需要那么多鏈路數(shù)據(jù)流轉(zhuǎn),1s 以內(nèi)就能返回給用戶;
- 運(yùn)維管理更加方便,只需要管理 TiDB;
- 特征數(shù)據(jù)時(shí)效提升:基于數(shù)據(jù)源實(shí)時(shí)計(jì)算;
- 開發(fā)簡單了,交付周期大幅縮減:從 7 天降至 3 天;
- 資源成本降低 50%:資源就只用了 TiDB,所以資源成本也會(huì)降低很多。

數(shù)禾特征集群的容災(zāi)架構(gòu)
正因?yàn)樘卣骷旱闹匾?,所以我們需要考慮 TiDB 的容災(zāi)方案。在選擇容災(zāi)方案時(shí),綜合考慮了成本、可用性、數(shù)據(jù)一致性及性能等因素,最終確定了一套既滿足業(yè)務(wù)需求又具備高性價(jià)比的方案,即將 TiDB 的 TiKV 和 PD 組件分別部署在三個(gè)可用區(qū),利用 TiDB 自身的 Raft 協(xié)議實(shí)現(xiàn)高可用性。當(dāng)一個(gè)可用區(qū)出現(xiàn)故障時(shí),系統(tǒng)能夠自動(dòng)切換到其他可用區(qū),無需人工干預(yù),RPO(恢復(fù)點(diǎn)目標(biāo))為零,自動(dòng)恢復(fù)時(shí)間小于一分鐘。同時(shí),三個(gè)可用區(qū)的資源都能充分利用,避免了資源浪費(fèi),也符合公司對成本效益的期望。我們也對特征場景進(jìn)行了全面的性能測試,選擇了復(fù)雜的查詢場景,涵蓋多表 join 等高難度操作,性能表現(xiàn)也比較滿意。

數(shù)禾 TiDB 資源管控實(shí)踐
目前,數(shù)禾的一些應(yīng)用都在往 TiDB 上面遷移。在資源管控方面,我們目前也在集群內(nèi)部,通過連接不同的 SLB(服務(wù)器負(fù)載均衡器),并在 SLB 上掛載不同的 TiDB 節(jié)點(diǎn),實(shí)現(xiàn)了計(jì)算資源的隔離。同時(shí),我們還為每個(gè)應(yīng)用配置了不同的資源單元(RU),根據(jù)應(yīng)用的特點(diǎn)進(jìn)行資源分配。RU 的優(yōu)勢在于,當(dāng)出現(xiàn)突發(fā)流量時(shí),我們能夠迅速識(shí)別出哪個(gè)應(yīng)用的 RU 上漲,從而為資源管理和賬目核對提供了極大的便利。

數(shù)禾 TiDB 新特性實(shí)踐
1.應(yīng)用端自動(dòng) kill
在當(dāng)前架構(gòu)中,特征計(jì)算和調(diào)用都依賴于 TiDB,這使得兩者在資源上存在耦合。如果線上查詢中出現(xiàn)復(fù)雜查詢導(dǎo)致響應(yīng)變慢,將直接影響客戶端調(diào)用的響應(yīng)速度。為了解決這一問題,我們在應(yīng)用端實(shí)施了自動(dòng) kill 策略。具體來說,在應(yīng)用的 URL 中設(shè)置了查詢超時(shí)時(shí)間,當(dāng) SQL 執(zhí)行時(shí)間超過 300 毫秒時(shí),系統(tǒng)會(huì)自動(dòng)終止查詢,從而避免長時(shí)間運(yùn)行的查詢對客戶端調(diào)用造成影響。
2.熔斷功能
我們還引入了熔斷機(jī)制來進(jìn)一步保障系統(tǒng)的穩(wěn)定性。例如,如果在過去五分鐘內(nèi),某條 SQL 執(zhí)行了 1000 次,其中有 100 次執(zhí)行時(shí)間超過了預(yù)設(shè)的閾值,系統(tǒng)會(huì)判斷這條 SQL 存在問題,并自動(dòng)將其熔斷,直接返回錯(cuò)誤信息而不進(jìn)行計(jì)算。這樣可以防止因單個(gè)特征計(jì)算的問題導(dǎo)致其他特征調(diào)用受到影響,確保整體系統(tǒng)的穩(wěn)定運(yùn)行。
3.運(yùn)維平臺(tái)
我們定期采集 TiDB 集群的相關(guān)元數(shù)據(jù)和血緣關(guān)系,并將其統(tǒng)一展示在運(yùn)維平臺(tái)上。這為運(yùn)維人員提供了全面的監(jiān)控和管理視圖。未來,我們計(jì)劃進(jìn)一步擴(kuò)展運(yùn)維平臺(tái)的功能,包括實(shí)現(xiàn)自動(dòng)擴(kuò)縮容和 SQL 熔斷功能,以提升運(yùn)維的自動(dòng)化和智能化水平,更好地支持業(yè)務(wù)的高效運(yùn)行。

TiDB v8.5 穩(wěn)定性提升
TiDB v8.5 在穩(wěn)定性方面還是下了很大功夫的,對于數(shù)禾來說,我們會(huì)比較關(guān)注以下這些新特性:
- TiKV MVCC 內(nèi)存引擎:當(dāng)我們對一張表刪除大量數(shù)據(jù)過后,返回就會(huì)很慢,而這個(gè)功能對我們的響應(yīng)時(shí)間應(yīng)該會(huì)有很大提升;
- 默認(rèn)允許將默認(rèn)允許將 Projection 算子下推到存儲(chǔ)引擎;
- 統(tǒng)計(jì)信息收集忽略不必要的列;
- 支持為資源管控的后臺(tái)任務(wù)設(shè)置資源使用上限:這個(gè)對線上的穩(wěn)定性有很大的提升。
對 TiDB 演進(jìn)方向的期待
- 支持冷熱存儲(chǔ),冷存接入 OSS;
- 數(shù)據(jù)備份恢復(fù)支持到表級別;
- TiCDC 支持同步至 ADB,支持更改庫表名;
- SQL 洞察功能。
數(shù)禾 TiDB 后續(xù)計(jì)劃
- 超過 50G 的大表,推動(dòng)開發(fā)逐步遷移至 TiDB;
- 嘗試使用 TiFlash,將一些偏分析型的業(yè)務(wù)遷移至 TiDB。


在選擇分布式數(shù)據(jù)庫的過程中,除了產(chǎn)品力本身,社區(qū)活躍度是一個(gè)至關(guān)重要的考量因素。數(shù)禾科技在打磨自身產(chǎn)品后,具備了獲客和風(fēng)控等多方面的技術(shù)優(yōu)勢,我們也希望通過技術(shù)輸出,讓下游客戶也能掌握這些能力。因此,我們希望客戶對所使用的數(shù)據(jù)庫有一定了解,在遇到問題時(shí)能夠自主排查和解決。TiDB 社區(qū)的活躍氛圍為我們提供了這樣的支持,豐富的技術(shù)交流和分享,使得客戶能夠更好地理解和使用 TiDB,增強(qiáng)了我們選擇它的信心。
與此同時(shí),分布式數(shù)據(jù)庫作為一種先進(jìn)且復(fù)雜的技術(shù),難免會(huì)存在一些問題。在使用 TiDB 獲得性能提升和功能優(yōu)化的同時(shí),我們也應(yīng)以包容的心態(tài)面對它帶來的挑戰(zhàn),與 TiDB 社區(qū)攜手共進(jìn),積極參與到技術(shù)討論和問題解決中,共同推動(dòng) TiDB 的發(fā)展和完善。最終,那些敢于擁抱新技術(shù)、勇于面對挑戰(zhàn)的企業(yè)和個(gè)人,必將從中獲得更大的收益,數(shù)禾科技也將持續(xù)受益于這種與社區(qū)共同成長的歷程。
熱門跟貼