TiDB 在西山居實時輿情監控系統中的應用

2021-09-11 13:13:13 字數 2704 閱讀 7515

西山居建立 1995 年初夏,在美麗的海濱小城珠海,西山居工作室孕育而生,一群西山居居士們十年如一日尅勊業業的奮鬥。"創造快樂,傳遞快樂!" 一直是西山居居士們的創作宗旨。西山居以領先的技術作為堅實的基礎以獨特的本土化產品為玩家提供時尚化服務。在未來,西山居仍以娛樂軟體為主導產品,不斷進行研發和市場活動,逐步發展成為國內最優秀的集製作、發行於一體的數位化互動娛樂公司。

由於公司產品的社交屬性都非常強,對相關輿情進行分析與了解就顯得很有必要,在此背景下,輿情監控系統應運而生。該系統利用演算法組提供的分詞演算法,對文字進行解析與分類,打上各類標記後再通過計算產生中間結果。輿情系統直接查詢這些中間結果,產生各類報表與趨勢圖,為及時掌握各類輿情趨勢提供便利。使用者可以自由組合輿情關注點,從而對平台有很嚴格的實時互動性查詢要求,是典型的實時 htap 類業務。

輿情系統之前我們曾經實現過乙個客服系統,這個系統要求能實時查詢,但面對是海量的玩家行為記錄。在當時情況下(2016 年),可以選擇的物件只有 mycat 這類資料庫中介軟體,通過綜合壓力測試後,我們選定了 kingshard 這一款由公司前同事開發的中介軟體,kingshard 雖然沒有 mycat 豐富的周邊功能,但它在滿足我們業務需求的核心功能上有更快的表現。但正因為有了這一次中介軟體的使用,我們對中介軟體有了比較全面的了解,它們在查詢優化上有著天生的弱點,無法滿足更複雜的查詢或者表現極不友好,為此我們還不得不砍掉了客服系統的部分業務功能,所以在那時我已開始尋找更優的技術方案,其中分布式資料庫是我們考察的重點方向。

bigtable、gfs、mapreduce 是谷歌在分布式儲存與查詢領域的探索成果,他們沒有公開具體實現**,但卻發布了相應**,對分布式檔案系統、大資料探勘和 nosql 發展起了重大促進作用。開源界根據這一成果開發出對應產品是 hbase、hdfs、hadoop,這三個產品紅極一時,相關周邊產品更是百花齊放,很多細分領域都同時出現了多個產品競爭,讓整個生態非常繁榮但也變得複雜,提高了我們的學習與使用成本。那麼,在一些領域中有沒有更加簡單、直接、具有較強融合能力的解決方案呢?此時距谷歌這三篇**發表已近 10 年,谷歌內部早已在嘗試融合 nosql 和 sql,並對它們進行了多次更新換代,spanner、f1 兩篇**便是谷歌在這一方向的探索成果。開源分布式資料庫 tidb 便是受**啟發而設計的 htap (hybrid transactional and analytical processing) 資料庫,結合了傳統的 rdbms 和 nosql 的最佳特性,相容 mysql,具有支援分布式事務、無限的水平擴充套件、資料強一致性保證等核心 newsql 特性。

當時,輿情系統接入的第乙個遊戲平均每天入庫資料量就已達到 8500 萬條,並且還需要支援各種實時互動性查詢,顯然中介軟體已不能滿足要求,傳統的關係型資料庫則更加不可能了。考慮到以後還會有其它遊戲接入,我們果斷選擇了分布式資料庫。 隨著網際網路經濟的發展,資料量跟併發數也在飛速增長,單機資料庫已越來越不能滿足要求了,為此谷歌、阿里等大廠都有了自研的分布式資料庫,但都沒有開源,而 mysql 的 mgr 及相關功能進展的步子太小,tidb 的出現很好的彌補了市場空白,成為我們的唯一選擇。

輿情系統是內部孵化專案,伺服器具體如下:

新購物理機器 6 臺:

