提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- Kafka集群操作
- 1.搭建kafka集群(三个broker)
- 2.副本的概念---replication
- 集群消费
- 分区分消费组的集群消费中的细节
- ⼀个partition只能被⼀个消费组中的⼀个消费者消费,⽬的是为了保证消费的顺序性
Kafka集群操作
1.搭建kafka集群(三个broker)
- 创建三个server.properties⽂件
# 0 1 2
broker.id=2
// 9092 9093 9094
listeners=PLAINTEXT://192.168.65.60:9094
//kafka-logs kafka-logs-1 kafka-logs-2
log.dir=/usr/local/data/kafka-logs-2
- 通过命令来启动三台broker
./kafka-server-start.sh -daemon ../config/server.properties
./kafka-server-start.sh -daemon ../config/server1.properties
./kafka-server-start.sh -daemon ../config/server2.properties
- 校验是否启动成功
进入到zk中查看/brokers/ids中过是否有三个znode(0,1,2)
2.副本的概念—replication
- 副本是为了为主题中的分区创建多个备份,多个副本在kafka集群的多个broker中,会有⼀个
副本作为leader,其他是follower。
./kafka-topics.sh --create --zookeeper 172.16.253.35:2181 --replicationfactor
3 --partitions 2 --topic my-replicated-topic
- 查看topic情况:
# 查看topic情况
./kafka-topics.sh --describe --zookeeper 172.16.253.35:2181 --topic myreplicated-
topic
leader:
- kafka的写和读的操作,都发⽣在leader上。leader负责把数据同步给follower。当leader挂
了,经过主从选举,从多个follower中选举产⽣⼀个新的leader
follower
- 接收leader的同步的数据
isr:
- 可以同步和已同步的节点会被存⼊到isr集合中。这⾥有⼀个细节:如果isr中的节点性能 较差,会被提出isr集合。
集群中有多个broker,创建主题时可以指明主题有多个分区(把消息拆分到不同的分区中存
储),可以为分区创建多个副本,不同的副本存放在不同的broker⾥。
集群消费
1)向集群发送消息:
./kafka-console-consumer.sh --bootstrap-server
172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --frombeginning
--consumer-property group.id=testGroup1 --topic my-replicatedtopic
2)从集群中消费消息
./kafka-console-producer.sh --broker-list
172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --topic myreplicated-
topic
3)指定消费组来消费消息
./kafka-console-consumer.sh --bootstrap-server
172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --frombeginning
--consumer-property group.id=testGroup1 --topic my-replicatedtopic
分区分消费组的集群消费中的细节
⼀个partition只能被⼀个消费组中的⼀个消费者消费,⽬的是为了保证消费的顺序性
- ⼀个partition只能被⼀个消费组中的⼀个消费者消费,⽬的是为了保证消费的顺序性,但是多个partion的多个消费者消费的总的顺序性是得不到保证的,那怎么做到消费的总顺序性呢?
- partition的数量决定了消费组中消费者的数量,建议同.个消费组中消费者的数量不要超过partition的数量,否则多的消费者消费不到消息
- 如果消费者挂了,那么会触发rebalance机制(后⾯介绍),会让其他消费者来消费该分区