天天看点

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  本课程是通过一个用户实时上报日志来展开的,通过介绍 kafka 的业务和应用场景,并带着大家搭建本 kafka 项目的实战开发环境。下面我们来看看本课程有哪些课时,如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  本课时简述 kafka 平台部署的注意事项,以及 kafka 在企业中的业务场景和应用场景。让大家了解 kafka 在企业中的使用。

  本课时主要包含以下知识点,如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  首先,我们来看看kafka的业务场景,其内容包含以下知识点,如下图所示: 

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

第一:解除耦合

  在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

第二:增加冗余

  有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了

数据丢失风险。许多消息队列所采用的put-get-delete范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完

毕,从而确保你的数据被安全的保存直到你使用完毕。

第三:提高可扩展性

  因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。

第四:buffering

  在任何重要的系统中,都会有需要不同的处理时间的元素。例如,加载一张图片比应用过滤器花费更少的时间。消息队列通过一个缓冲层来帮助任务最高效率的执行———写入队列的处理会尽可能的快速。该缓冲有助于控制和优化数据流经过系统的速度。

第五:异步通信

  很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

  以上就是kafka的业务场景介绍,下面我给大家介绍kafka的应用场景。

  应用场景的主要内容如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

首先是:push message

  kafka可以应用与消息系统,比如:当下较为热门的消息推送,这些消息推送系统的消息源,可以使用kafka作为系统的核心中间件来完成消息的生产和消息的消费。

然后是:website tracking

  我们可以将企业的portal,用户的操作记录等信息发送到kafka中,按照实际业务需求,可以进行实时监控,或者离线处理等。

最后一个是:日志收集中心

  类似于flume套件这样的日志收集系统,但kafka的设计架构采用push/pull.适合异构集群,kafka可以批量提交消息,对

producer来说,在性能方面基本上是无消耗的,而在consumer端中,我们可以使用hadoop,storm等其他系统化的存储和分析系统。

  我们在掌握了kafka的业务和应用场景后,下面我们来看看实时统计平台搭建需要注意的事项:如下图所示,这是kafka集群的搭建的架构图。

分别由三个kafka节点组成一哥高可用的集群,由zookeeper集群连接,提供一个快速,高可用,容错,分布式的协调服务。

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  平台注意事项包含以下知识点:

kafka的ha特性

平台核心文件的配置

集群启动步骤

集群演示

  本课时讲解如何规划一个项目的整体流程,以及如何获取一个项目所需要的数据来源和如何去消费这些数据。

让大家从中掌握项目的开发流程,为后续的项目分析与设计阶段做好准备。

  其主要知识点包含以下内容,如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  接下来,我们从项目的整体流程入手去简述,如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  这是一个项目的整体流程,本项目是以一个用户日志上报系统为案例,从流程可以看出,我们将该项目的流程分为四个模块:数据收集,数据接入,实时流式计算,数据输出。

  使用这套方案的优点有以下:

业务模块化

功能组件化

  我们认为,kafka在整个环节中充当的职责应该单一,这项目的整个环节她就是一个中间件。整个项目流程如上图所示,这样划分使得各个业务模块化,功能更加的清晰明了。

首先是数据收集模块:我们采用的是apache的flume ng来实现的,主要负责从各个节点上实时收集用户上报的日志数据。

接着是数据接入模块:由于收集的数据的速度和数据处理的速度不一定是一致的,因此,这里我们添加一个中间件来做处理,所使用的是apache的kafka,另外,这里有一部分数据是流向hdfs分布式文件系统的,方便于为离线统计业务提供数据源。

在我们完成流式计算模块后,最后是数据输出模块:在使用storm对数据做处理后,我们需要将处理的结果做持久化,由于对响应速度要求较高,这里采用redis和mysql来做持久化。

  这就算整个流程的架构图。在介绍完整个架构的流程图,接下来,我们来看看数据源生产介绍,如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  从图中,我们可以看出由flume

ng组建的日志收集集群,将日志集中收集起来,然后通过flume的sink组件将数据发送到指定的kafka中间件中,这样在kafka的

producer端,就有了数据源。从flume到kafka,通过sink来完成数据源的生产阶段。

  在完成了数据源的生产后,下面我们来看看如何去消费这些数据。关于数据源的消费,我们来看看下面这张图:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  从上图中,我们可以看出数据源存在kafka中,通过kafkaspout将数据输送到storm,然后storm将kafka中的数据进行消费处理,通过storm的计算模块,按照业务需求将数据做对应的处理,完成数据的消费,最后将统计的结果持久化到db库当中。

  本课时讲解创建一个本项目的工程,以及编写本项目需要准备的基础环境,包含 kafka 的监控系统,storm 群的准备。为完成编码实践奠定良好的基础。

  其主要知识点包含以下内容,如下所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  下面,我们来看看,基础环境需要准备有哪些内容。内容如下所示:

概述。

基础软件介绍。

使用技巧。

预览及演示。

  在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工程。下面为大家演示具体的操作流程。

  本课程我们回顾了 kafka的相关内容,简述了项目的基本流出以及基础软件的使用等知识,我们应该掌握以下知识点,如下图所示:

Kafka项目实战-用户日志上报实时统计之应用概述1.概述2.内容3.总结4.结束语

  这就是本课程的主要内容,主要就对 kafka 项目做前期准备,对后续学习 kafka 项目实战内容奠定良好的基础。

  如果本教程能帮助到您,希望您能点击进去观看一下,谢谢您的支持!