Nag*_*Nag 6 apache-kafka confluent-platform
我正在浏览文档,查看多个地方,这增加了混乱..
关于属性 min.insync.replicas
当生产者将 acks 设置为“全部”(或“-1”)时,此配置指定必须确认写入才能将写入视为成功的最小副本数。如果无法满足此最小值,则生产者将引发异常(NotEnoughReplicas 或 NotEnoughReplicasAfterAppend)。当一起使用时,min.insync.replicas 和 acks 允许您强制执行更大的持久性保证。一个典型的场景是创建一个复制因子为 3 的主题,将 min.insync.replicas 设置为 2,并使用“all”的 acks 进行生产。如果大多数副本没有收到写入,这将确保生产者引发异常。
我提出的问题,
更新 #1 我遇到了这个短语
“当生产者指定 ack (-1 / all config) 时,它仍然会等待当时所有同步副本的 ack(独立于最小同步副本的设置)。因此,如果您在 4 个副本同步时发布那么除非所有 4 个副本都提交消息(即使最小同步副本配置为 2),否则您将不会收到确认。”
这句话是如何与今天相关的?这个属性“最小同步副本”是否仍然独立?
Chr*_*tta 18
这里有两个设置会影响生产者:
acks - 这是制作人级别的设置min.insync.replicas - 这是一个主题级别的设置该acks属性决定了您希望如何处理对 kafka 的写入:
请记住,分区中的收据在内存中,默认情况下 Kafka 不会等待 fsync 到磁盘,因此 acks=1 不是持久写入!
min.insync.replicas当主题出现问题时使用,可能其中一个分区不同步或离线。在这种情况下,集群将在min.insync.replicas满足时发送 ack 。所以3个副本,min.insync.replicas=2仍然可以写:

ACK的属性对消费者没有影响,只是数据将不会被写入到acks和min.insync.replicas满足。
如果 acks=all 和 min.insync.replicas = 1(default value :1 ) --> 与 acks = 1 一样吗?(考虑复制因子 3 ?
只有当主题有问题时。如果您有 3 个副本并且min.insync.replicas=1其中两个分区已关闭,则这与 acks=1 相同。如果主题健康,生产者将在发送 ack 之前等待所有副本。
| 归档时间: |
|
| 查看次数: |
3625 次 |
| 最近记录: |