Kafka項目實戰-用戶日志上報實時統計之應用概述


1.概述

  本課程的視頻教程地址:《Kafka實戰項目之應用概述

  本課程是通過一個用戶實時上報日志來展開的,通過介紹 Kafka 的業務和應用場景,並帶着大家搭建本 Kafka 項目的實戰開發環境。下面我們來看看本課程有哪些課時,如下圖所示:

  接下來,我們開始第一課時的學習:《Kafka 回顧》。

2.內容

2.1 Kafka 回顧

  本課時簡述 Kafka 平台部署的注意事項,以及 Kafka 在企業中的業務場景和應用場景。讓大家了解 Kafka 在企業中的使用。

  本課時主要包含以下知識點,如下圖所示:

  首先,我們來看看Kafka的業務場景,其內容包含以下知識點,如下圖所示: 

  • 第一:解除耦合

  在項目啟動之初來預測將來項目會碰到什么需求,是極其困難的。消息系統在處理過程中間插入了一個隱含的、基於數據的接口層,兩邊的處理過程都要實現這一接口。這允許你獨立的擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。

  • 第二:增加冗余

  有些情況下,處理數據的過程會失敗。除非數據被持久化,否則將造成丟失。消息隊列把數據進行持久化直到它們已經被完全處理,通過這一方式規避了數據丟失風險。許多消息隊列所采用的put-get-delete范式中,在把一個消息從隊列中刪除之前,需要你的處理系統明確的指出該消息已經被處理完畢,從而確保你的數據被安全的保存直到你使用完畢。

  • 第三:提高可擴展性

  因為消息隊列解耦了你的處理過程,所以增大消息入隊和處理的頻率是很容易的,只要另外增加處理過程即可。不需要改變代碼、不需要調節參數。擴展就像調大電力按鈕一樣簡單。

  • 第四:Buffering

  在任何重要的系統中,都會有需要不同的處理時間的元素。例如,加載一張圖片比應用過濾器花費更少的時間。消息隊列通過一個緩沖層來幫助任務最高效率的執行———寫入隊列的處理會盡可能的快速。該緩沖有助於控制和優化數據流經過系統的速度。

  • 第五:異步通信

  很多時候,用戶不想也不需要立即處理消息。消息隊列提供了異步處理機制,允許用戶把一個消息放入隊列,但並不立即處理它。想向隊列中放入多少消息就放多少,然后在需要的時候再去處理它們。

  以上就是Kafka的業務場景介紹,下面我給大家介紹Kafka的應用場景。

  應用場景的主要內容如下圖所示:

  • 首先是:Push Message

  Kafka可以應用與消息系統,比如:當下較為熱門的消息推送,這些消息推送系統的消息源,可以使用Kafka作為系統的核心中間件來完成消息的生產和消息的消費。

  • 然后是:Website Tracking

  我們可以將企業的Portal,用戶的操作記錄等信息發送到Kafka中,按照實際業務需求,可以進行實時監控,或者離線處理等。

  • 最后一個是:日志收集中心

  類似於Flume套件這樣的日志收集系統,但Kafka的設計架構采用push/pull.適合異構集群,Kafka可以批量提交消息,對Producer來說,在性能方面基本上是無消耗的,而在Consumer端中,我們可以使用Hadoop,Storm等其他系統化的存儲和分析系統。

  我們在掌握了Kafka的業務和應用場景后,下面我們來看看實時統計平台搭建需要注意的事項:如下圖所示,這是Kafka集群的搭建的架構圖。分別由三個kafka節點組成一哥高可用的集群,由ZooKeeper集群連接,提供一個快速,高可用,容錯,分布式的協調服務。

  平台注意事項包含以下知識點:

  • Kafka的HA特性
  • 平台核心文件的配置
  • 集群啟動步驟
  • 集群演示

  關於詳細過程以及演示步驟大家可以觀看視頻,這里我就不多做贅述了。《觀看地址

2.2 項目簡要

  本課時講解如何規划一個項目的整體流程,以及如何獲取一個項目所需要的數據來源和如何去消費這些數據。

