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

问题描述 投票:0回答:1

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

这个想法很简单:为每个流创建一个新的KCL实例,然后同时运行这些工作程序。

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

谢谢

java stream amazon-kinesis amazon-kcl
1个回答
1
投票

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

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

  1. 失败案例 - 防止一个失败影响所有工人
  2. 部署/更新 - 更多地控制工作人员数量,以便立即更新
  3. 硬件管理 - 每个进程一个Worker更容易在多个小主机上分发,尤其是随着处理需求的增长
  4. 开发复杂性 - 虽然KCL在一个流程中支持多个Worker,但是为每个Worker开发它自己的流程要容易得多
© www.soinside.com 2019 - 2024. All rights reserved.