在生产中的单台机器上推荐 运行 多少个 kafka 流应用程序?
How many kafka streams app is recommended to run on single machine in production?
在我们的架构中,我们假设在一台机器上 运行 三个 jvm 进程(大约)并且每个 jvm 机器最多可以托管 15 个 kafka-stream 应用程序。
如果我没记错的话,每个 kafka-stream 应用程序都会生成一个 java 线程。所以,这似乎是一个笨拙的架构,在一台机器上有大约 45 个 kafka-stream 应用程序 运行ning。
那么,我的问题分为三个部分
1) 我对每个 kafka-stream 应用生成一个 java 线程的理解是否正确?此外,每个 kafka-stream 都会与 kafka-broker 建立新的 tcp 连接 ?
2) 有没有办法为多个 kafka-streams 共享一个 tcp 连接?
3) 在单台机器上 运行 45 个流很难(不推荐)吗?
除非在生产中有实际用例,否则答案肯定是否定的。
多个答案:
一个 KafkaStreams 实例默认启动一个 processing 线程(你
也可以配置更多的处理线程)
在内部,KafkaStreams 使用两个 KafkaConsumers 和一个 KafkaProducer
(如果你打开 EOS,它会使用更多的 KafkaProducers):一个 KafkaConsumer
启动后台心跳线程,KafkaProducer 启动
后台发送线程 => 你总共得到 4 个线程(处理,2x
heartbeat, sender) -- 如果你配置两个处理线程,你结束
总共有 8 个线程,等等)
有多个TCP连接作为消费者和生产者
(和恢复消费者,如果启用 StandbyTasks)连接到
集群
无法共享任何 TPC 连接 atm(这需要
消费者和生产者的市长重写)
您可以高效使用多少线程 运行 取决于您的硬件和
工作量...监控您的 CPU 利用率并查看购买您机器的情况...
- 每个 Kafka 流作业生成一个 thread.If 线程数是
设置为 n numbers 它将在处理 n number
时提供并行性
Kafka 分区数。
- 如果单机没有能力运行大量
线程,可以通过提交 Streams
来实现并行
在另一台机器上具有相同应用程序名称的应用程序作业
在同一个集群中。该作业将由 Kafka
识别
流并在后台处理。
- 很难(不推荐)在单台机器上 运行 45 个流
?除非有实际用途,否则答案肯定是否定的
case in production.--除非你的系统有这么多核心
或者输入有 45 个分区,这不是必需的
在我们的架构中,我们假设在一台机器上 运行 三个 jvm 进程(大约)并且每个 jvm 机器最多可以托管 15 个 kafka-stream 应用程序。
如果我没记错的话,每个 kafka-stream 应用程序都会生成一个 java 线程。所以,这似乎是一个笨拙的架构,在一台机器上有大约 45 个 kafka-stream 应用程序 运行ning。
那么,我的问题分为三个部分
1) 我对每个 kafka-stream 应用生成一个 java 线程的理解是否正确?此外,每个 kafka-stream 都会与 kafka-broker 建立新的 tcp 连接 ?
2) 有没有办法为多个 kafka-streams 共享一个 tcp 连接?
3) 在单台机器上 运行 45 个流很难(不推荐)吗? 除非在生产中有实际用例,否则答案肯定是否定的。
多个答案:
一个 KafkaStreams 实例默认启动一个 processing 线程(你 也可以配置更多的处理线程)
在内部,KafkaStreams 使用两个 KafkaConsumers 和一个 KafkaProducer (如果你打开 EOS,它会使用更多的 KafkaProducers):一个 KafkaConsumer 启动后台心跳线程,KafkaProducer 启动 后台发送线程 => 你总共得到 4 个线程(处理,2x heartbeat, sender) -- 如果你配置两个处理线程,你结束 总共有 8 个线程,等等)
有多个TCP连接作为消费者和生产者 (和恢复消费者,如果启用 StandbyTasks)连接到 集群
无法共享任何 TPC 连接 atm(这需要 消费者和生产者的市长重写)
您可以高效使用多少线程 运行 取决于您的硬件和 工作量...监控您的 CPU 利用率并查看购买您机器的情况...
- 每个 Kafka 流作业生成一个 thread.If 线程数是
设置为 n numbers 它将在处理 n number
时提供并行性 Kafka 分区数。 - 如果单机没有能力运行大量
线程,可以通过提交 Streams
来实现并行 在另一台机器上具有相同应用程序名称的应用程序作业 在同一个集群中。该作业将由 Kafka
识别 流并在后台处理。 - 很难(不推荐)在单台机器上 运行 45 个流 ?除非有实际用途,否则答案肯定是否定的 case in production.--除非你的系统有这么多核心 或者输入有 45 个分区,这不是必需的