gpt4 book ai didi

java - 应用中存在一个生产者多个消费者时apache kafka如何处理一致性

转载 作者:行者123 更新时间:2023-11-29 04:21:08 25 4
gpt4 key购买 nike

假设您有一个包含一个生产者 (P1) 和许多消费者 (C1-C2-C3) 的架构。当一个小型 Java 客户端按顺序生成 M1、M2、M3 消息时,另一个 Java 客户端(扩展到另一台机器的 3 倍)收到一条消息,然后在计算一些内容后将消息写入数据库表。

如果消费者应用中计算周期不同,消息最先消费的可能是最后一次写入同一张表,很可能造成数据不一致。

也许我在文档中遗漏了一些东西,但我想知道 kafka 如何处理这种情况下的一致性。

最佳答案

消费者不听生产者的。相反:

  1. 生产者将消息写入由 Kafka 服务器集群管理的 Kafka 主题,
  2. Kafka 服务器将该消息保存在为该主题创建的分区之一中,并且
  3. 只有这样,消费者才能访问消息。

如果消费者在同一个消费者组中,那么只有其中一个消费者会从消息的分区中读取并且只有那个消费者能够读取该消息。如果消费者不在同一个消费者组中,那么他们可能都能够阅读消息。事实上,该消息可能会被许多消费者多次读取,直到 Kafka 服务器删除该消息,因为该消息早于为该主题配置的生存时间。

一旦消费者从 Kafka 主题中读取了一条消息,Kafka 就无法控制如何、何时甚至是否处理该消息。

关于java - 应用中存在一个生产者多个消费者时apache kafka如何处理一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com