“Kafka 集群操作”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第38行: | 第38行: | ||
=== 2.副本的概念 === | === 2.副本的概念 === | ||
在创建主题时,除了指明主题的分区数以外,还指明了副本数,那么副本是一个什么概念呢? | 在创建主题时,除了指明主题的分区数以外,还指明了副本数,那么副本是一个什么概念呢? | ||
+ | |||
+ | 副本是为了给主题中的分区创建多个备份,多个副本在 kafka 集群的多个 broker 中,会有一个副本作为 leader,其他是 follower。 | ||
[[文件:副本的概念.png|无|缩略图|1400x1400像素]] | [[文件:副本的概念.png|无|缩略图|1400x1400像素]] | ||
+ | |||
+ | * leader | ||
+ | |||
+ | Kafka 的写和读的操作,都发生在 leader 上。leader 负责把数据同步给 follower。当 leader 挂了,经过主从选举,从多个 follower 中选举产生一个新的 leader | ||
+ | |||
+ | * follower | ||
+ | |||
+ | 接收 leader 同步的数据 | ||
+ | |||
+ | * isr | ||
+ | |||
+ | 可以同步和已同步的节点会被存入到 isr 集合中。这里有一个细节:如果 isr 中的节点性能较差,会被踢出 isr 集合。 |
2022年8月24日 (三) 20:21的版本
1.搭建 Kafka 集群(三个 broker)
- 准备3个 server.properties 文件
[root@localhost ~]# cd /usr/local/kafka/kafka_2.11-2.4.0/config/ [root@localhost config]# cp server.properties server1.properties [root@localhost config]# cp server.properties server2.properties
- server.properties
broker.id=0 listeners=PLAINTEXT://192.168.137.200:9092 log.dirs=/usr/local/kafka/data/kafka-logs
- server1.properties
broker.id=1 listeners=PLAINTEXT://192.168.137.200:9093 log.dirs=/usr/local/kafka/data/kafka-logs-1
- server2.properties
broker.id=2 listeners=PLAINTEXT://192.168.137.200:9094 log.dirs=/usr/local/kafka/data/kafka-logs-2
- 启动
[root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server.properties [root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server1.properties [root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server2.properties
- 搭建完成后通过查看 zk 中的 /brokers/ids 是否启动成功
root@4ac6bd5bc9f6:/apache-zookeeper-3.8.0-bin/bin# ./zkCli.sh [zk: localhost:2181(CONNECTED) 0] ls /brokers/ids [0, 1, 2]
2.副本的概念
在创建主题时,除了指明主题的分区数以外,还指明了副本数,那么副本是一个什么概念呢?
副本是为了给主题中的分区创建多个备份,多个副本在 kafka 集群的多个 broker 中,会有一个副本作为 leader,其他是 follower。
- leader
Kafka 的写和读的操作,都发生在 leader 上。leader 负责把数据同步给 follower。当 leader 挂了,经过主从选举,从多个 follower 中选举产生一个新的 leader
- follower
接收 leader 同步的数据
- isr
可以同步和已同步的节点会被存入到 isr 集合中。这里有一个细节:如果 isr 中的节点性能较差,会被踢出 isr 集合。