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协议的消息发送更加可靠,减少了数据丢失的可能性,从而更好地适应各种使用场景。
网友评论