Kafka 安装部署及使用

环境

Java:jdk1.8

操作系统:CentOS

ZK:3.4.10

Kafka:2.12-2.0.0

ZK 安装参考:分布式ZooKeeper-3.4.10集群安装

Kafka配置

# broker的全局唯一编号,不能重复
broker.id=0
# 监听
listeners=PLAINTEXT://:9092
# 日志目录
log.dirs=/data/kafka/logs
# 配置zookeeper的连接(如果不是本机,需要该为ip或主机名)
zookeeper.connect=172.18.20.14:2181,172.18.11.126:2181,172.18.11.128:2181

启动Zookeeper

启动Kafka

./bin/kafka-server-start.sh ./config/server.properties 1>/dev/null 2>&1 &

如果需要启动多个broker,配置文件中broker.id listeners log.dirs 必须修改。

# broker的全局唯一编号,不能重复
broker.id=1
# 监听
listeners=PLAINTEXT://:9092
# 日志目录
log.dirs=/data/kafka/logs
# 配置zookeeper的连接(如果不是本机,需要该为ip或主机名)
zookeeper.connect=172.18.20.14:2181,172.18.11.126:2181,172.18.11.128:2181

分别在172.18.20.14 ,172.18.11.126 ,172.18.11.128 启动3个broker。

创建topic(指定副本数量为3)

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic test  

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 10 --topic test1  

查看所有的topic信息

./bin/kafka-topics.sh --list --zookeeper localhost:2181

查看某个topic的详细信息

./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
[root@iZ94m4komqtZ kafka_2.12-2.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test1
Topic:test1	PartitionCount:10	ReplicationFactor:3	Configs:
	Topic: test1	Partition: 0	Leader: 0	Replicas: 0,1,2	Isr: 0,1,2
	Topic: test1	Partition: 1	Leader: 1	Replicas: 1,2,0	Isr: 1,2,0
	Topic: test1	Partition: 2	Leader: 2	Replicas: 2,0,1	Isr: 2,0,1
	Topic: test1	Partition: 3	Leader: 0	Replicas: 0,2,1	Isr: 0,2,1
	Topic: test1	Partition: 4	Leader: 1	Replicas: 1,0,2	Isr: 1,0,2
	Topic: test1	Partition: 5	Leader: 2	Replicas: 2,1,0	Isr: 2,1,0
	Topic: test1	Partition: 6	Leader: 0	Replicas: 0,1,2	Isr: 0,1,2
	Topic: test1	Partition: 7	Leader: 1	Replicas: 1,2,0	Isr: 1,2,0
	Topic: test1	Partition: 8	Leader: 2	Replicas: 2,0,1	Isr: 2,0,1
	Topic: test1	Partition: 9	Leader: 0	Replicas: 0,2,1	Isr: 0,2,1
  • “leader”:该节点负责该分区的所有的读和写,每个节点的leader都是随机选择的。
  • “replicas”:备份的节点列表,无论该节点是否是leader或者目前是否还活着,只是显示。
  • “isr”:“同步备份”的节点列表,也就是活着的节点并且正在同步leader

其中ReplicasIsr中的1,2,0就对应着3个broker他们的broker.id属性。

Topic信息修改

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --config max.message.bytes=128000
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --delete-config max.message.bytes
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --partitions 10 
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --partitions 3 ## Kafka分区数量只允许增加,不允许减少

启动生产者

./bin/kafka-console-producer.sh --broker-list 172.18.20.14:9092,172.18.11.126:9092,172.18.11.128:9092 --topic test

启动消费者

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test

启动消费组

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1 --group testg

查看消费组名称信息

#查看group 列表
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

#看指定group
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group new-consumer-test
TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                          HOST            CLIENT-ID
test1           3          1               1               0               new-consumer-cl-80a33e58-df25-4bce-ae93-bf37ecd6555b /172.18.11.126  new-consumer-cl
test1           0          0               0               0               new-consumer-cl-80a33e58-df25-4bce-ae93-bf37ecd6555b /172.18.11.126  new-consumer-cl
test1           4          1               1               0               new-consumer-cl-80a33e58-df25-4bce-ae93-bf37ecd6555b /172.18.11.126  new-consumer-cl
test1           1          1               1               0               new-consumer-cl-80a33e58-df25-4bce-ae93-bf37ecd6555b /172.18.11.126  new-consumer-cl
test1           2          1               1               0               new-consumer-cl-80a33e58-df25-4bce-ae93-bf37ecd6555b /172.18.11.126  new-consumer-cl
test1           7          1               1               0               new-consumer-cl-bc9a3300-8682-42c4-8e64-fb06d2981d43 /172.18.11.128  new-consumer-cl
test1           8          1               1               0               new-consumer-cl-bc9a3300-8682-42c4-8e64-fb06d2981d43 /172.18.11.128  new-consumer-cl
test1           9          1               1               0               new-consumer-cl-bc9a3300-8682-42c4-8e64-fb06d2981d43 /172.18.11.128  new-consumer-cl
test1           6          0               0               0               new-consumer-cl-bc9a3300-8682-42c4-8e64-fb06d2981d43 /172.18.11.128  new-consumer-cl
test1           5          1               1               0               new-consumer-cl-bc9a3300-8682-42c4-8e64-fb06d2981d43 /172.18.11.128  new-consumer-cl

#查看分组成员
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group new-consumer-test  --members

topic到group质检是发布订阅的通信方式,即一条topic会被所有的group消费,属于一对多模式;group到consumer是点对点通信方式,属于一对一模式。

不使用group的话,启动10个consumer消费一个topic,这10个consumer都能得到topic的所有数据,相当于这个topic中的任一条消息被消费10次。

使用group的话,连接时带上groupid,topic的消息会分发到10个consumer上,每条消息只被消费1次。

容错测试

kill其中一个broker,消息队列仍然正常。

你可能感兴趣的:(消息队列)