首页 > 解决方案 > Kafka如何实现强一致性?

问题描述

尝试理解 Kafka 中的一致性维护。请找到场景并帮助理解。

 Number of partition  = 2 
    Replication factor = 3 
    Number of broker in the cluster = 4 

在这种情况下,为了实现强一致性,应该确认多少节点。ack = all或或任何ack = 3 其他值。请确认相同。

标签: apache-kafkareplication-factor

解决方案


您可能有兴趣查看卡夫卡峰会的当它绝对、肯定、必须在那里的演讲。

这是 Cloudera 的一位工程师给出的,Cloudera 有自己的关于 Kafka 可用性的文档

总而言之,多于 1 个副本和多于 1 个同步副本是一个好的开始。然后在生产者上,如果您可以牺牲吞吐量来获得数据可用性,这意味着您必须在继续之前写入所有副本,那么acks=all. 否则,如果您相信领导者代理具有高可用性,但领导者选举是错误的,那么acks=1在大多数情况下应该没问题。

acks=3顺便说一句,这不是一个有效的配置。我认为您正在寻找复制因子为min.insync.replicas=2; 从上面的链接acks=all3

如果min.insync.replicas设置为2acks设置为all,则每条消息必须成功写入至少两个副本。这保证了消息不会丢失,除非两个主机都崩溃

此外,您可以启用事务型生产者,从 Kafka 0.11 开始,可以只进行一次处理

enable.idempotence=true

推荐阅读