【kafka】kafka 命令总结

(本章 kafka 均 基于 kafka_2.11-2.1.0 windows 版本)参考 官方文档

配置单集群


  • 启动 zookeeper,默认端口 2181

可以使用与kafka 一起打包的脚本来运行 zookeeper 实例。

bin\windows\zookeeper-server-start.bat config\zookeeper.properties
  • 启动 kafka
bin\windows\kafka-server-start.bat config\server.properties
  • kafka topic 命令:
kafka-topics.bat  

【kafka】kafka 命令总结_第1张图片

【kafka】kafka 命令总结_第2张图片

【kafka】kafka 命令总结_第3张图片

 **   --zookeeper 为必须指定的 option

查看 kafka 下 topic 列表

bin\windows\kafka-topics.bat --list --zookeeper localhost:2181

创建 topic: 因为为单集群复制因子为 1 ,分区数为 1 ,名称为 20190131,若复制因子大于实际集群数会报错

 bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic 20190131

查看 topic 描述信息:

bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic 20190131
  • kafka producer 命令
kafka-console-producer.bat 

【kafka】kafka 命令总结_第4张图片

【kafka】kafka 命令总结_第5张图片

**  --broker-list   --topic 均为 必须的 option

发送消息:向 localhost:9092 服务器上的 20190131 topic 上发送消息

bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic 20190131
  • kafka consumer 命令:

【kafka】kafka 命令总结_第6张图片

【kafka】kafka 命令总结_第7张图片

【kafka】kafka 命令总结_第8张图片

** --bootstrap-server 为必须的 option

消费消息:消费 localhost:9092 服务器上 20190131 topic 上的消息

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic 20190131 --from-beginning

指定消费组消费:

相同的消费组,因为目前只有一个分区,所以只有一个消费者能消费到消息

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-replication --from-beginning --group group1

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-replication --from-beginning --group group1

不同的消费组,都可以消费到消息:

​
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-replication --from-beginning --group group2

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-replication --from-beginning --group group3

多个分区的topic

创建具有 2个副本,2个分区的 topic multi-partition

bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --topic multi-partition --partitions 2 --replication-factor 2

查看描述:

bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic multi-partition

输出:

Topic:multi-partition   PartitionCount:2        ReplicationFactor:2     Configs:
        Topic: multi-partition  Partition: 0    Leader: 2       Replicas: 2,0   Isr: 2,0
        Topic: multi-partition  Partition: 1    Leader: 0       Replicas: 0,2   Isr: 0,2

指定分区、消费者组消费

发布消息:比如分别发布 1, 2, 3, 4

bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic multi-partition

同一个消费者组的两个消费者:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-partition --from-beginning --group test1

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-partition --from-beginning --group test1

或者 指定了分区:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-partition --from-beginning --group test1 --partition 0


bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-partition --from-beginning --group test1 --partition 1

这两个消费者会反别消费到 1, 3  和 2, 4 。

 

配置多集群


这里使用不同端口来模拟集群。复制 config 文件夹下的 server.properties 文件,修改其中的配置项:

broker.id:集群唯一标识

listeners:套接字服务器监听的地址,格式: listener_name://host_name:port,如 PLAINTEXT://9093

log.dirs:日志保存的地址

启动 kafka 集群1:

bin\windows\kafka-server-start.bat config\server-1.properties

启动 kafka 集群2:

bin\windows\kafka-server-start.bat config\server-2.properties

此时,创建创建一个 复制因子为3 的 topic

bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic multi-replication

查看 multi-replication 的详细配置信息:

bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic multi-replication

输出结果:第一行是所有分区的总结,下面的每一行代表一个分区。

Topic:multi-replication PartitionCount:1        ReplicationFactor:3     Configs:
        Topic: multi-replication        Partition: 0    Leader: 1       Replicas: 1,0,2 Isr: 1,0,2

* leader:负责分区的所有读写操作。随机选举产生。

* replicas:分区的所有副本,不管它是 leader ,也不管它是不是存活,都包括在内。

* isr:同步中的副本的集合(in sync replicas),所有副本中存活的,且与 leader 有通信的。

测试容错


首先杀掉 leader 的进程,由于 leader 是 1,1对应的端口号是 9093 ,查找 PID 并删除

netstat -ano|findstr "9093"

taskkill -PID 19328 -F

或者通过以下命令查找 PID:

wmic process where "caption = 'java.exe' and commandline like '%server-1.properties%'" get processid

查看对应 topic 的描述信息:

bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic multi-replication

输出:

Topic:multi-replication PartitionCount:1        ReplicationFactor:3     Configs:
        Topic: multi-replication        Partition: 0    Leader: 0       Replicas: 1,0,2 Isr: 0,2

可以看出,leader 已经重新选举为 0,Isr 也已经去除了 1.

消息也没有丢失:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic multi-replication --from-beginning

 

你可能感兴趣的:(消息中间件)