
在同步发消息的场景下:生产者发动broker上后,ack会有 3 种不同的选择:
- ( 1 )acks=0: 表示producer不需要等待任何broker确认收到消息的回复,就可以继续发送下一条消息。性能最高,但是最容易丢消息。
- ( 2 )acks=1: 至少要等待leader已经成功将数据写入本地log,但是不需要等待所有follower是否成功写入。就可以继续发送下一条消息。这种情况下,如果follower没有成功备份数据,而此时leader又挂掉,则消息会丢失。
- ( 3 )acks=-1或all: 需要等待 min.insync.replicas(默认为 1 ,推荐配置大于等于2) 这个参数配置的副本个数都成功写入日志,这种策略会保证只要有一个备份存活就不会丢失数据。这是最强的数据保证。一般除非是金融级别,或跟钱打交道的场景才会使用这种配置。
code:
props.put(ProducerConfig.ACKS_CONFIG, "1");

在Kafka中,生产者发送消息到broker时有三种acks设置:0(无需确认,可能丢消息),1(仅leader确认,可能存在数据丢失),-1或all(所有副本确认,确保高可用性)。选择acks=1是平衡性能和数据安全的常见做法,而acks=-1则是最严格的数据保障,通常用于金融等对数据完整性要求极高的场景。
722

被折叠的 条评论
为什么被折叠?



