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