代码之家  ›  专栏  ›  技术社区  ›  nattyddubbs

Kafka Streams多实例设计含义

  •  1
  • nattyddubbs  · 技术社区  · 6 年前

    问题 :具有多个实例的 org.apache.kafka.streams.KafkaStreams 在单个JVM中初始化(例如:内存、CPU使用率、并发问题)?

    出身背景 :我试图提供一个bulkheading机制,以便在流操作引发异常时不会转换整个 KafkaStreams 实例转换为 ERROR 状态我已将应用程序分为不同的 卡夫卡团队 每个实例负责单独的任务(日志记录、外部web调用、db调用等)。

    我找不到有关如何(1)恢复 卡夫卡团队 来自的实例 错误 说明或(2)设计一个应用程序,使用 卡夫卡团队 或者(3)证明或反驳我目前的做法。

    如果我的方法违反了Confluent或Kafka记录的最佳实践,那么了解这一点也会很有帮助。

    应用程序版本 :卡夫卡1.0.0,卡夫卡流1.0.0

    1 回复  |  直到 5 年前
        1
  •  1
  •   Matthias J. Sax    6 年前

    如果 KafkaStreams 实例结束于 ERROR 州,你需要 close() 然后创建一个新实例,您可以开始替换旧实例。

    用于运行多个 卡夫卡团队 单个JVM中的实例:这基本上是可以的。注意,如果这些实例属于同一个应用程序,则需要使用不同的状态目录对其进行配置,以将两者相互隔离。否则,会自动将彼此隔离。

    对我来说,你的设计很有意义。但请注意,它的资源密集度更高 KafkaConsumer KafkaProducer 无法为您的安装程序共享。