Kafka項目實戰-用戶日誌上報實時統計之分析與設計

1.概述

  本課程的視頻教程地址:《Kafka實戰項目之分析與設計html

   本課程我經過一個用戶實時上報日誌案例做爲基礎,帶着你們去分析Kafka這樣一個項目的各個環節,從而對項目的總體設計作比較合理的規劃,最終讓你們可以經過本課程去掌握相似Kafka項目的分析與設計。下面,我給你們介紹本課程包含的課時內容,以下圖所示:前端

  接下來,咱們開始第一課時的學習:《項目總體概述》。chrome

2.內容

2.1 項目總體設計

  項目總體概述主要講解一個項目產生的背景,以及該項目背後的目的,從而讓你們更好的去把握項目的需求。服務器

  本課時所涉及的主要知識點,以下圖所示:架構

  那麼,接下來,我就先從背景來給你們簡述一個項目,背景包含一下知識點,以下圖所示:app

  前面我已經給你們說明了,這是一個實時統計項目,咱們能夠實時的訪問記錄, 經過實時流式計算後,獲得用戶實時的訪問行跡。這個和離線計算有所區別,離線計算任務,不能立馬獲得咱們想要的結果。學習

  那麼,這樣一個項目咱們能獲得什麼好處,舉個例子:網站

  業績部門的同事須要知道當天的用戶實時瀏覽行跡,而針對這一需求,咱們能夠經過實時計算後,將統計後的結果 經過圖表可視化出來,讓業績部門的同事能夠很是清晰的知道,公司的用戶對公司的那些業務模塊趕興趣,需求量比較大, 那麼業績部門的同事,能夠這一塊重點投入,對那些不是很趕興趣,需求量較小的模塊,業績部門的同事能夠投入的成本相對低一些。spa

  以上即是我爲你們介紹的項目背景,下面我給你們介紹項目的目的。設計

  項目的目的所包含的內容,以下圖所示:

  關於詳細的目的內容,這裏我就很少作贅述了。《觀看地址

2.2 Producer 模塊分析

  Producer模塊分析一課給你們介紹數據生產環節,我帶着你們去分析生產數據來源,讓你們掌握數據如何收集到 Kafka 的 Producer 模塊。

  其主要知識點包含如下內容,以下所示:

  下面,咱們先去分析數據來源。咱們知道,在日誌記錄中一條日誌記錄表明用戶的一次活動形跡,下面我我從實時日誌記錄中抽取的一條用戶記錄,以下所示:

121.40.174.237 yx12345 [21/July/2015 13:25:45 +0000] chrome appid_5 "http://www.***.cn/sort/channel/2085.html"

  那麼經過觀察分析這條記錄,咱們能夠從示例數據中獲得那些信息量,這裏我給你們總結到一張圖上了,以下圖所示:

  在分析了日誌記錄的信息量,咱們接下來去看看是如何收集到這些數據的,整個收集數據的流程是怎麼樣的,下面我用一張圖來給你們,以下圖所示:

  從圖中,咱們能夠看出,數據的產生的源頭是用戶,從圖的左邊開始看起,用戶經過本身手上的終端(有多是: PC機,手機,pad等設備去訪問公司的網站),而這裏訪問的記錄都會被實時的記錄到服務器,咱們在部署網站的的節點上添加 Flume的Agent代理,將這些實時記錄集中收集起來,而後咱們在Flume的Sink組件處添加輸送的目標地址,這裏咱們是要將這些 實時的記錄輸送到Kafka集羣的,因此在Sink組件處填寫指向Kafka集羣的信息,這樣收集的實時記錄就被存儲在Kafka的 Producer端,而後,這部分數據咱們就能夠在下一個階段,也就是消費階段去消費這些數據。

  以上就是整個實時數據的採集過程,由用戶產生,Flume收集並傳輸,最後存放與Kafka集羣的Producer端等待被消費。

  關於具體細節,這裏就不贅述了。《觀看地址

