1.背景
在Kafka 0.8.2之前,如果生产者想要确保消息在特定数量的副本(N)上持久化,然后broker返回"ack"确认,需要指定request.required.acks=N。然而这有点具有误导性,因为指定request.required.acks=2并不能在所有情况下真正防止数据丢失。
2.方案
在Kafka 0.8.2中,我们添加了min.isr特性,它是一种更少误导性的类似行为的实现方式 - 用户可以指定request.required.acks=-1(在写入所有ISR之后才返回ack),并且还可以指定ISR的最小大小,以保证最小数量的拷贝。删除了对request.required.acks > 1的支持,并向请求此设置的生产者返回错误消息。
3.发布
Kafka版本: 0.9.0.0
4.总结
KIP-1使得Kafka协议的消息发送更加可靠,减少了数据丢失的可能性,从而更好地适应各种使用场景。
在Kafka0.8.2之前,设置request.required.acks来确保消息在多个副本上持久化并不总是防止数据丢失。从0.8.2开始引入min.isr特性,允许用户设定ISR的最小大小,配合request.required.acks=-1,提高消息发送的可靠性。在0.9.0.0版本中,移除了对request.required.acks大于1的支持,进一步优化了这一机制。
2984

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



