在移動互聯(lián)網(wǎng)高速發(fā)展的時代,數(shù)據(jù)已成為企業(yè)核心的資產(chǎn)與競爭力。對于擁有數(shù)億用戶的vivo而言,如何高效、穩(wěn)定地處理與存儲海量的基礎數(shù)據(jù),是支撐其業(yè)務創(chuàng)新、用戶體驗優(yōu)化和智能決策的關鍵。vivo通過構建一套先進、彈性且可靠的基礎數(shù)據(jù)計算架構,在數(shù)據(jù)處理與存儲服務領域積累了豐富的實踐經(jīng)驗。
一、挑戰(zhàn):海量數(shù)據(jù)洪流下的核心訴求
vivo的業(yè)務場景多元,涵蓋用戶行為日志、設備狀態(tài)信息、應用性能數(shù)據(jù)、交互事件等,每日產(chǎn)生的數(shù)據(jù)量達到PB級別。這些數(shù)據(jù)具有體積巨大、來源分散、格式多樣、時效性要求高等特點。傳統(tǒng)的單體式或分散式數(shù)據(jù)處理系統(tǒng)難以應對,主要面臨三大挑戰(zhàn):
- 吞吐與實時性:需要同時滿足批量離線計算的高吞吐和實時流計算的低延遲。
- 可靠與可擴展性:系統(tǒng)需具備高可用性,并能隨著數(shù)據(jù)量的增長近乎線性地擴展。
- 成本與效率:在保障性能的前提下,必須優(yōu)化存儲與計算資源的使用效率,控制總體擁有成本。
二、架構核心:分層解耦與流批一體
為應對上述挑戰(zhàn),vivo構建了以“數(shù)據(jù)湖”為核心,融合“流批一體”計算范式的基礎數(shù)據(jù)架構。整體架構分為以下幾個層次:
1. 統(tǒng)一數(shù)據(jù)接入層:
建立標準化的數(shù)據(jù)采集與接入平臺,兼容各類數(shù)據(jù)源(APP端、服務器日志、數(shù)據(jù)庫Binlog等)。采用Apache Flume、Kafka等組件,實現(xiàn)數(shù)據(jù)的實時、準實時及批量接入,并進行初步的格式標準化與臟數(shù)據(jù)過濾,為下游提供統(tǒng)一的數(shù)據(jù)流。
2. 彈性數(shù)據(jù)存儲層(數(shù)據(jù)湖):
以HDFS和對象存儲(如兼容S3協(xié)議)為基礎,構建企業(yè)級數(shù)據(jù)湖。將原始數(shù)據(jù)、清洗后的數(shù)據(jù)、各層加工數(shù)據(jù)統(tǒng)一存儲,打破數(shù)據(jù)孤島。通過引入Apache Iceberg或Delta Lake等表格格式,在數(shù)據(jù)湖之上提供ACID事務、版本管理、schema演化等能力,使得海量數(shù)據(jù)存儲兼具成本效益與查詢效率。
3. 智能計算引擎層:
這是架構的“大腦”。vivo采用了“流批一體”的設計理念:
- 批量計算:基于Apache Spark構建強大的離線數(shù)據(jù)處理能力,用于T+1的報表、用戶畫像、數(shù)據(jù)倉庫分層(ODS、DWD、DWS等)的構建。
- 流式計算:深度應用Apache Flink,處理實時點擊流、監(jiān)控告警、實時推薦等場景。通過Flink的精確一次(Exactly-Once)語義和狀態(tài)管理,保障實時數(shù)據(jù)的準確性。
- “流批一體”實踐:通過將業(yè)務邏輯抽象成統(tǒng)一的SQL或API,讓同一套代碼既能跑在Flink流模式上,也能跑在Spark批模式上,極大降低了開發(fā)維護成本,并保證了數(shù)據(jù)處理邏輯的一致性。
4. 統(tǒng)一服務與治理層:
構建了集中的元數(shù)據(jù)管理、數(shù)據(jù)血緣、數(shù)據(jù)質(zhì)量監(jiān)控和任務調(diào)度平臺。例如,使用Apache Atlas進行數(shù)據(jù)資產(chǎn)管理,用DolphinScheduler或Airflow進行工作流編排。這一層確保了數(shù)據(jù)的可發(fā)現(xiàn)、可信、可用,是數(shù)據(jù)資產(chǎn)化的保障。
三、存儲服務實踐:分級存儲與智能緩存
針對海量數(shù)據(jù)的存儲,vivo實施了精細化的策略:
- 熱溫冷數(shù)據(jù)分級:根據(jù)數(shù)據(jù)的訪問頻率和時效性,將數(shù)據(jù)自動遷移至性能型SSD、容量型HDD以及成本更低的歸檔存儲中,實現(xiàn)存儲成本與訪問性能的最佳平衡。
- 索引與加速:對常用查詢字段建立高效的索引(如利用Hudi的索引能力),并引入Alluxio等內(nèi)存加速層,為交互式查詢和實時計算提供高速緩存。
- 多副本與糾刪碼:對核心熱數(shù)據(jù)采用多副本機制保障高可用;對溫冷數(shù)據(jù)采用糾刪碼(Erasure Coding)技術,在保證可靠性的同時顯著提升存儲空間利用率。
四、應用成效與未來展望
通過這套架構的落地實踐,vivo取得了顯著成效:數(shù)據(jù)處理鏈路時效性從小時級提升到分鐘級甚至秒級;資源利用率平均提高30%以上;數(shù)據(jù)開發(fā)效率因“流批一體”而大幅提升。更重要的是,它為AI訓練、精準營銷、風控安全、用戶體驗優(yōu)化等上層應用提供了堅實、高效的數(shù)據(jù)底座。
vivo將繼續(xù)探索云原生計算架構(如Kubernetes上運行Flink/Spark)、存算分離的更深層次實踐、以及AI for Data(利用AI優(yōu)化數(shù)據(jù)治理與管理)等方向,讓基礎數(shù)據(jù)計算架構更智能、更彈性、更普惠,持續(xù)驅動業(yè)務價值的創(chuàng)造。
vivo的實踐表明,面對海量數(shù)據(jù),一個設計優(yōu)良、貼合業(yè)務且持續(xù)演進的計算與存儲架構,不僅是技術工程問題,更是企業(yè)數(shù)字化轉型的核心引擎。