为 Kafka 流中的不同操作设置不同的线程
Setting Different Threads for Different Operations within Kafka Streams
我在 kafka 流中定义了以下拓扑
Operation 1 : input_stream ----> filter ----> window_processing ----> write_to_topic
Operation 2 : input_stream ----> write_to_topic
我观察到这两个操作都是由同一个线程执行的(即使我增加了 StreamsConfig.NUM_STREAM_THREADS_CONFIG
线程因子)。但现在我希望它们由不同的线程处理,因为 Operation 1
正在减慢 Operation 2
。有什么办法可以为不同的操作设置不同的线程。如上例 Operation 1
正在阻塞并减慢 Operation 2
。
Kafka Streams 通过分区和 sub-topologies/tasks 并行化。在您的情况下,只有一个子拓扑,因此您只能通过分区进行并行化。因此,您可以 运行 与并行输入主题分区一样多的线程,并且每个线程处理一个分区(或者多个分区,因为线程少于分区)。
如果你真的想把两个"operation branches"拆分成独立的线程,你需要写两个应用程序而不是一个。
我在 kafka 流中定义了以下拓扑
Operation 1 : input_stream ----> filter ----> window_processing ----> write_to_topic
Operation 2 : input_stream ----> write_to_topic
我观察到这两个操作都是由同一个线程执行的(即使我增加了 StreamsConfig.NUM_STREAM_THREADS_CONFIG
线程因子)。但现在我希望它们由不同的线程处理,因为 Operation 1
正在减慢 Operation 2
。有什么办法可以为不同的操作设置不同的线程。如上例 Operation 1
正在阻塞并减慢 Operation 2
。
Kafka Streams 通过分区和 sub-topologies/tasks 并行化。在您的情况下,只有一个子拓扑,因此您只能通过分区进行并行化。因此,您可以 运行 与并行输入主题分区一样多的线程,并且每个线程处理一个分区(或者多个分区,因为线程少于分区)。
如果你真的想把两个"operation branches"拆分成独立的线程,你需要写两个应用程序而不是一个。