KAFKA:消费者可以在所有复制品同步之前阅读消息



我正在设计一个事件驱动的分布式系统。

我们需要分发需求的事件之一1-低潜伏期2-高可用性

消息的持久性和副本之间的一致性对于此事件类型并不重要。

阅读Kafka文档似乎需要等待,直到分区的所有同步副本都将消息应用于其日志中,然后消费者可以从任何副本中读取

我的理解正确吗?如果是这样,是否有办法

如果不正确地配置;消费者可以读取尚未写入复制的数据。

根据这本书,

数据仅在将其授予Kafka之后才能使用,这意味着将其写入所有同步。

如果您已经配置了 min.insync.replicas = 1 ,那么只有Kafka将不会等待复制品赶上并将数据提供给消费者。

推荐的Min.insync.replicas的配置取决于应用程序的类型。如果您不关心数据,则可以是1,如果它是关键信息,则应将其配置为>1。

您应该考虑两件事:

  1. 如果制片人不向卡夫卡发送消息,还可以吗?(FIRE&忘记ACK = 0的策略)
  2. 如果消费者没有阅读消息,还可以吗?(如果min.insync.replica = 1,则如果经纪人降低,则可能会丢失一些数据)

最新更新