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


1.概述

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

   本課程我通過一個用戶實時上報日志案例作為基礎,帶着大家去分析Kafka這樣一個項目的各個環節,從而對項目的整體設計做比較合理的規划,最終讓大家能夠通過本課程去掌握類似Kafka項目的分析與設計。下面,我給大家介紹本課程包含的課時內容,如下圖所示:

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

2.內容

2.1 項目整體設計

  項目整體概述主要講解一個項目產生的背景,以及該項目背后的目的,從而讓大家更好的去把握項目的需求。

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

  那么,接下來,我就先從背景來給大家簡述一個項目,背景包含一下知識點,如下圖所示:

  前面我已經給大家說明了,這是一個實時統計項目,我們可以實時的訪問記錄, 通過實時流式計算后,得到用戶實時的訪問行跡。這個和離線計算有所區別,離線計算任務,不能立馬得到我們想要的結果。

  那么,這樣一個項目我們能得到什么好處,舉個例子:

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

  以上便是我為大家介紹的項目背景,下面我給大家介紹項目的目的。

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

  關於詳細的目的內容,這里我就不多做贅述了。《觀看地址

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實戰項目之分析與設計

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM