打開網(wǎng)易新聞 查看精彩圖片

導(dǎo)讀

隨著 TiDB 在各行業(yè)客戶中的廣泛應(yīng)用,特別是在多個業(yè)務(wù)融合到一套 TiDB 集群中的場景,各企業(yè)對集群內(nèi)多業(yè)務(wù)隔離的需求日益增加。與此同時,TiDB 在多業(yè)務(wù)融合場景下的資源隔離方案日趨完善,詳情可參考文章《你需要什么樣的資源隔離?丨 TiDB 資源隔離最佳實踐》。

本文將分享某客戶在 TiDB 分布式數(shù)據(jù)庫中實現(xiàn)多業(yè)務(wù)資源隔離的實踐案例。該客戶是中國領(lǐng)先的全球化消費(fèi)電子品牌,專注于智能配件和智能硬件的設(shè)計、研發(fā)與銷售。其業(yè)務(wù)起步于線上,銷售網(wǎng)絡(luò)覆蓋全球主流電商平臺。公司以創(chuàng)新為核心,致力于將富有科技魅力的產(chǎn)品帶給全球消費(fèi)者,旗下?lián)碛卸鄠€自主品牌,在 AIoT、智能家居、智能聲學(xué)和智能安防等領(lǐng)域表現(xiàn)出色,覆蓋全球多個國家的海量用戶。

打開網(wǎng)易新聞 查看精彩圖片

在引入 TiDB 之前,這家企業(yè)主要使用 MySQL 作為其核心業(yè)務(wù)數(shù)據(jù)庫。自該公司上市以來,業(yè)務(wù)迅速擴(kuò)張,數(shù)據(jù)量激增,MySQL 在一些關(guān)鍵業(yè)務(wù)場景中遇到了瓶頸:

  • 庫存管理系統(tǒng):該系統(tǒng)具有高并發(fā)的讀寫需求,頻繁進(jìn)行庫存的增減和查詢操作,屬于典型的在線事務(wù)處理(OLTP)系統(tǒng)。然而,隨著數(shù)據(jù)量的持續(xù)增長,難以滿足業(yè)務(wù)的性能要求。
  • 業(yè)財一體化系統(tǒng):此系統(tǒng)是一個典型的混合事務(wù)/分析處理(HTAP)系統(tǒng),它不僅需要維護(hù)完整的事務(wù)一致性,還必須具備處理復(fù)雜 SQL 的分析能力。系統(tǒng)中的單表記錄數(shù)已超過 15 億行,且存在多表關(guān)聯(lián)的分析需求。
  • 業(yè)務(wù)報表系統(tǒng):作為在線分析處理(OLAP)系統(tǒng)的代表,該場景經(jīng)常需要處理涉及十幾張表、數(shù)百行 SQL 的復(fù)雜查詢,且對數(shù)據(jù)的實時性有極高要求。業(yè)務(wù)團(tuán)隊期望能夠即時獲取運(yùn)營數(shù)據(jù),以便實時分析和洞察運(yùn)營狀態(tài)。

基于 MySQL 的傳統(tǒng)數(shù)據(jù)庫架構(gòu)難以應(yīng)對上述挑戰(zhàn),該企業(yè)考慮引入新的數(shù)據(jù)庫解決方案以更好地支撐業(yè)務(wù)發(fā)展。

打開網(wǎng)易新聞 查看精彩圖片

