我正在设计一个事件驱动的分布式系统。
我们需要分发需求的事件之一 1-低延迟 2-高可用性
对于这种事件类型,消息的持久性和副本之间的一致性并不重要。
在阅读Kafka documentation时,似乎消费者需要等到分区的所有同步副本将消息应用于日志后,消费者才能从任何副本读取消息。
我的理解正确吗?如果可以的话,有办法解决
答案 0 :(得分:1)
如果配置不正确;使用者可以读取尚未写入副本的数据。
根据book,
仅在将数据提交给Kafka后,消费者才能使用它,这意味着已将其写入所有同步文件中。
如果您已配置 min.insync.replicas = 1 ,则只有Kafka不会等待副本追赶并将数据提供给消费者。
最小同步副本的推荐配置取决于应用程序的类型。如果您不关心数据,则可以为1,如果它是关键信息,则应将其配置为> 1。
您应该考虑两件事: