Kafka项目实践
用户日志上报实时统计之编码实践
1.概述
本课程的视频教程地址:《Kafka实战项目之编码实践》
该课程我以用户实时上报日志案例为基础,带着大家去完成各个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.总结
本课程我们对项目的指标进行了编码实践,并指导大家去编码实现了相应的模块功能,以及帮助大家去提交我们开发的应用等知识,应该掌握一下知识:
4.结束语
我们在有了这些知识作为基础会使得我们在今后的工作当中,开发类似实时统计项目变得游刃有余,更加的得心应手。
如果本教程能帮助到您,希望您能点击进去观看一下,谢谢您的支持!
转载请注明出处,谢谢合作!
本课程的视频教程地址:《Kafka实战项目之编码实践》
邮箱:smartdengjie@gmail.com
Kafka项目实践的更多相关文章
- Kafka项目实战-用户日志上报实时统计之编码实践
1.概述 本课程的视频教程地址:<Kafka实战项目之编码实践> 该课程我以用户实时上报日志案例为基础,带着大家去完成各个KPI的编码工作,实现生产模块.消费模块,数据持久化,以及应用调 ...
- Kafka项目实战-用户日志上报实时统计之应用概述
1.概述 本课程的视频教程地址:<Kafka实战项目之应用概述> 本课程是通过一个用户实时上报日志来展开的,通过介绍 Kafka 的业务和应用场景,并带着大家搭建本 Kafka 项目的实战 ...
- Kafka应用实践与生态集成
1.前言 Apache Kafka发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得Apa ...
- Hangfire项目实践分享
Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...
- Windows on Device 项目实践 3 - 火焰报警器制作
在前两篇<Windows on Device 项目实践 1 - PWM调光灯制作>和<Windows on Device 项目实践 2 - 感光灯制作>中,我们学习了如何利用I ...
- Windows on Device 项目实践 2 - 感光灯制作
在上一篇<Windows on Device 项目实践 1 - PWM调光灯制作>中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成一个 ...
- Windows on Device 项目实践 1 - PWM调光灯制作
在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...
- Hangfire项目实践
Hangfire项目实践分享 Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget ...
- MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构
在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...
随机推荐
- 全栈project师的毁与誉
全栈(Full Stack)project师.也能够叫全端project师,不管是前端知识,还是后端架构你都要了解.甚至有些调皮的程序猿这样理解全栈project师:全栈project师 = 屌丝战斗 ...
- HttpURLConnection请求数据流的写入(write)和读取(read)
URLConnection类给应用 程序 和web资源之间架设起了通信的桥梁,这些web资源通常是通过url来标记的,本文将讲述如何使用HttpURLConnection来访问web页面(发送数据流) ...
- Python学习入门基础教程(learning Python)--3.2 if-else分支语句
if-else分支语句结构的特点是当conditon条件满足时,执行if下的语句块,当condition条件不满足时执行else下的语句块,也就是说根据条件来控制让某些语句执行,某些语句不被执行. i ...
- ZOJ 2110 Tempter of the Bone(条件迷宫DFS,HDU1010)
题意 一仅仅狗要逃离迷宫 能够往上下左右4个方向走 每走一步耗时1s 每一个格子仅仅能走一次且迷宫的门仅仅在t时刻打开一次 问狗是否有可能逃离这个迷宫 直接DFS 直道找到满足条件的路径 ...
- poj1182食物链(种类并查集)
http://poj.org/problem?id=1182 r[x] = 0 表示x和父亲是同类r[x] = 1 表示x吃父亲r[x] = 2 表示x被父亲吃因为只存在三种动物,且三种动物构成了环形 ...
- MySQL 存储过程和函数(转)
概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...
- 记View跨界平局
<?xml version="1.0" encoding="utf-8"? > <RelativeLayout xmlns:android=& ...
- 关于VCL的编写 (一) 如何编写自己的VCL控件
如何编写自己的VCL控件 用过Delphi的朋友们,大概对Delphi的最喜欢Delphi的不是他的强类型的pascal语法,而是强大的VCL控件,本人就是一位VCL控件的爱好者. VCL控件的开源, ...
- uva 10817 Headmaster's Headache 出发dp 位计算
出发dp,用在一些议题的操作非常~ 给出s个课程.m个教师.n个求职者,教师必须招聘.然后招聘一些求职者,使得每一门课都至少有两个老师能教.问题就转换成了招聘哪些求职者使得花费最少.由于s范围小于8 ...
- MongoDB学习笔记-基础概念
mongodb中基本的概念 文档.集合.数据库 与关系数据库的概念对比更容易理解