ByteHouse是一款OLAP引擎,具備查詢效率高的特點,在硬件需求上相對較低,且具有良好的水平擴展性,如果數據量進一步增長,可以通過增加服務器數量來提升處理能力。本文將從興趣圈層建設難點及構建方案等角度拆解如何基于OLAP引擎來搭建興趣圈層平臺。
抖音依靠自身推薦系統為用戶推送可能感興趣的視頻內容,其中興趣圈層是推薦的重要能力,通過理解核心用戶的偏好特征,判斷兩者偏好的相似性,從而構建同類用戶的興趣圈層,實現精準推薦。
以往的興趣圈層往往依賴單一的維度或標簽,比如內容類型、時長、地理特征等,難以揭示用戶興趣的底層邏輯。例如,重慶美女小姐姐吃播視頻、二次元古風舞蹈視頻,表面上標簽類型可能完全不一樣,但深度分析后發現喜歡兩個視頻的是同一個類型的人,并把他們劃分在同一個興趣圈層中。
要搭建這樣一套興趣圈層平臺,不僅需要算法策略,對底層數據存儲架構也是一大挑戰。抖音每日新增的數據量龐大、業務標簽五花八門,更需要滿足業務人員對復雜查詢的實時性訴求。之前技術團隊采用MySQL作為存儲架構,作為一種行式存儲的數據庫,MySQL對于大量數據的處理效率較低。如果要在MySQL上查詢上億級別的數據,可能需要更高配置的硬件,甚至可能需要采用分片、讀寫分離等策略來提升性能,這將導致硬件成本顯著提高。
因此,技術團隊逐漸將興趣平臺基于ByteHouse進行重構。ByteHouse是一款OLAP引擎,具備查詢效率高的特點,在硬件需求上相對較低,且具有良好的水平擴展性,如果數據量進一步增長,可以通過增加服務器數量來提升處理能力。本文將從興趣圈層建設難點及構建方案等角度拆解如何基于OLAP引擎來搭建興趣圈層平臺。
興趣圈層平臺介紹
興趣圈層指興趣愛好相同的人組成的群體,興趣圈層可以從用戶視角更深入的理解短視頻作者和內容,挖掘出該圈層作者核心用戶群體的共同興趣點和典型偏好特征,作為劃分作者的重要標簽,應用在內容分發、垂類運營、數據分析、戰略規劃等場景中輸出價值。興趣圈層以簇(cluster)的形式存在,通過機器模型聚類而成,每個簇包含一位種子作者及多位與之關聯作者。
圈層生產流程:數倉的天級 Hive 表以定時任務的方式將 Hive 表內數據按照分區導入 RDS(MySQL) 數據庫,同時預計算腳本每天會定時將 RDS 內的數據按需寫入緩存(如圈層信息等通用查詢)或寫回RDS(如圈層的父節點信息等核心數據),生產流程成功會標記在緩存代表今日數據有效,反之報警通知相關負責人。
圈層查詢流程:用戶操作查詢,前端發送查詢場景數據請求,服務端接收到請求后讀取相應的緩存、數據庫表及分區,對數據進行組裝,最終返回給用戶。
主要問題
數據膨脹
日更版本導致數據量級膨脹,圈層基礎信息表日增萬級數據,圈層作者信息表日增百萬數據,圈層用戶信息表日增千萬條左右數據,已經達到 MySQL 秒級千萬級查詢的性能瓶頸。
查詢效率已無法滿足需求,即使有緩存加速減少聯表查詢,單表查詢的效率在到10s以上,其中圈層理解(圈層用戶信息表)進入頁面的時間超過15s,一定程度影響業務使用體驗。之前做了很多包括索引優化、查詢優化、緩存優化、表結構優化,但是單次對表更新列/新增修改索引的時間已經超過2天,優化成本也逐漸升高。
歷史架構過薄,難以承接較復雜圈選能力
從現狀來看,當前圈層架構簡單且為區分查詢場景,與數據庫直接交互且僅支持簡單的同步查詢,當業務需要較復雜的泛化圈選條件時,需要用戶在平臺等待超過15s。
從未來規劃,目前以 RDS 為存儲的同步查詢架構已無法支持需要關聯多個表和特征的復雜條件查詢的業務場景。
業務特征膨脹
標簽特征膨脹,當前圈層有越來越多的標簽描述,由于不同業務方會通過不同視角理解圈層,如垂類標簽/圈層關鍵詞描述/圈層質量分類/圈層畫風等,目前圈層信息實體特征達到幾十種,預計圈層屬性標簽仍會膨脹。
一站式圈選泛化目標作者訴求增多,當前作者只包含基礎信息,業務方希望基于圈層和其他基礎作者特征,如粉絲數,作者質量,活躍度等以滿足對作者的流量定向策略等需求,以滿足復雜條件多維度的篩選排序功能。
基于 ByteHouse 重構興趣圈層平臺
RDS 作為行式數據庫更適合單點事務分析工作顯然不符合當前平臺訴求,我們分別從查詢場景、查詢性能、存儲成本、遷移成本對存儲選型。
查詢場景
- 圈層信息由模型生產,按時間分區批量導入,不存在臨時導入,為 Append only 場景。
- 圈層特征多,業務方按照訴求對和自身業務相關的特征進行篩選,列式存儲比行式存儲更合適。
- 圈層主要以分析統計為主,不強需求事務處理,面向 OLAP 業務。
查詢性能
- MySQL 對于多列復雜的條件查詢時,查詢性能很難優化,需要通過強依賴 redis 緩存加速,否則平臺功能不可用。
- 圈層場景通常限制在局部數據中聚合分析,如計算圈層id位于集合內的關鍵詞頻率統計,若該集合范圍過大索引失效會被劣化為全表掃描。
詳細場景測試
重構前后存儲對比
具體場景對比
數據管理信息查詢場景:
應用工具分析場景:
總結
綜上可以看到,基于 ByteHouse 替換 MySQL 重構抖音興趣圈層平臺后,不同幾個典型場景的查詢效率平均提升了 100 倍左右,大大提升了用戶體驗。由于 ByteHouse 出色的查詢性能和良好的數據壓縮比,中等資源的服務器就能很好的滿足需求,這也降低了綜合硬件成本。此外,ByteHouse 具有良好的水平擴展能力,如果數據量進一步增長,也可以便捷的通過增加服務器數量來提升分析能力。