TiDB 在猿輔導數據快速增加及複雜查詢場景下的應用實踐

猿輔導是國內擁有最多中小學生用戶的在線教育機構,旗下有猿題庫、小猿搜題、猿輔導三款在線教育 APP,爲用戶提供在線題庫、拍照搜題、名師在線輔導相關的服務。其中,猿輔導APP已經有超過116萬付費用戶,提供小學英語、奧數,和初中高中全學科的直播輔導課程,全國任何地區的中小學生,均可以享受在家上北京名師輔導課的服務。數據庫

海量的題庫、音視頻答題資料、用戶數據以及日誌,對猿輔導後臺數據存儲和處理能力都提出了嚴峻的要求。服務器

猿輔導的業務決定了其後臺系統具備如下特色:

1.數據體量大,增速快,存儲系統須要可以靈活的水平擴展;網絡

2.有複雜查詢,BI 方面的需求,能夠根據索引,例如城市、渠道等,進行實時統計;架構

3.數據存儲要具有高可用、高可運維性,實現自動故障轉移。併發

在最初方案選型時,猿輔導初期考慮用單機 MySQL。但根據業務發展速度預估,數據存儲容量和併發壓力很快就會達到單機數據庫的處理瓶頸。若是在 MySQL 上加入分庫中間件方案,則必定要指定 sharding key,這樣是沒法支持跨 shard 的分佈式事務。同時 proxy 的方案對業務層的侵入性較強,開發人員必須瞭解數據庫的分區規則,沒法作到透明。運維

除此以外,分庫分表很難實現跨 shard 的聚合查詢,例如全表的關聯查詢、子查詢、分組聚合等業務場景,查詢的複雜度須要轉嫁給開發者。即便某些中間件能實現簡單的 join 支持,可是仍然沒有辦法保證查詢的正確性。另外廣播是一個沒有辦法 Scale 的方案,當集羣規模變大,廣播的性能開銷是很大的。同時,傳統 RDBMS 上 DDL 鎖表的問題,對於數據量較大的業務來講,鎖定的時間會很長,若是使用 gh-ost 這樣第三方工具來實現非阻塞 DDL,額外的空間開銷會比較大,並且仍然須要人工的介入確保數據的一致性,最後切換的過程系統可能會有抖動。能夠說,運維的複雜性是隨着機器數量指數級增加,而擴容複雜度則是直接轉嫁給了 DBA。分佈式

最終,猿輔導的後臺開發同窗決定尋求一個完全的分佈式存儲解決方案。經過對社區方案的調研,猿輔導發現分佈式關係型數據庫 TiDB 項目。工具

TiDB 是一款定位於在線事務處理/在線分析處理(HTAP)的融合型數據庫產品,具有在線彈性水平擴展、分佈式強一致性事務、故障自恢復的高可用、跨數據中心多活等核心特性;對業務沒有任何侵入性,能優雅的替換傳統的數據庫中間件、數據庫分庫分表等 Sharding 方案,並在此過程當中保證了事務的 ACID 特性。同時它也讓開發運維人員不用關注數據庫 Scale 的細節問題,專一於業務開發,極大的提高研發的生產力。用戶能夠把 TiDB 看成一個容量無限擴展的單機數據庫,複雜的分佈式事務和數據複製由底層存儲引擎來支持,開發者只須要集中精力在業務邏輯的開發上面。下圖爲 TiDB 與傳統的 MySQL 中間件方案的一些對比:性能

TiDB 集羣主要分爲三個組件:TiDB Server、TiKV Server、PD Server。下圖爲 TiDB 總體架構圖:學習

TiDB Server 負責處理 SQL 請求,隨着業務的增加,能夠簡單的添加 TiDB Server 節點,提升總體的處理能力,提供更高的吞吐。TiKV 負責存儲數據,隨着數據量的增加,能夠部署更多的 TiKV Server 節點解決數據 Scale 的問題。PD 會在 TiKV 節點之間以 Region 爲單位作調度,將部分數據遷移到新加的節點上。因此企業在業務的早期,能夠只部署少許的服務實例,隨着業務量的增加,按照需求添加 TiKV 或者 TiDB 實例。

在實際上線的部署設置中,猿輔導選擇了 2 TiDB + 3 TiKV + 3 PD 的架構,隨着業務數據的增長能夠彈性擴容,數據條數天天 500w,平常庫中數億條記錄,峯值 QPS 1000。

猿輔導的用戶端會作一些直播過程的音視頻質量的數據收集,好比丟包,延遲,質量打分。而後客戶端把這些數據發回服務器,服務器把這些數據存到 TiDB 上。

在猿輔導研發副總裁郭常圳看來:「TiDB 是一個頗有野心的項目,從無到有的解決了 MySQL 過去遇到的擴展性問題,在不少場合下也有 OLAP 的能力,省去了不少數據倉庫搭建成本和學習成本。這在業務層是很是受歡迎的。」對於接下來的計劃,猿輔導預計在其餘分庫分表業務中,經過 syncer 同步,進行合併,而後進行統計分析。

實際上,相似猿輔導這種場景的並非第一家,在互聯網快速發展下,大量的企業面對着業務激增的狀況。TiDB 靈活的水平擴展能力,可以知足企業業務快速發展的須要。

目前,TiDB 已有準生產測試用戶 200 餘家,其中摩拜單車、同程旅遊、360 金融、心動網絡、蓋婭互娛等數十家不一樣行業的領先企業已經應用在實際生產環境,涉及互聯網、遊戲、金融、政府、電信、製造業等多個領域。

相關文章
相關標籤/搜索