導(dǎo)讀
作業(yè)幫是一家成立于 2015 年的在線教育品牌,致力于用科技手段助力教育普惠。經(jīng)過近十年的積累,作業(yè)幫運(yùn)用人工智能、大數(shù)據(jù)等技術(shù),為學(xué)生、老師、家長提供學(xué)習(xí)、教育解決方案,智能硬件產(chǎn)品等。隨著公司產(chǎn)品和業(yè)務(wù)場景越來越豐富,數(shù)據(jù)量越來越大,業(yè)務(wù)方對數(shù)據(jù)庫的使用需求也越來越多元化。本文介紹了作業(yè)幫對 TiDB 的探索歷程,以及逐漸落地多個(gè)業(yè)務(wù)場景的使用實(shí)踐。
TiDB 在作業(yè)幫的探索和推廣
作業(yè)幫內(nèi)部最開始接觸的版本是 TiDB v4.0.9。相較于 TiDB v3.x,v4.0.9 在性能、管理、易用性等方面都有了質(zhì)的提升,同時(shí) TiDB 的生態(tài)組件以及社區(qū)也都達(dá)到了非常完善的程度,可以說是一個(gè)標(biāo)志性的版本。2020 年,我們正式開始調(diào)研測試 TiDB v4.0.9, 以實(shí)現(xiàn)團(tuán)隊(duì)在分布式數(shù)據(jù)庫的技術(shù)儲(chǔ)備,從而更好地服務(wù)公司的業(yè)務(wù)需求。
1. 探索期: 使用?TiDB?隔離對在線?MySQL?集群有性能影響的查詢請求
研發(fā)人員需要不定時(shí)查詢線上實(shí)時(shí)數(shù)據(jù),以此來確定業(yè)務(wù)數(shù)據(jù)的情況或者對部分業(yè)務(wù)數(shù)據(jù)做匯總分析。
● 引入 TiDB 之前:業(yè)務(wù)人員是直連到 MySQL 從庫查詢數(shù)據(jù),如果掃描的數(shù)據(jù)量太大經(jīng)常會(huì)引起線上 MySQL 節(jié)點(diǎn)性能抖動(dòng)甚至機(jī)器的 io/cpu 資源瓶頸。
● 引入 TiDB 之后:通過數(shù)據(jù)同步工具 DM 將 MySQL 的數(shù)據(jù)以全量+實(shí)時(shí)增量的方式同步到 TiDB 中,實(shí)現(xiàn)在線、離線請求的隔離性。
在這個(gè)探索階段,一方面滿足了離線查詢的隔離性的要求,另一方面也熟悉了 TiDB 及其生態(tài)組件的特性以及使用方法。
2、推廣期:內(nèi)部分享+主動(dòng)出擊
經(jīng)過半年左右時(shí)間的使用,在對 TiDB 有一定了解的基礎(chǔ)上,我們開始在公司內(nèi)部進(jìn)行 TiDB 相關(guān)的技術(shù)分享,向研發(fā)人員介紹 TiDB 的一些特性和在大數(shù)據(jù)量場景下的優(yōu)勢,并主動(dòng)接觸各個(gè)業(yè)務(wù)線去尋找合適的使用場景。研發(fā)人員也陸續(xù)將一些業(yè)務(wù)?內(nèi)部使用的報(bào)表服務(wù)?接入到離線 TiDB 集群中。
在線業(yè)務(wù)落地從 0-1
在各個(gè)團(tuán)隊(duì)使用和熟悉 TiDB 一段時(shí)間后,我們開始針對已有業(yè)務(wù)的痛點(diǎn)或者未來新業(yè)務(wù)的規(guī)劃,逐漸將視野轉(zhuǎn)移到 TiDB。通過配合業(yè)務(wù)一起測試驗(yàn)證,開始正式將在線業(yè)務(wù)遷移到 TiDB 中。
1、報(bào)表平臺(tái)使用?TiDB?突破存儲(chǔ)&性能瓶頸
作業(yè)幫的報(bào)表服務(wù)每天要導(dǎo)入大量來自各個(gè)業(yè)務(wù)線的文件數(shù)據(jù),來實(shí)現(xiàn)最終的數(shù)據(jù)大盤展示。隨著業(yè)務(wù)線越來越多以及 MySQL 單實(shí)例主機(jī)的磁盤限制,報(bào)表服務(wù)平臺(tái)逐漸顯現(xiàn)出存儲(chǔ)受限以及數(shù)據(jù)展示響應(yīng)慢,甚至無法響應(yīng)等問題。
我們通過 DM 將數(shù)據(jù)同步到 TiDB 中,經(jīng)過業(yè)務(wù)驗(yàn)證,TiDB 對 SQL 達(dá)到了高度兼容性。同時(shí),對比使用 MySQL 的耗時(shí),TiDB 減少 80% 的時(shí)間,效果遠(yuǎn)超預(yù)期。隨著 DM 同步穩(wěn)定性的提高,報(bào)表平臺(tái)也將一些直連線上 MySQL 的報(bào)表服務(wù)改成使用 TiDB 作為數(shù)據(jù)源。
經(jīng)過改造,報(bào)表服務(wù)最終架構(gòu)如下:
2、業(yè)務(wù)流水?dāng)?shù)據(jù)
業(yè)務(wù)流水?dāng)?shù)據(jù)業(yè)務(wù)的主要特點(diǎn)是每日寫入數(shù)據(jù)量特別大,而且需要保存時(shí)間比較長。在公司的多個(gè)業(yè)務(wù)線中,只要是發(fā)展到一定階段,使用 MySQL 存儲(chǔ)的數(shù)據(jù)最終都會(huì)遇到存儲(chǔ)瓶頸。此時(shí) TiDB 便是非常好的一種解決方案。
在線業(yè)務(wù)落地從1-N
得益于 DM 同步數(shù)據(jù)的可靠性以及后面 TiDB-5.x 版本的兼容性、穩(wěn)定性,作業(yè)幫有些業(yè)務(wù)逐漸將性能采集數(shù)據(jù)、用戶訪問記錄、業(yè)務(wù)日志等業(yè)務(wù)也遷移到 TiDB。同時(shí),在人工智能爆發(fā)的背景下,越來越多的探索性業(yè)務(wù)天然需要存儲(chǔ)海量的數(shù)據(jù),TiDB 自然成為首選方案。當(dāng)然,線上還有很多核心業(yè)務(wù)不會(huì)輕易更換數(shù)據(jù)存儲(chǔ)方案,那么對歷史數(shù)據(jù)的歸檔使用 TiDB 也是目前的標(biāo)準(zhǔn)方案。
從 TiDB 4.0 版本開始,TiDB 加入了 TiFlash 列存引擎,并且在之后的版本中不斷增強(qiáng)。如果業(yè)務(wù)有任何復(fù)雜查詢需求,直接就可以在 TiDB 集群里通過增加 TiFlash 節(jié)點(diǎn)解決一些比較復(fù)雜的查詢。
總結(jié)以及未來展望
現(xiàn)在,TiDB 在作業(yè)幫內(nèi)部使用中已經(jīng)可以獨(dú)當(dāng)一面了。目前,作業(yè)幫已經(jīng)部署了幾十套 TiDB 集群,總體數(shù)據(jù)量規(guī)模超過百 TB。在這些集群中,大部分采用的是 TiDB 5.4 版本,有一半已經(jīng)升級到 6.5 版本。如果大家還在用 v3.x 版本的話,建議可以采用一些比較保險(xiǎn)的方法測試升級到新的版本。作業(yè)幫從 v4.0.9 版本一路不斷升級上來,整體感受是越來越穩(wěn)定,讓人比較安心,升級過程也非常絲滑,業(yè)務(wù)幾乎沒有任何感知。
最近有看到消息說杭州銀行已經(jīng)在核心賬務(wù)系統(tǒng)上線 TiDB 6.5.6 版本,到 2024 年我們應(yīng)該也會(huì)全部升級到這個(gè)版本。文章來源:http://www.zghlxwxcb.cn/news/detail-836922.html
最后,也說一下對 TiDB 的希望:文章來源地址http://www.zghlxwxcb.cn/news/detail-836922.html
- 希望 TiDB 能有不依賴于 CDC 的主備集群方案,一方面可以做異地機(jī)房的災(zāi)備,另一方面可以作為升級回滾的方案,避免升級之后出現(xiàn)業(yè)務(wù)不兼容的情況;
- 探索使用資源管控方案 (Resource Control)。對于 MySQL 分庫分表的業(yè)務(wù),無法將多個(gè)分集群同步到同一個(gè) TiDB 集群,會(huì)出現(xiàn)庫名沖突的情況;
- SQL 限流或者攔截功能:對于資源消耗異常高的 SQL,可以自動(dòng)進(jìn)行降級處理,避免將集群資源耗盡,集群雪崩。
到了這里,關(guān)于作業(yè)幫 x TiDB丨多元化海量數(shù)據(jù)業(yè)務(wù)的支撐的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!