当前位置 博文首页 > Shockang的博客:Kafka的 acks 的三种机制是什么?

    Shockang的博客:Kafka的 acks 的三种机制是什么?

    作者:[db:作者] 时间:2021-08-23 22:11

    前言

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

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

    正文

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

    acks=0

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

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

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

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

    acks=all/acks=-1

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

    acks=1

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

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

    cs