讓大家從中掌握項目的開發流程,為后續的項目分析與設計階段做好准備。

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

  接下來,我們從項目的整體流程入手去簡述,如下圖所示:

  這是一個項目的整體流程,本項目是以一個用戶日志上報系統為案例,從流程可以看出,我們將該項目的流程分為四個模塊:數據收集,數據接入,實時流式計算,數據輸出。

  使用這套方案的優點有以下:

  • 業務模塊化
  • 功能組件化

  我們認為,Kafka在整個環節中充當的職責應該單一,這項目的整個環節她就是一個中間件。整個項目流程如上圖所示,這樣划分使得各個業務模塊化,功能更加的清晰明了。

  • 首先是數據收集模塊:我們采用的是Apache的Flume NG來實現的,主要負責從各個節點上實時收集用戶上報的日志數據。
  • 接着是數據接入模塊:由於收集的數據的速度和數據處理的速度不一定是一致的,因此,這里我們添加一個中間件來做處理,所使用的是Apache的Kafka,另外,這里有一部分數據是流向HDFS分布式文件系統的,方便於為離線統計業務提供數據源。
  • 然后接下來是實時流式:我們在收集到數據后,我們需要對這些數據做實時處理,所選用的是Apache的Storm。關於Storm集群的安裝比較簡單,具體安裝細節,大家可以去觀看視頻,《觀看地址》。
  • 在我們完成流式計算模塊后,最后是數據輸出模塊:在使用Storm對數據做處理后,我們需要將處理的結果做持久化,由於對響應速度要求較高,這里采用Redis和MySQL來做持久化。

  這就算整個流程的架構圖。在介紹完整個架構的流程圖,接下來,我們來看看數據源生產介紹,如下圖所示:

  從圖中,我們可以看出由Flume NG組建的日志收集集群,將日志集中收集起來,然后通過Flume的Sink組件將數據發送到指定的Kafka中間件中,這樣在Kafka的Producer端,就有了數據源。從Flume到Kafka,通過Sink來完成數據源的生產階段。

  在完成了數據源的生產后,下面我們來看看如何去消費這些數據。關於數據源的消費,我們來看看下面這張圖:

  從上圖中,我們可以看出數據源存在Kafka中,通過KafkaSpout將數據輸送到Storm,然后Storm將Kafka中的數據進行消費處理,通過Storm的計算模塊,按照業務需求將數據做對應的處理,完成數據的消費,最后將統計的結果持久化到DB庫當中。

  關於更加詳細的內容,大家可以去觀看視頻教程,《觀看地址》。

2.3 Kafka 工程准備

  本課時講解創建一個本項目的工程,以及編寫本項目需要准備的基礎環境,包含 Kafka 的監控系統,Storm 群的准備。為完成編碼實踐奠定良好的基礎。

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

 

  下面,我們來看看,基礎環境需要准備有哪些內容。內容如下所示:

  • 概述。
  • 基礎軟件介紹。
  • 使用技巧。
  • 預覽及演示。

  在Kafka項目時,在消費端使用Storm來做計算處理,因而,我們使用的開發語言是Java,編寫Java的相關代碼都是在IDE中來完成的,IDE為開發者編碼提供了方便。課程中所使用的IDE是JBoss Studio 8,這是RedHat公司開發的一款IDE,其本質是Eclipse,只是該IDE集成的插件比較豐富,大家若是需要可以到它的官網去下載。另外,在開發過程當中,我們還需要一個比較重要的插件 —— Kafka的監控工具。這個工具可以給我們觀察Kafka數據生產和消費提供方便,另外一個就Storm的UI管理界面,我們可以通過Storm UI來觀察Storm作業的運行情況。

  在熟悉基礎軟件和插件的使用后,我們來創建Kafka工程,在創建Kafka工程時需要注意以下幾點:

  • 相關基礎環境的准備,如:Java的基礎開發包JDK,這個需要准備好,不然,我們無法編譯執行相關Java代碼

另外,准備好Maven環境,方便打包我們的工程。

  • 在我們已有的基礎環境下,我們來創建相關Kafka工程。下面為大家演示具體的操作流程。

  關於演示詳細過程,大家可以去觀看視頻,這里我就不多做贅述了。《觀看地址》。

3.總結

  本課程我們回顧了 Kafka的相關內容,簡述了項目的基本流出以及基礎軟件的使用等知識,我們應該掌握以下知識點,如下圖所示:

4.結束語

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

  如果本教程能幫助到您,希望您能點擊進去觀看一下,謝謝您的支持!

  轉載請注明出處,謝謝合作!

   本課程的視頻教程地址:《Kafka實戰項目之應用概述

 


免責聲明!

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



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