目前在唯品會(huì)實(shí)時(shí)平臺(tái)并不是一個(gè)統(tǒng)一的計(jì)算框架,而是包括Storm,Spark,F(xiàn)link在內(nèi)的三個(gè)主要計(jì)算框架,這是由于歷史原因形成。
實(shí)時(shí)平臺(tái)的職責(zé)主要包括實(shí)時(shí)計(jì)算平臺(tái)和實(shí)時(shí)基礎(chǔ)數(shù)據(jù)。實(shí)時(shí)計(jì)算平臺(tái)在Storm、Spark、Flink等計(jì)算框架的基礎(chǔ)上,為監(jiān)控、穩(wěn)定性提供了保障,為業(yè)務(wù)開(kāi)發(fā)提供了數(shù)據(jù)的輸入與輸出。實(shí)時(shí)基礎(chǔ)數(shù)據(jù)包含對(duì)上游埋點(diǎn)的定義和規(guī)范化,對(duì)用戶(hù)行為數(shù)據(jù)、MySQL的Binlog日志等數(shù)據(jù)進(jìn)行清洗、打?qū)挼忍幚恚瑸橄掠翁峁┵|(zhì)量保證的數(shù)據(jù)。
在架構(gòu)設(shè)計(jì)上,包括兩大數(shù)據(jù)源。一種是在App、微信、H5等應(yīng)用上的埋點(diǎn)數(shù)據(jù),原始數(shù)據(jù)收集后發(fā)送到在kafka中;另一種是線上實(shí)時(shí)數(shù)據(jù)的MySQL Binlog日志。數(shù)據(jù)在計(jì)算框架里面做清洗關(guān)聯(lián),把原始的數(shù)據(jù)通過(guò)實(shí)時(shí)ETL為下游的業(yè)務(wù)應(yīng)用(包括離線寬表等)提供更易于使用的數(shù)據(jù)。
以UV計(jì)算為例,首先對(duì)Kafka內(nèi)的埋點(diǎn)數(shù)據(jù)進(jìn)行清洗,然后與redis數(shù)據(jù)進(jìn)行關(guān)聯(lián),關(guān)聯(lián)好的數(shù)據(jù)寫(xiě)入Kafka中;后續(xù)Flink計(jì)算任務(wù)消費(fèi)Kafka的關(guān)聯(lián)數(shù)據(jù)。通常任務(wù)的計(jì)算結(jié)果的量也很大(由于計(jì)算維度和指標(biāo)特別多,可以達(dá)到上千萬(wàn)),數(shù)據(jù)輸出通過(guò)也是通過(guò)Kafka作為緩沖,最終使用同步任務(wù)同步到HBase中,作為實(shí)時(shí)數(shù)據(jù)展示。
同步任務(wù)會(huì)對(duì)寫(xiě)入HBase的數(shù)據(jù)限流和同類(lèi)型的指標(biāo)合并,保護(hù)HBase。與此同時(shí)還有另一路計(jì)算方案作為容災(zāi)。
原文鏈接:
Apache Flink 在唯品會(huì)的實(shí)踐
https://www.iteblog.com/archives/2415.html






