kafka ack机制

kafka的ack有三种:

0:

producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据;
例如:当leader挂了,producer仍然往这个leader发送消息,就会造成数据丢失

1:

producer等待broker 的ack,partition的leader落盘成功后返回ack,如果在 follower同步成功之前leader 故障,那么将会丢失数据;
例如:当leader已经将收到的数据写入磁盘然后发送ack,但是follower还没有同步消息,那么此时leader挂了的话,这些数据将会丢失。

-1:

producer等待broker的ack,partition的 leader和 follower全部落盘成功后才返回ack。但是如果在 follower同步完成后,broker发送ack 之前,leader 发生故障,那么会造成数据重复。
例如:follower刚刚同步完成,此时leader还没有发送ack,leader挂了之后,重新选出新的leader,而producer没有收到ack,于是重发消息,此时新leader又收到了相同的消息,产生数据重复的问题。

上一篇:代写编程的作业、笔试题、课程设计,包括但不限于C/C++/Python


下一篇:<转载>ant使用指南详细入门教程 http://www.jb51.net/article/67041.htm