Kafka 的 常用命令
摘要
-
本文介绍 Kafka 的 常用命令
-
本文使用的 Kafka 版本为 3.9.1。Kafka 团队宣布 3.9 会是 最后一个还带有被弃用的 ZooKeeper 模式 的主要版本。以后版本(如 4.0)将完全弃用 ZooKeeper。
topic
1 | # 创建 topic |
consumer
1 | # 创建 consumer |
consumer-group
1 | # 列出 consumer 组 |
producer
1 | # 创建 producer |
手动触发 Kafka Partitoin 的 Leader 选举(自平衡)
-
kafka的自平衡默认开启,每隔 300秒扫描一次,如果需要平衡的比例高于 10%,则会触发一次
1 | # 开启自动平衡 |
-
建议关闭,改为业务低峰时手动触发
1 | # 自动平衡 |
-
🧩 参数说明:–election-type
参数值 | 含义 | 触发条件 | 典型使用场景 |
---|---|---|---|
preferred |
首选 Leader 选举(Preferred Leader Election) Kafka 会尝试将分区的 leader 重新切换为「首选副本」(通常是第一个副本)。 |
只有当前 leader 不是 首选副本时才执行。 | 某些副本被自动选举成 leader 后,希望恢复原有「首选 leader」结构,以实现负载均衡。 |
unclean |
非干净 Leader 选举(Unclean Leader Election) 允许从不同步的副本中选举新的 leader。 |
仅在分区 没有可用 leader 时执行。 | 在紧急恢复场景下(比如所有 ISR 副本都下线),为了恢复服务可用性,即使会导致数据丢失。 |
-
Leader Partition⾃动平衡机制
- Leader Partitoin选举机制能够保证每⼀个Partition同⼀时刻有且仅有⼀个Leader Partition。但是,是不是只要分配好了Leader Partition就够了呢?
- 在⼀组Partiton中,Leader Partition通常是⽐较繁忙的节点,因为他要负责与客户端的数据交互,以及向Follower同步数据。默认情况下,Kafka会尽量将Leader Partition分配到不同的Broker节点上,⽤以保证整个集群的性能压⼒能够⽐较平均。
- 但是,经过Leader Partition选举后,这种平衡就有可能会被打破,让Leader Partition过多的集中到同⼀个Broker上。这样,这个Broker的压⼒就会明显⾼于其他Broker,从⽽影响到集群的整体性能。
- 为此,Kafka设计了Leader Partition⾃动平衡机制,当发现Leader分配不均衡时,⾃动进⾏Leader Partition调整。
- Kafka在进⾏Leader Partition⾃平衡时的逻辑是这样的:他会认为AR(Replicas副本集)当中的第⼀个节点就应该是Leader节点。这种选举结果成为preferred election 理想选举结果。
- Controller会定期检测集群的Partition平衡情况,在开始检测时,Controller会依次检查所有的Broker。当发现这个Broker上的不平衡的Partition⽐例⾼于
leader.imbalance.per.broker.percentage
阈值时,就会触发⼀次Leader Partiton的⾃平衡。