舊物理機 4 臺:

我們將對資源使用相對較小的 pd、監控服務分別放在舊物理機上,tidb、tikv 和 tispark 則分配在新機器上,詳細如下:

其中每個 tikv 分配 cpu 10c / 記憶體 64g / 硬碟 2t,每個 tispark 分配 cpu 20c / 記憶體 64g。在資源有限情況下,結合資料量及輿情系統的 ap 業務屬性,我們設計了這樣相對複雜的架構,目的是為了充分利用好伺服器資源,讓它們能承擔更極限的壓力,事後有多次歷史資料的匯入也證明了我們這樣設計的必要性,多謝 tidb 的兄弟全程耐心指導及幫助。

得出中間結果是乙個非常大的計算過程,所以我們使用了 tispark。tispark 是 pingcap 為解決使用者複雜 olap 需求而推出的產品,它是將 spark sql 直接執行在分布式儲存引擎 tikv 上的 olap 解決方案。有了 tispark 我們可以方便地使用 spark,而不需要再單獨搭建一套 spark 集群。

從 tidb 的 1.0 rc 3 版本開始,我們就在金山雲上搭建集群來試用與壓測。期間經歷了多次版本熱更,集群也一直很穩定,功能與效能越來越強,所以在輿情系統開始開發時我們果斷使用了 tidb。並且 tidb 有強烈的市場需求,他們的版本更新非常迅速,在試用期間時發現了一些功能不能滿足需要,往往在下乙個版本就解決了,這讓人非常驚嘆。

當前版本未加入實時計算業務,再加上使用了 tispark,所以整個架構相對簡單,詳細如下圖:

輿情系統目前總資料量數 t,已正式上線三個月,期間從未出現過異常,系統平穩、使用效果也非常好。現在每天原始文字資料在 2500 萬條以上,通過演算法分詞後產生的中間結果則每天有 6000 萬條左右(日均入庫 8500 萬條),高峰時段的平均 qps 在 3k 以上,閒時的平均 qps 為 300 多一點。根據這樣的量級,在一開始評估時設定的目標是:支援最近乙個星期的實時互動性查詢,但現在已經遠遠超過我們的預期。目前所有乙個月內的時間跨度查詢都在 1 秒左右完成,個別複雜的 3 個月的實時互動性查詢則需要 2 秒多一點。

可以說 tidb 給我們的體驗遠超預期,這樣的資料量級及響應,單機版資料庫是不可能達到要求的。

作者介紹:鄒學,輿情監控系統技術負責人,珠海金山網路遊戲科技****(西山居)資料中心架構師,2015 年加入西山居,具有 10 年遊戲行業軟體開發經驗,主要參與了公司的遊戲閘道器設計,資料分析框架底層架構建設等,現專注於實時計算、爬蟲、分布式系統方向。

TiDB 在西山居實時輿情監控系統中的應用

西山居建立 1995 年初夏,在美麗的海濱小城珠海,西山居工作室孕育而生,一群西山居居士們十年如一日尅勊業業的奮鬥。創造快樂,傳遞快樂!一直是西山居居士們的創作宗旨。西山居以領先的技術作為堅實的基礎以獨特的本土化產品為玩家提供時尚化服務。在未來,西山居仍以娛樂軟體為主導產品,不斷進行研發和市場活動,...

西山居決賽

很刺激的比賽,雖然表現很捉雞,但還是很開心。tc cf規則,3小時,其中0.5小時是hack環節 分數分布 1000 1000 1500 2000 2000 01 看了一下發現是道sb的拓撲排序 事實上不是 輕鬆過掉pretest 02 分析錯了最壞情況,以為暴力能過,然後就暴力了。03 一開始就覺...

西山居 筆試題

1.char sztest 12345 t n 0abcd 0 則 strlen sztest 值為 7 sizeof sztest 值為 14 2.int antest 5 10 int n1 antest 4 antest 10 n2 antest 3 1 antest 1 3 則 n1和n2 ...