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实战项目之应用概述》
Kafka项目实战-用户日志上报实时统计之应用概述的更多相关文章
- 五、Kafka 用户日志上报实时统计之应用概述
一.kafka 回顾 1.简介 Kafka 的业务 业务场景: 解除耦合 增加冗余 提高可扩展性 Buffering 异步通信 2.介绍 Kafka 的应用场景 Push Message Websit ...
- Kafka项目实战-用户日志上报实时统计之分析与设计
1.概述 本课程的视频教程地址:<Kafka实战项目之分析与设计> 本课程我通过一个用户实时上报日志案例作为基础,带着大家去分析Kafka这样一个项目的各个环节,从而对项目的整体设计做比 ...
- Kafka项目实战-用户日志上报实时统计之编码实践
1.概述 本课程的视频教程地址:<Kafka实战项目之编码实践> 该课程我以用户实时上报日志案例为基础,带着大家去完成各个KPI的编码工作,实现生产模块.消费模块,数据持久化,以及应用调 ...
- 六、Kafka 用户日志上报实时统计之分析与设计
一.项目整体概述 简述项目的背景 背景:用户行迹企业运营 分析项目的目的 通过对项目的分析,可以初步得到以下目的: •实时掌握用户动态 •根据实时统计结果,适度推广 •统计分析效果,快速合理的调整 二 ...
- 七、Kafka 用户日志上报实时统计之编码实践
一.数据生产实现 1.配置数据生产模块 项目基础配置所包含的内容,如下所示: •项目工程的文件配置 •集群连接信息配置 •开发演示 2.实现 Flume 到 Kafka 模块 实现 Flume 到 K ...
- Hadoop项目实战-用户行为分析之应用概述(一)
1.概述 本课程的视频教程地址:<Hadoop 回顾> 好的,下面就开始本篇教程的内容分享,本篇教程我为大家介绍我们要做一个什么样的Hadoop项目,并且对Hadoop项目的基本特点和其中 ...
- Hadoop项目实战-用户行为分析之应用概述(二)
1.概述 本课程的视频教程地址:<项目整体概述> 本节给大家分享的主题如下图所示: 下面我开始为大家分享第二节的内容——<项目整体概述>,下面开始今天的分享内容. 2.内容 从 ...
- Hadoop项目实战-用户行为分析之应用概述(三)
1.概述 本课程的视频教程地址:<项目工程准备> 本节给大家分享的主题如下图所示: 下面我开始为大家分享今天的第三节的内容——<项目工程准备>,接下来开始分享今天的内容. 2. ...
- Kafka项目实践
用户日志上报实时统计之编码实践 1.概述 本课程的视频教程地址:<Kafka实战项目之编码实践> 该课程我以用户实时上报日志案例为基础,带着大家去完成各个KPI的编码工作,实现生产模块. ...
随机推荐
- PHP多进程实例
PHP创建多进程需要使用到pcntl模块 在编译时加上--enable-pcntl打开进程控制支持,不是Unix类系统不支持此模块 php官网介绍http://php.net/manual/zh/bo ...
- python 常用标准库
标准库和第三方库第一手资料: 在线: 官方文档(https://docs.python.org/) 离线:交互式解释器(dir().help()函数),IPython(tab键提示.?.??) 一. ...
- 探索未知种族之osg类生物---呼吸分解之更新循环二
_scene->updateSceneGraph(*_updateVisitor); 我们用了前面4节才刚刚算是完成对DatabasePager::DatabaseThread::run()函数 ...
- java 组件开发中的日志记录问题
今天帮别人写封装几个url 请求,打成jar 包,可以以java接口的方式提供给外部访问. 遇到两个问题: 1. 是否把依赖的jar包也 打入 我要生成的jar包中,如果你不打入,别人直接调用接口会报 ...
- 第二阶段第二次spring会议
昨天我对39个组发表了建议以及总结了改进意见和改进方案. 今天我对便签加上了清空回收站功能 private void 清空回收站ToolStripMenuItem_Click(object sende ...
- 【转】最近用Timer踩了一个坑,分享一下避免别人继续踩
[转]最近用Timer踩了一个坑,分享一下避免别人继续踩 最近做一个小项目,项目中有一个定时服务,需要向对方定时发送数据,时间间隔是1.5s,然后就想到了用C#的Timer类,我们知道Timer 确实 ...
- (PMP)第8章-----项目质量管理
过程质量管理,成果质量的管理 戴明理论:PDCA,戴明环 朱兰理论:质量规划,质量控制,质量改进,朱兰三部曲 克鲁斯比理论:零缺陷,质量免费 石川理论:质量圈,因果图,质量管理七大工具:核对表,帕累托 ...
- J2CACHE 两级缓存框架
概述 缓存框架我们有ehcache 和 redis 分别是 本地内存缓存和 分布式缓存框架.在实际情况下如果单台机器 使用ehcache 就可以满足需求了,速度快效率高,有些数据如果需要多台机器共享这 ...
- cropper,图片剪辑上传工具的使用
cropper工具是一个功能强,兼容性好的一个图片裁剪和上传工具 GitHub地址:https://github.com/kesixin/Head_Cut_PC <div class=" ...
- $q的基本用法
angularjs的http是异步的没有同步,一般都会遇到一个场景,会把异步请求的参数作为条件执行下一个函数,之前一直在看其他人的博客理论太多看了很久才看懂 http({ method:'post', ...