2.3 Consumer 模塊分析

  該課時我給你們介紹數據消費環節,帶着你們從消費的角度去分析消費的數據源,讓你們掌握數據如何在Kafka中被消費。

  其主要知識點包含如下內容,以下所示:

  那麼,下面我先帶着你們去分析消費數據來源,關於消費數據來源的統計的KPI指標,以下圖所示:

 

  從圖中,咱們能夠看出,由如下KPI指標:

  • 業務模塊的訪問量:這裏經過記錄中的App Id來統計相關指標。
  • 頁面的訪問量:關於PV,這裏咱們可使用瀏覽記錄來完成這部分的指標統計。
  • 當天時段模塊的訪問量:而時間段的訪問量,能夠經過用戶訪問的時間戳,來完成這部分的指標統計。
  • 訪問者的客戶端類型:在每條訪問記錄中,都含有對應的訪問瀏覽設備類型,咱們提取這部份內容來完成相應的統計指標。

  以上即是我給你們分析消費數據的相關信息所設計的內容。

  接下來,我帶着你們去看看本課時的另外一個比較重要的知識點,那就是關於數據源的消費流程。這裏,我用一張圖來給你們描述了整個消費過程,以下圖所示:

  咱們先從圖的最左邊看起,這個是Kafka的集羣,在這個集羣中,存放着咱們即將要被消費的數據,這裏,咱們經過KafkaSpout 將Kafka和Storm聯繫起來,將Kafka集羣中要消費的數據,經過KafkaSpout輸送到Storm集羣,而後數據進入到Storm集羣后, 經過Storm的實時計算模型,按照業務指標作對應的計算,並將計算以後的結果持久化到DB庫當中去,這裏同時採用MySQL和Redis 來作持久化。

  以上,即是我給你們描述的如何去消費Kafka集羣中數據的流程。《觀看地址

2.4 項目總體設計

  該課時我給你們介紹設計一個項目的總體架構和流程開發,以及 KPI 的設計,讓你們可以經過本課時去掌握一個項目的設計流程。

  其主要知識點包含如下內容,以下所示:

  下面,我先給你們去分析本項目的詳細設計流程,這裏我繪製了一張圖來描述整個項目設計流程的相關信息,以下圖所示:

  從圖的最左邊開始,依次是:

  • 數據源:這部分數據在用戶訪問公司網站的時候就會產生對應的記錄,咱們只須要在各個網站節點添加對應的Flume的Agent代理便可。
  • 數據收集:這裏咱們使用Flume集羣去收集訪問的日誌記錄,在收集完數據後,進入到下一階段。
  • 數據接入:在該模塊下,使用Kafka來充當一個消息數據的核心中間件,經過Flume的Sink組件,將數據 發送到Kafka集羣,這樣在Kafka的生產端就有了數據,這些數據等待去被消費。那麼接下來,經過KafkaSpout 將Kafka集羣和Storm集羣關聯起來,將Kafka集羣中的數據,由KafkaSpout輸送到Storm集羣,這樣消費端的數據就流向了Storm集羣。
  • 流式計算:在數據進入到Storm集羣后,經過Storm的實時計算模型,將數據按照業務須要完成對應的指標計算,並將統計的 結果持久化到DB庫當中。
  • 持久化層:在持久化層,這裏選用MySQL和Redis來作持久化存儲,統計結果出來後,進入到下一階段。
  • 數據接口層:這裏咱們能夠編寫一個RPC服務,統一的將統計結果共享出去,這裏RPC服務所採用的是Thrift,完成數據的共享。
  • 可視化層:這裏由前端統一查詢Thrift數據共享接口,將統計結果展現出來,完成數據的可視化。

  以上,即是我給你們介紹本項目的整個流程設計的相關內容。關於其餘的細節內容,這裏就很少贅述了。《觀看地址

3.總結

  本課程咱們對項目進行了總體分析,並指導你們去分析 Kafka 的 Producer 模塊和 Consumer 模塊,以及幫助你們去設計項目的開發流程等知識,咱們應該掌握如下知識點,以下圖所示:

4.結束語

  這就是本課程的主要內容,主要就對 Kafka 項目作前期準備,對後續學習 Kafka 項目實戰內容奠基良好的基礎。

  若是本教程能幫助到您,但願您能點擊進去觀看一下,謝謝您的支持!

  轉載請註明出處,謝謝合做!

   本課程的視頻教程地址:《Kafka實戰項目之分析與設計

相關文章
相關標籤/搜索