Kafka Streams 多实例设计含义
Kafka Streams Multiple Instance Design Implications
问题:在单个 JVM 中拥有 org.apache.kafka.streams.KafkaStreams
class 的多个实例有什么影响(例如:内存,CPU 用法,并发问题)?
背景:我正在尝试提供一种隔板机制,以便如果流操作抛出异常,它不会将整个 KafkaStreams
实例转换为 ERROR
状态。我将应用程序划分为不同的 KafkaStreams
个实例,每个实例负责不同的任务(日志记录、外部 Web 调用、数据库调用等)。
我无法找到有关如何 (1) 从 ERROR
状态恢复 KafkaStreams
实例或 (2) 使用 [= 设计提供一些隔板原则的应用程序的文档11=] 或 (3) 证明或反驳我目前的做法。
如果我的方法违反了 Confluent 或 Kafka 记录的最佳实践,那么了解它也会有所帮助。
应用程序版本:Kafka 1.0.0,Kafka-streams 1.0.0
如果一个 KafkaStreams
实例最终处于 ERROR
状态,您需要 close()
它并创建一个新实例,您可以开始替换旧实例。
对于单个 JVM 中的 运行 多个 KafkaStreams
实例:这基本上没问题。请注意,如果这些实例属于同一个应用程序,则需要为它们配置不同的状态目录以将两者相互隔离。否则,它们会自动相互隔离。
对我来说,您的设计很有意义。但请注意,它会占用更多资源,因为 KafkaConsumer
和 KafkaProducer
无法为您设置共享。
问题:在单个 JVM 中拥有 org.apache.kafka.streams.KafkaStreams
class 的多个实例有什么影响(例如:内存,CPU 用法,并发问题)?
背景:我正在尝试提供一种隔板机制,以便如果流操作抛出异常,它不会将整个 KafkaStreams
实例转换为 ERROR
状态。我将应用程序划分为不同的 KafkaStreams
个实例,每个实例负责不同的任务(日志记录、外部 Web 调用、数据库调用等)。
我无法找到有关如何 (1) 从 ERROR
状态恢复 KafkaStreams
实例或 (2) 使用 [= 设计提供一些隔板原则的应用程序的文档11=] 或 (3) 证明或反驳我目前的做法。
如果我的方法违反了 Confluent 或 Kafka 记录的最佳实践,那么了解它也会有所帮助。
应用程序版本:Kafka 1.0.0,Kafka-streams 1.0.0
如果一个 KafkaStreams
实例最终处于 ERROR
状态,您需要 close()
它并创建一个新实例,您可以开始替换旧实例。
对于单个 JVM 中的 运行 多个 KafkaStreams
实例:这基本上没问题。请注意,如果这些实例属于同一个应用程序,则需要为它们配置不同的状态目录以将两者相互隔离。否则,它们会自动相互隔离。
对我来说,您的设计很有意义。但请注意,它会占用更多资源,因为 KafkaConsumer
和 KafkaProducer
无法为您设置共享。