Kafka實(shí)戰(zhàn)-實(shí)時日志統(tǒng)計流程 - 哥不是小蘿莉 - 博客園
http://www.cnblogs.com/smartloli/p/4581501.html
2.項(xiàng)目流程
在整合這套方案的時候,項(xiàng)目組也是經(jīng)過一番討論,在討論中,觀點(diǎn)很多,有人認(rèn)為直接使用Storm進(jìn)行實(shí)時處理,去掉Kafka環(huán)節(jié);也有認(rèn)為直接使用Kafka的API去消費(fèi),去掉Storm的消費(fèi)環(huán)節(jié)等等,但是最終組內(nèi)還是一致決定使用這套方案,原因有如下幾點(diǎn):
【業(yè)務(wù)模塊化】
【功能組件化】
我們認(rèn)為,Kafka在整個環(huán)節(jié)中充當(dāng)?shù)摹韭氊?zé)應(yīng)該單一】,這項(xiàng)目的整個環(huán)節(jié)她就是一個【中間件】,下面用一個圖來說明這個原因,如下圖所示:
//

整個項(xiàng)目流程如上圖所示,這樣劃分使得各個業(yè)務(wù)模塊化,功能更加的清晰明了。
Data Collection
負(fù)責(zé)從各個節(jié)點(diǎn)上實(shí)時收集用戶上報的日志數(shù)據(jù),我們選用的是Apache的Flume NG來實(shí)現(xiàn)。
Data Access
由于收集的數(shù)據(jù)的速度和數(shù)據(jù)處理的速度不一定是一致的,因此,這里添加了一個中間件來做處理,所使用的是Apache的Kafka,關(guān)于Kafka集群部署,大家可以參考我寫的《Kafka實(shí)戰(zhàn)-Kafka Cluster》。另外,有一部分?jǐn)?shù)據(jù)是流向HDFS分布式文件系統(tǒng)了的,方便于為離線統(tǒng)計業(yè)務(wù)提供數(shù)據(jù)源。
Stream Computing
在收集到數(shù)據(jù)后,我們需要對這些數(shù)據(jù)做實(shí)時處理,所選用的是Apache的Storm。關(guān)于Storm的集群搭建部署博客后面補(bǔ)上,較為簡單。
Data Output
在使用Storm對數(shù)據(jù)做處理后,我們需要將處理后的結(jié)果做持久化,由于對響應(yīng)速度要求較高,這里采用Redis+MySQL來做持久化。整個項(xiàng)目的流程架構(gòu)圖,如下圖所示:
