初识kafka
kafka概念
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据,是用于构建实时数据管道和流应用程序。
四个术语
- Topic
Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。 - Producer
发布消息的对象称之为主题生产者(Kafka topic producer)。生产者发布消息时要选定Topic上的分区。 - Consumer
订阅消息并处理发布的消息的种子的对象称之为主题消费者(consumers)。
一般消费者模型可以分为两类:队列和发布-订阅式。
队列的处理方式就是一条消息只有一个消费者知道并处理,发布-订阅的处理方式则是消息被所有人都知道,所有人都可以来处理该消息,kafka为这两种模型提供了单一抽象模型:消费者组(cosumer group)。每个消费者都有一个组名,当所有人的组名都不一样的时候,这个时候就是发布-订阅模式,因为消息要按照消费者组为单位发出的,这意味着此时每个消费者都会收到消息并可以进行处理;当所有人的消费者组名字都一样时,意味着只会有一个消费者收到消息并可以进行处理,此时就是队列模式了。 - Broker
已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker). 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。
三个关键能力
- 发布和订阅消息流,在这方面,它类似于一个消息队列或企业消息系统
- 以容错的方式存储消息(流)
- 在消息流发生时处理他们
四个核心API
- 应用程序使用 Producer API 发布消息到1个或多个topic(主题)。
- 应用程序使用 Consumer API 来订阅一个或多个topic,并处理产生的消息
- 应用程序使用 Streams API 充当一个流处理器,从1个或多个topic消费输入流,并生产一个输出流到1个或多个输出topic,有效地将输入流转换到输出流。
- Connector API允许构建或运行可重复使用的生产者或消费者,将topic连接到现有的应用程序或数据系统。例如,一个关系数据库的连接器可捕获每一个变化。
启动zookeeper
进入zookeeper/bin目录
执行zkServer.cmd命令启动zookeeper
如果zookeeper 启动显示端口被占用:
需要修改zoo.cfg文件下
#修改为未被占用的端口
admin.serverPort=9091
在%KAFKA_HOME%\bin\windows目录下执行命令
kafka-server-start.bat ..\..\config\server.properties
// kafka
-- 创建一个主体
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafka-test-topic
-- 查看创建的主题列表
kafka-topics.bat --list --zookeeper localhost:2181
-- 启动生产者:
kafka-console-producer.bat --broker-list localhost:9092 --topic kafka-test-topic
此时可以从控制台输入信息,待消费者启动后可接收到生产者发布的消息。
-- 启动消费者:
kafka-console-consumer.bat --zookeeper localhost:2181 --topic kafka-test-topic --from-beginning
此时便能看到发布出去的消息了