2022 年,這家企業(yè)與 TiDB 分布式數(shù)據(jù)庫邂逅并開啟了一段全新的旅程。TiDB 不僅在墨天輪數(shù)據(jù)庫排行榜上穩(wěn)居前列,在全球數(shù)據(jù)庫排行榜 db-engines.com 上是國產(chǎn)數(shù)據(jù)庫排名最靠前的一家,其在 GitHub 上的 Star 數(shù)也呈現(xiàn)出迅猛增長態(tài)勢,社區(qū)的活躍度同樣令人矚目。TiDB 解決方案已經(jīng)在互聯(lián)網(wǎng)、金融、電信運(yùn)營商以及新經(jīng)濟(jì)等多個領(lǐng)域展現(xiàn)出廣泛的應(yīng)用價值,這些優(yōu)勢吸引了他們的注意。同年 10 月,這家企業(yè)啟動了對 TiDB 的評估選型工作,完成了以下幾個關(guān)鍵環(huán)節(jié)的測試:

  • TiDB 集群部署:通過 TiUP 工具部署 TiDB 集群的流程極為順暢。除了初期的基礎(chǔ)環(huán)境檢查,TiDB 本身的部署過程已高度自動化,實現(xiàn)了一鍵式操作,快速完成了 TiDB 6.1.3 版本的集群搭建。
  • 數(shù)據(jù)同步鏈路測試:TiDB 集群利用 TiCDC 同步工具,能夠?qū)⑷亢驮隽繑?shù)據(jù)準(zhǔn)實時地同步到下游的數(shù)據(jù)湖。由于 TiCDC 不支持直接將數(shù)據(jù)寫入 Databricks,采取了間接的同步策略:首先將數(shù)據(jù)同步到 MySQL,然后通過 Fivetran 將數(shù)據(jù)傳輸?shù)?Databricks。TiCDC 支持 Avro Protocol、Canal-JSON Protocol 等多種數(shù)據(jù)格式。
  • 數(shù)據(jù)備份測試:使用 TiDB 自帶的 BR 備份工具對集群數(shù)據(jù)進(jìn)行了全量備份和增量備份的測試。
  • 性能測試:針對業(yè)務(wù)報表中的復(fù)雜 SQL(涉及十余張大表 join、多次 union all 操作和嵌套子查詢)進(jìn)行了性能測試,同時也測試了庫存系統(tǒng)的簡單 SQL 在高并發(fā)環(huán)境下(并發(fā)數(shù)超過 600)的查詢性能。由于當(dāng)時測試環(huán)境中沒有部署 TiFlash 節(jié)點,這些復(fù)雜 SQL 對 TiDB 集群的性能產(chǎn)生了一些影響,偶爾會出現(xiàn)集群卡頓的現(xiàn)象。

測試結(jié)果表明,TiDB 作為一款高度兼容 MySQL 的原生分布式數(shù)據(jù)庫,提供出色的擴(kuò)展性、便捷的部署、優(yōu)越的性能和豐富的生態(tài)系統(tǒng)。在整個測試過程中,原廠工程師提供了專業(yè)且積極的技術(shù)支持,有效解決了遇到的所有問題。總體來看,TiDB 充分滿足了業(yè)務(wù)場景的需求,符合選型要求。

盡管在測試中發(fā)現(xiàn),當(dāng)時的 v6.1.3 版本(尚未具備 Resource Control 功能)版本在處理復(fù)雜的 SQL 查詢和高并發(fā)的 OLTP 業(yè)務(wù)請求時存在相互干擾的問題,但這些問題并未掩蓋 TiDB 在其他方面的優(yōu)勢。隨著 TiDB 產(chǎn)品的不斷迭代和優(yōu)化,這些問題將逐步得到解決。

打開網(wǎng)易新聞 查看精彩圖片

在與 TiDB 原廠工程師的緊密合作下,這家企業(yè)針對測試過程中遇到的問題,根據(jù)業(yè)務(wù)特征對 TiDB 集群的配置進(jìn)行了精心優(yōu)化,即使在不具備資源管控功能的情況下,也通過 TiDB 原有的特性成功實現(xiàn)了多業(yè)務(wù)的有效隔離:

1.數(shù)據(jù)隔離策略:利用 Placement Rules in SQL 能力將庫存業(yè)務(wù)與財務(wù)結(jié)算、業(yè)務(wù)報表的底層 TiKV 數(shù)據(jù)進(jìn)行了有效隔離。庫存業(yè)務(wù)作為 OLTP 的代表,被標(biāo)記為 Label A,而財務(wù)結(jié)算和業(yè)務(wù)報表則被標(biāo)記為 Label B,從而有效避免了 TiKV 層面的 I/O 和 CPU 資源爭用。

2.引入 TiFlash 節(jié)點:引入 TiFlash 節(jié)點將業(yè)務(wù)報表和財務(wù)結(jié)算中的復(fù)雜 SQL 查詢轉(zhuǎn)移到 TiFlash 節(jié)點執(zhí)行,這一改變帶來了性能的指數(shù)級提升。

3.tidb-server 層面的業(yè)務(wù)分組:在 tidb-server 層面實施了業(yè)務(wù)分組策略,將 tidb-server 分為三組,其中兩組專門服務(wù)于庫存業(yè)務(wù),并通過 AWS 的 NLB(Network Load Balancer)進(jìn)行負(fù)載均衡,另外兩組服務(wù)于財務(wù)結(jié)算業(yè)務(wù)。該企業(yè)還單獨分配了一個 tidb-server 用于業(yè)務(wù)報表的遠(yuǎn)程查詢,實現(xiàn)了業(yè)務(wù)在 tidb-server 層面的隔離。

打開網(wǎng)易新聞 查看精彩圖片

圖:數(shù)據(jù)架構(gòu)示意圖

4.使用 TiDB Resource Control 功能進(jìn)行更細(xì)粒度的資源管控:通過將 TiDB 集群從原來的 6.1.3 版本升級到 7.1.5 版本,引入了 TiDB 在 7.1 版本中提供的 Resource Control 能力,對更細(xì)粒度的資源進(jìn)行管控,通過對不同的業(yè)務(wù)分配不同的資源單位(RU,Request Unit),來實現(xiàn)對 CPU、IO 等更細(xì)粒度的資源隔離,同時還可以采用該功能實現(xiàn)對 SQL 級別的流控(QUERY_WATCH)和后臺任務(wù)的資源限制。

通過實施這些針對性的優(yōu)化措施,該企業(yè)不僅成功克服了測試階段遇到的挑戰(zhàn),還大幅提升了系統(tǒng)的綜合性能和穩(wěn)定性。這些積極成果進(jìn)一步增強(qiáng)了他們繼續(xù)使用 TiDB 的信心。

