Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在单个Java进程中处理多个Kinesis流_Java_Stream_Amazon Kinesis_Amazon Kcl - Fatal编程技术网

在单个Java进程中处理多个Kinesis流

在单个Java进程中处理多个Kinesis流,java,stream,amazon-kinesis,amazon-kcl,Java,Stream,Amazon Kinesis,Amazon Kcl,我想在同一个Java进程中使用KCL处理多个Kinesis流 想法很简单:为每个流创建一个新的KCL实例,然后并发运行worker 我的问题是,在这种情况下,是否所有KCL实例都使用相同的线程池,以及在处理流处理时,这种想法是否是一种好的/常见的做法 谢谢当然,您可以做到这一点-只需启动多个KCL实例,每个实例都指向不同的流(具有自己的配置等)。每个Worker实例应该独立于其他Worker管理自己的ShardConsumer线程 但是,更常见/推荐的做法是让每个工作人员在其自己的流程中运行-这

我想在同一个Java进程中使用KCL处理多个Kinesis流

想法很简单:为每个流创建一个新的KCL实例,然后并发运行worker

我的问题是,在这种情况下,是否所有KCL实例都使用相同的线程池,以及在处理流处理时,这种想法是否是一种好的/常见的做法


谢谢

当然,您可以做到这一点-只需启动多个KCL实例,每个实例都指向不同的流(具有自己的配置等)。每个Worker实例应该独立于其他Worker管理自己的ShardConsumer线程

但是,更常见/推荐的做法是让每个工作人员在其自己的流程中运行-这提供了更多的划分,这将改进:

  • 故障案例-防止一次故障影响所有工人
  • 部署/更新—可以更好地控制立即停止更新的工作人员数量
  • 硬件管理—每个进程一个工作进程更容易在多个小型主机上分布,尤其是在处理需求增长的情况下
  • 开发复杂性-虽然KCL在一个流程中支持多个工作人员,但为每个工作人员开发自己的流程要容易得多