Kafka是由Apache软件基金会开发的一个开源流处理平台,是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
特性:
(1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
(3)支持通过Kafka服务器和消费机集群来分区消息。
(4)支持Hadoop并行数据加载。
相关术语:
(1)Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker。
(2)Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
(3)Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
(4)Producer
负责发布消息到Kafka broker
(5)Consumer
消息消费者,向Kafka broker读取消息的客户端。
(6)Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
官网:http://kafka.apache.org/
中文文档:http://kafka.apachecn.org/
一、下载
下载地址:http://kafka.apache.org/quickstart
点击Download打开https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.12-2.3.0.tgz
再点击http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz下载
下载后解压,本人解压在D:\ProgramFiles\Java\kafka_2.12-2.3.0
备注:最新版的Kafka已经内置zookeeper,不需要另外下载zookeeper。
二、启动服务器
Kafka 使用 ZooKeeper,需要先启动一个ZooKeeper服务器。 可以通过与kafka打包在一起的便捷脚本来快速简单地创建一个单节点ZooKeeper实例。
打开命令行窗口,cd进入解压目录,执行命令
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
执行成功会占用2182端口,命令行窗口不关闭。
启动Kafka服务器
打开命令行窗口,cd进入解压目录,执行命令
bin\windows\kafka-server-start.bat config\server.properties
执行成功会占用9092端口,命令行窗口也不关闭。
三、创建一个 topic
打开命令行窗口,cd进入解压目录,执行下面命令,创建一个名为“test”的topic,它有一个分区和一个副本:
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
可以运行list(列表)命令来查看这个topic:
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
备注:如果要删除服务器上的Topic,可执行下面命令
bin\windows\kafka-topics.bat --delete --zookeeper localhost:2181 --topic test
这个命令只是将Topic标记为删除,如果想真正删除,需要修改config/server.properties文件,加入下面配置
delete.topic.enable=true
四、启动生产者
Kafka自带一个命令行客户端,它从文件或标准输入中获取输入,并将其作为message(消息)发送到Kafka集群。默认情况下,每行将作为单独的message发送。
打开命令行窗口,cd进入解压目录,执行下面命令,运行 producer,然后在控制台输入一些消息以发送到服务器。
bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
五、启动消费者
打开命令行窗口,cd进入解压目录,执行下面命令,
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
会收到生产者发送的消息,在生产者命令行窗口继续输入消息,这里会收到消息。