打開網(wǎng)易新聞 查看精彩圖片

  • 實現(xiàn)多業(yè)務(wù)隔離:利用 Placement Rules in SQL 的能力將 tikv-server 劃分為兩個不同的組以實現(xiàn)隔離。tidb-server 則根據(jù)業(yè)務(wù)層的分組進(jìn)行隔離。由于 pd-server 的負(fù)載較輕,可以實現(xiàn)共用。這種架構(gòu)設(shè)計使得單一邏輯集群能夠支持多個業(yè)務(wù),簡化了管理維護(hù)工作,同時提供了統(tǒng)一的 HTAP 服務(wù)。
  • 支持?jǐn)?shù)據(jù)實時寫入與事務(wù)特性:數(shù)據(jù)主要通過應(yīng)用程序和接口實時寫入 TiDB。TiDB 不僅支持實時的 insert、update、delete、replace 等 DML 操作,還確保了事務(wù)的 ACID 特性。這一點相較于許多僅支持追加寫入的數(shù)據(jù)倉庫平臺,TiDB 展現(xiàn)出了明顯的優(yōu)勢。
  • 對接數(shù)據(jù)湖生態(tài):部分經(jīng)過 TiDB 加工處理的數(shù)據(jù)需要實時同步到數(shù)據(jù)湖平臺,通過 TiCDC 同步工具,TiDB 能夠?qū)⒆兏鼣?shù)據(jù)實時同步到數(shù)據(jù)湖。當(dāng)時由于環(huán)境限制,TiCDC 暫時無法直接寫入 Databricks,采用了 MySQL 作為中間跳轉(zhuǎn)的方案。與此同時,TiDB 也提供了 TiDB to Databricks 的同步工具:tidb2dw (https://www.pingcap.com/blog/tidb2dw-replicate-data-to-warehouses/) 給該企業(yè)使用,以逐步實現(xiàn) TiDB 到數(shù)據(jù)湖生態(tài)的直接對接,并以此場景為契機(jī),不斷反向推動 tidb2dw 工具功能和能力。

打開網(wǎng)易新聞 查看精彩圖片

1.技術(shù)領(lǐng)先性:TiDB 采用存儲與計算分離的原生分布式架構(gòu),提供出色的擴(kuò)展性,允許靈活地增加計算節(jié)點(tidb-server)和存儲節(jié)點(tikv-server),以適應(yīng)業(yè)務(wù)的不斷增長和變化。

2.豐富的資源隔離手段:TiDB 分布式架構(gòu),提供了從計算、存儲、OLTP、OLAP 等各個組件間粗粒度的資源隔離手段、同時也提供了在集群內(nèi)部的 CPU、IO、資源組 SQL 級別的、后臺任務(wù)級別等更細(xì)粒度的資源隔離手段。

3.自動分片特性:TiDB 的自動分片功能消除了業(yè)務(wù)開發(fā)中對表分片和分區(qū)規(guī)則的預(yù)先設(shè)計需求,使得開發(fā)過程更加直觀、簡便,使用體驗與單機(jī) MySQL 相似,對業(yè)務(wù)開發(fā)完全透明。

4.解決分庫分表問題:與 MySQL 的分庫分表架構(gòu)相比,TiDB 支持分布式事務(wù)和在線 DDL 操作,為業(yè)務(wù)開發(fā)提供了更高的透明度和簡化的維護(hù)流程。

5.HTAP 一體化特性:TiDB 集群提供了面向 OLTP 的 TiKV 行式引擎和面向 OLAP 的 TiFlash 列式引擎,能夠一站式提供 HTAP 服務(wù),滿足業(yè)務(wù)對實時事務(wù)處理和復(fù)雜分析的需求。

6.完備的 MySQL 兼容性:TiDB 高度兼容 MySQL 5.7 和 8.0 的語法,以及 MySQL 的生態(tài)工具和開發(fā)框架,為主流應(yīng)用開發(fā)提供了極高的匹配度,實現(xiàn)與現(xiàn)有系統(tǒng)的無縫對接。

7.原廠專業(yè)支持:TiDB 的原廠工程師無論是售前還是售后工程師都展現(xiàn)出極高的專業(yè)度和敬業(yè)精神,能夠迅速協(xié)助解決各種問題,即使在節(jié)假日也能及時提供支持。

打開網(wǎng)易新聞 查看精彩圖片

  • 升級 TiDB 版本,解決已知的問題

這家企業(yè)計劃已經(jīng)在 去年 7 月底將原有的 TiDB v6.1.3 版本全面升級至 v7.1.5 版本,雖然升級過程出現(xiàn)一些小插曲,但是通過升級這件事看到了 TiDB 原廠的技術(shù)支撐的及時性和專業(yè)性,這是該企業(yè)從開源用戶走向商業(yè)客戶的價值所在。此次升級旨在提高創(chuàng)建索引的效率,創(chuàng)建索引的速度提升超過 10 倍。與此同時,該企業(yè)也在調(diào)研 TiDB 最新版本的能力,及時享受 TiDB 最新版本在功能、性能和穩(wěn)定性上的技術(shù)紅利。

  • 將 TiDB 應(yīng)用到更多業(yè)務(wù)場景

目前,TiDB 的應(yīng)用場景主要集中在庫存管理和財務(wù)成本結(jié)算等后臺系統(tǒng)。隨著這家企業(yè)對 TiDB 的深入理解和應(yīng)用經(jīng)驗的積累,后續(xù)計劃將 TiDB 應(yīng)用到更多的核心生產(chǎn)系統(tǒng)中,充分發(fā)揮 TiDB 在架構(gòu)、性能和功能上的優(yōu)勢。