Kafka - 无消息丢失配置

本文详细介绍Kafka在broker、consumer及provider端的配置优化策略,包括如何设置unclean.leader.election.enable、replication.factor、min.insync.replicas等参数以提升数据持久性和一致性,同时探讨enable.auto.commit、block.on.buffer.full、acks等参数对消费和生产性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

broker端配置:

unclean.leader.election.enable=false

replication.factor>=3

min.insync.replicas>1

其中 replication.factor 和 min.insync.replicas 要根据实际需要更改为确切的值。

推荐:replication.factory = min.insync.replicas + 1

unclean.leader.election.enabled:设置为false,表示关闭非ISR中的副本被选举为Leader。

replication.factor:设置保存分区信息的副本的个数。

min.insync.replicas:设置消息写入到ISR的多少个副本中,才算成功。

ISR:与Leader副本同步的副本的集合。

broker:kafka server的统称(Leader、Follower)


consumer端配置:

enable.auto.commit=false

enable.auto.commit:设置为false表示关闭自动提交。 


provider端配置:

block.on.buffer.full=true
acks=all
retries=Integer.MAX_VALUE
max.in.flight.requests.per.connection=1

以及 KafkaProducer.send() 参数使用回调接口Callback,Callback实现类对失败的处理要显式使用KafkaProducer.close(0)

block.on.buffer.full:设置为true,表示当内存缓冲区满了的时候,阻塞不再接收新的消息。在0.9版本之后,只需要设置   max.block.ms即可。

acks:设置为all,表示所有的follower做出响应,才算提交成功。

retries:重试的次数。

max.in.flight.requests.per.connection:设置为1,表示broker没做出响应之前,producer不能再发送消息给这个broker。

简单而言,就是这次连接的请求没有处理完,不能发送下一个请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值