消息丢失
broker
-
replication.factor
,指定topic 副本数量 > 3 -
unclean.leader.election.enable=false
,禁止ISR
中落后太多的副本成为leader
,默认为false
-
min.insync.replicas
,当生产者设置acks=all
时,必须满足此配置的写入副本数量消息才算发送成功,确保replication.factor
>min.insync.replicas
,典型的例子是replication.factor=3
,min.insync.replicas=2
1 2
#min.insync.replicas 在创建完topic后使用脚本配置 $./bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --entity-type topics --entity-name topic-name --add-config min.insync.replicas=2
producer
acks=all/-1
,min.insync.replicas
数量的副本写入成功才算成功retries
> 0,消息发送重试次数- 发送消息时要确认是否发送成功,使用带有回调的send,producer.send(msg, callback)
consumer
- 位移提交要注意,事前提交会丢失