1. ISR副本数量设置
指的是存活的副本数量
ISR 机制的另外一个相关参数是 min.insync.replicas
, 可以在 broker 或者主题级别进行配置,代表 ISR 列表中至少要有几个可用副本。这里假设设置为 2,那么当可用副本数量小于该值时,就认为整个分区处于不可用状态。此时客户端再向分区写入数据时候就会抛出异常。
java
org.apache.kafka.common.errors.NotEnoughReplicasExceptoin: Messages are rejected since there are fewer in-sync replicas than required。
2. 总副本数量设置
指的是一个分区的总的副本数量
2.1 新建主题时指定
Kafka 的主题被分为多个分区 ,分区是 Kafka 最基本的存储单位。每个分区可以有多个副本 (可以在创建主题时使用 replication-factor
参数进行指定)。其中一个副本是首领副本 (Leader replica),所有的事件都直接发送给首领副本;其他副本是跟随者副本 (Follower replica),需要通过复制来保持与首领副本数据一致,当首领副本不可用时,其中一个跟随者副本将成为新首领。
创建副本为2的topic
bash
kafka-topics --zookeeper mdw:2181/kafka --create --replication-factor 2 --partitions 3 --topic test_topic
查看topic信息
bash
kafka-topics --describe --zookeeper mdw:2181/kafka --topic test_topic
输出:
Topic:test_topic PartitionCount:3 ReplicationFactor:2 Configs:
Topic: test_topic Partition: 0 Leader: 364 Replicas: 364 Isr: 364
Topic: test_topic Partition: 1 Leader: 365 Replicas: 365 Isr: 365
Topic: test_topic Partition: 2 Leader: 366 Replicas: 366 Isr: 366
2.2 通过配置文件配置
server.properties
bash
offsets.topic.replication.factor=2