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