Kafka的 acks 的三种机制是什么?

本文介绍了Kafka的acks参数对消息持久化的影响。acks=0时,追求高吞吐量但可能丢失消息;acks=1则只要leader写入成功即认为成功,仍存在丢失风险;acks=all确保所有副本都写入成功才返回,适合对数据完整性要求高的场景。理解这些设置对于优化实时数据流处理和确保数据可靠性至关重要。
摘要由CSDN通过智能技术生成

前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

acks 参数,是控制发送出去的消息的持久化机制的

acks=0

producer根本不管写入broker的消息到底成功没有,发送一条消息出去,立马就可以发送下一条消息,这是吞吐量最高的方式,

但是可能消息都丢失了,你也不知道的,但是说实话,你如果真是那种实时数据流分析的业务和场景,就是仅仅分析一些数据报表,丢几条数据影响不大的。

会让你的发送吞吐量会提升很多,你发送弄一个batch出,不需要等待人家leader写成功,直接就可以发送下一个batch了,吞吐量很大的,哪怕是偶尔丢一点点数据,

适合场景:实时报表,折线图,饼图等。

acks=all/acks=-1

这个leader写入成功以后,必须等待其他ISR中的副本都写入成功,才可以返回响应说这条消息写入成功了,此时你会收到一个回调通知

acks=1

只要leader写入成功,就认为消息成功了,默认给这个其实就比较合适的,还是可能会导致数据丢失的,

如果刚写入leader,leader就挂了,此时数据必然丢了,其他的follower没收到数据副本,变成leader

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值