【问题标题】:Process multiple Kinesis streams within single Java process在单个 Java 进程中处理多个 Kinesis 流
【发布时间】:2019-02-05 09:32:51
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: java stream amazon-kinesis amazon-kcl


    【解决方案1】:

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

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

    1. 失败案例 - 防止一次失败影响所有 Worker
    2. 部署/更新 - 更好地控制一次更新的 Worker 数量
    3. 硬件管理 - 每个进程一个 Worker 更容易分布在多个小型主机上,尤其是在您的处理需求增长时
    4. 开发复杂性 - 虽然 KCL 在一个进程中支持多个 Worker,但将每个 Worker 开发为自己的进程要容易得多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2017-02-24
      • 2012-06-27
      • 2018-10-27
      相关资源
      最近更新 更多