在嗶哩嗶哩(Bilibili)這一龐大的數字內容生態中,數據是驅動業務增長、優化用戶體驗和實現精細化運營的核心燃料。為了高效、穩定地管理海量、多元的數據流,嗶哩嗶哩構建了先進的數據服務中臺,其中數據處理服務作為關鍵一環,扮演著數據“心臟”的角色。本文將探討嗶哩嗶哩在數據處理服務中臺建設方面的實踐與思考。
一、數據處理服務的核心定位與挑戰
嗶哩嗶哩的數據處理服務位于數據中臺的核心層,其主要職責是承接來自各業務線(如視頻點播、直播、社區互動、電商等)的原始數據,經過清洗、轉換、聚合、計算等一系列加工流程,最終產出可供下游分析、應用、算法模型使用的標準化數據資產。其面臨的挑戰包括:
- 數據規模巨大:每日需處理PB級別的用戶行為、視頻播放、彈幕評論等數據。
- 實時性要求高:如推薦系統、風控監控等場景需要秒級甚至毫秒級的實時數據處理能力。
- 數據多樣性:結構化、半結構化(如JSON日志)、非結構化(如圖片、音頻元數據)數據并存。
- 業務快速迭代:新業務、新功能層出不窮,數據處理流程需要靈活、可擴展。
二、架構設計與關鍵技術棧
嗶哩嗶哩的數據處理服務采用了分層、流批一體的混合架構:
- 數據采集與接入層:通過自研的Agent、Logstash、Flume等工具,從業務服務器、客戶端、第三方服務等源頭實時/離線采集數據,并統一寫入Kafka消息隊列,作為數據總線。
- 實時計算層:基于Apache Flink構建實時計算引擎。Flink的高吞吐、低延遲特性完美支撐了實時指標計算(如在線人數、熱門視頻)、實時用戶畫像更新、實時異常檢測等場景。通過Flink SQL和自定義UDF,開發效率大幅提升。
- 批量計算層:基于Apache Spark和Hive構建離線計算體系。負責T+1的批量ETL任務、歷史數據回溯、復雜報表生成等。通過YARN或Kubernetes進行資源調度,確保集群資源高效利用。
- 數據存儲層:根據數據特性和訪問模式,選用不同的存儲方案:
- 實時明細數據:存入Apache Druid或ClickHouse,支持高性能OLAP查詢。
- 批量結果數據:存入HDFS,并通過Hive Metastore進行元數據管理。
- 維度數據與中間結果:使用MySQL、Redis或HBase。
- 任務調度與運維層:采用Airflow或自研調度平臺,管理復雜的依賴關系與定時任務。建設了完善的監控告警體系(如Prometheus+Grafana),對任務健康度、數據質量、資源使用率進行全方位監控。
三、核心實踐與優化
- 數據標準化與模型建設:推行統一的數據規范(如OneData模型),建立主題域、業務過程、維度與事實表模型,減少數據冗余與歧義,提升數據一致性。
- 流批一體與Lambda架構演進:積極探索流批融合,如在Flink中實現同一套邏輯同時處理實時流和歷史數據,簡化架構,降低維護成本。
- 數據質量保障:建立數據血緣追蹤、數據稽核(如總量、唯一性、波動性校驗)、故障熔斷與數據回溯機制,確保數據處理結果的準確性與可靠性。
- 資源優化與成本控制:通過動態資源調整(如Flink Reactive Mode)、計算存儲分離、冷熱數據分級存儲、作業參數調優等手段,在保障SLA的同時有效控制計算與存儲成本。
- 平臺化與自助服務:將數據處理能力封裝成標準化的數據開發平臺(DataWorks),提供可視化的ETL開發、任務調試、運維監控界面,賦能業務團隊和數據分析師自助進行數據開發,提升整體效率。
四、價值與未來展望
通過構建強大的數據處理服務中臺,嗶哩嗶哩實現了:
- 效率提升:數據開發周期從“天”縮短到“小時”,快速響應業務需求。
- 質量可靠:數據準確性、時效性得到保障,為決策提供可信依據。
- 成本優化:資源利用率提高,基礎設施成本得到有效控制。
- 創新賦能:為A/B測試、個性化推薦、智能運營等高級應用提供了堅實的數據基石。
嗶哩嗶哩的數據處理服務將繼續向更智能化、更自動化的方向演進,例如利用機器學習優化任務調度與資源配置,深化實時計算能力以支持更復雜的實時業務場景,并進一步擁抱云原生技術,提升系統的彈性與可觀測性,持續支撐嗶哩嗶哩生態的繁榮發展。