Kafka專案實戰-使用者日誌上報實時統計之編碼實踐
1.概述
該課程我以使用者實時上報日誌案例為基礎,帶著大家去完成各個KPI的編碼工作,實現生產模組、消費模組,資料持久化,以及應用排程等工作, 通過對這一系列流程的演示,讓大家能夠去掌握Kafka專案的相關編碼以及排程流程。下面,我們首先來預覽本課程所包含的課時,他們分別有:
接下來,我們開始第一課時的學習:《資料生產實現》
2.內容
2.1 資料生產實現
本課時主要給大家演示Kafka資料生產的程式碼實現,在前面搭建好的叢集環境下,完成Kafka的資料生產功能,以及一些注意事項,為我們編寫
消費程式碼做好準備,讓大家掌握Kafka的資料生產的程式碼實現。
實踐本課時的內容,我們需要設計到兩個知識點,他們分別是:
接著,我們先從一個知識點來開始實踐,實踐資料生產模組所包含的內容,有以下幾點:
首先第一點是:對專案工程的檔案進行配置(pom) 然後是對叢集的連結資訊進行配置(這裡為什麼要將這些連結資訊配置在配置檔案當中,原因是,這些連結資訊單獨剝離到一個配置檔案,便於我們後期維護, 比如:後期新增新的節點資訊,或是移除一個已損壞的節點資訊,我們可以輕鬆,快速的在配置檔案中修改節點資訊即可,無需在去操作我們的業務程式碼。)具體演示細節請大家參考視訊操作。
在演示完資料生成模組相關內容後,下面,我帶著大家去實踐Flume到Kafka模組的相關內容,如下所示:
以上就是本課時的相關內容演示,其中包含了相關資訊的配置,資料的收集過程演示等。
2.2 資料消費實現
本課時給大家演示 Kafka 資料消費的程式碼實現,在前面我們建立的 Kafka 的專案工程的基礎上,完成消費程式碼的編寫, 以及編寫 Storm 程式碼消費 Kafka 資料的需要注意的細節,通過本課時讓大家能夠掌握資料消費的程式碼實現。
那麼,接下來我給大家列出本課時所涉及的核心知識點,如下所示:
下面,我們開始第一個核心知識點的實踐,實踐的所包含的內容如下所示:
- Storm叢集的資訊配置:這部分內容包含叢集的依賴連結資訊。
- 依賴檔案的選取:這裡我們這編寫Java程式碼實現相關功能時,需要選取依賴的JAR包來輔助我們完成編碼工作。
接下來我帶這大家看看,如何編碼實現這一部分內容,即:實現Kafka到Storm模組的 內容實現,該部分涉及的內容如下所示:
具體的演示細節,大家可以參考視訊操作,觀看地址:《資料消費實現》
2.3 資料持久化
內容涉及給大家,介紹如何將消費後的資料(即我們統計的kpi結果)持久化,在前面資料消費實現的基礎上,通過流式計算將統計的結果持久化到 Redis 叢集或是 DB 中,讓大家掌握資料持久化的程式碼實現。
那麼,接下來,我們去看看本課時所涉及的核心知識點,如下所示:
下面,我們開始第一個知識點的實踐,實現基礎層程式碼模組所包含的內容,如下所示:
- 實現思路:先實現這部分功能之前,我們要清楚它的一個實現思路,如右圖所示: 這裡,我們在Storm的計算模組中,將相應的KPI統計之後,做對應的持久化,這裡我們可以選擇 持久化到我們所選擇的DB庫當中,圖中我們持久化到Redis和MySQL當中,那麼接下來,我們按照這個思路 去實現。
- 在實現之前,首先我們需要準備好DAO層的程式碼,這層程式碼的作用是與DB互動。
- 接下來,我去給大家演示這一部分內容。
下面,我們去實現Storm統計結果儲存到DB的相關內容,還模組包含如下所示的內容:
- 實現思路:同樣,在實現這一部分功能時,我們也要清楚,在什麼地方去持久化我們統計的結果。如右圖所示: 我們在Bolt當中,當我們的KPI指標統計完成後,就可以呼叫相應的儲存程式碼去持久化這部分統計結果。
- 在清楚了思路之後,我們去實現這一部分的入庫流程。
- 下面我去給大家演示這一部分內容。
具體演示細節,大家可以參考視訊操作,觀看地址:《資料持久化》
2.4 應用排程
該部分內容將給大家介紹將開發好的應用打包部署到伺服器,通過提交 Topology 到 Storm 叢集, 完成 Storm 消費的程式的部署,讓大家掌握專案的打包部署以及排程流程。下面,我們去看看實踐本課時的內容,所涉及那些核心知識點,如下所示:
接下來,我們開始對第一個知識點的實踐。關於打包所包含的內容,如下所示:
- 首先是打包的方式流程,如下圖所示:
- 使用Maven打包,本專案工程所採取的是Maven結構,這裡我們使用Maven命令打包對應的工程。
- 下面,我去給大家演示這一部分內容
下面我們去實踐如何將我們打包好的應用部署到Storm叢集,去跑相應的任務。 實現該模組所包含的內容,如下所示:
- 實現思路。如下圖所示:這裡我們要清楚它的各個階段的職責,我們在開發階段,為了開發的便利以及除錯的方便, 我們可以使用本地提交,就像前面,我們給大家演示的,直接在IDE當中,提交相應的Topology即可。而早生產環境下, 我們需要依賴叢集,利用分散式的思想去跑我們的任務,所以,我們需要使用叢集提交,這裡在提交任務時,確保Storm 叢集是執行正常的。
- 那麼接著的內容就是去實現相應的提交流程。
- 下面,我去給大家演示這一部分內容。
具體演示細節,大家可以參考視訊操作,觀看地址:《應用排程》
3.總結
本課程我們對專案的指標進行了編碼實踐,並指導大家去編碼實現了相應的模組功能,以及幫助大家去提交我們開發的應用等知識,應該掌握一下知識: