kafka项目实例


 一.Kafka概述

  Kafka是Linkedin于2010年12月份创建的开源消息系统,它主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。 这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计分析。

  传统的日志分析系统是一种离线处理日志信息的方式,但若要进行实时处理,通常会有较大延迟。而现有的消息队列系统能够很好的处理实时或者近似实时的应用,但未处理的数据通常不会写到磁盘上,这对于Hadoop之类,间隔时间较长的离线应用而言,在数据安全上会出现问题。Kafka正是为了解决以上问题而设计的,它能够很好地进行离线和在线应用。

1.1 Kfka部署结构:

 

1.2 Kafka关键字:

•Broker : Kafka消息服务器,消息中心。一个Broker可以容纳多个Topic。

•Producer :消息生产者,就是向Kafka broker发消息的客户端。

•Consumer :消息消费者,向Kafka broker取消息的客户端。

•Zookeeper :管理Producer,Broker,Consumer的动态加入与离开。

•Topic :可以为各种消息划分为多个不同的主题,Topic就是主题名称。Producer可以针对某个主题进行生产,Consumer可以针对某个主题进行订阅。

•Consumer Group: Kafka采用广播的方式进行消息分发,而Consumer集群在消费某Topic时, Zookeeper会为该集群建立Offset消费偏移量,最新Consumer加入并消费该主题时,可以从最新的Offset点开始消费。

•Partition:Kafka采用对数据文件切片(Partition)的方式可以将一个Topic可以分布存储到多个Broker上,一个Topic可以分为多个Partition。在多个Consumer并发访问一个partition会有同步锁控制。

(图2)

1.3 消息收发流程:

•启动Zookeeper及Broker.

•Producer连接Broker后,将消息发布到Broker中指定Topic上(可以指定Patition)。

•Broker集群接收到Producer发过来的消息后,将其持久化到硬盘,并将该消息保留指定时长(可配置),而不关注消息是否被消费。

•Consumer连接到Broker后,启动消息泵对Broker进行侦听,当有消息到来时,会触发消息泵循环获取消息,获取消息后Zookeeper将记录该Consumer的消息Offset。

 

1.4 Kafka特性:

•高吞吐量

•负载均衡:通过zookeeper对Producer,Broker,Consumer的动态加入与离开进行管理。

•拉取系统:由于kafka broker会持久化数据,broker没有内存压力,因此,consumer非常适合采取pull的方式消费数据

•动态扩展:当需要增加broker结点时,新增的broker会向zookeeper注册,而producer及consumer会通过zookeeper感知这些变化,并及时作出调整。

•消息删除策略:数据文件将会根据broker中的配置要求,保留一定的时间之后删除。kafka通过这种简单的手段,来释放磁盘空间。

二. Kafka启动命令:

启动Zookeeper服务:

zookeeper-server-start.bat ../../config/zookeeper.properties

启动Broker服务:

kafka-server-start.bat ../../config/server.properties

通过Zookeeper的协调在Broker中创建一个Topic(主题)

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic

查询当前Broker中某个指定主题的配置信息

kafka-run-class.bat kafka.admin.TopicCommand --describe --zookeeper localhost:2181 --topic testTopic

启动一个数据生产者Producer

kafka-console-producer.bat --broker-list localhost:9092 --topic testTopic  

启动一个数据消费者Consumer

kafka-console-consumer.bat --zookeeper localhost:2181 --topic testTopic --from-beginning

 

Zookeeper配置文件,zookeeper.properties配置片段

Broker配置文件,server.properties配置片段


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM