使用 Kinesis Client Library - Amazon Kinesis Data Streams

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Kinesis Client Library

什么是 Kinesis Client Library?

Kinesis Client Library (KCL) 是独立的 Java 软件库,其旨在简化来自 Amazon Kinesis Data Streams 的数据的使用和处理过程。KCL 负责处理与分布式计算相关的多种复杂任务,这样开发人员就可以专注于实现其数据处理业务逻辑。KCL 可管理的活动包括在多个工作程序之间进行负载平衡、响应工作程序故障、已处理记录的检查点操作,以及响应流中分片数量的变化。

KCL 经常更新,以纳入新版底层库、安全改进和错误修复。建议使用最新版本的 KCL,以避免出现已知问题,并从所有最新的改进中受益。要查找最新的 KCL 版本,请访问 KCL Github

重要
  • 建议使用最新的 KCL 版本,以避免出现已知错误和问题。如果您使用的是 KCL 2.6.0 或更早版本,请升级到 KCL 2.6.1 或更高版本,以避免在流容量变化时出现分片处理受阻,但这种情况比较罕见。

  • KCL 属于 Java 库。使用名为的基于 Java 的守护程序提供对 Java 以外其他语言的支持。 MultiLangDaemon MultiLangDaemon通过 STDIN 和 STDOUT 与 KCL 应用程序交互。有关 MultiLangDaemon on 的更多信息 GitHub,请参阅使用非 Java 语言通过 KCL 开发消费端

  • 不要在 KCL 3.x 中使用 2.27.19 到 2.27.23 适用于 Java 的 AWS SDK 版本。这些版本出现的问题会导致使用 KCL 的 DynamoDB 时出现相关异常错误。我们建议您使用 2.28.0 或更高 适用于 Java 的 AWS SDK 版本来避免此问题。

KCL 主要功能和优势

以下是 KCL 的主要功能和相关优势:

  • 可扩展性:KCL 支持应用程序在多个工作程序之间分配处理负载,以实现动态扩展。您可以手动横向缩减或扩展应用程序,也可以自动扩缩,而不必担心负载的重新分配。

  • 负载平衡:KCL 在可用工作程序之间自动平衡处理负载,从而实现跨工作程序的均匀工作分配。

  • 检查点:KCL 对已处理记录的检查点操作进行管理,使应用程序能够从上次成功处理的位置恢复处理。

  • 容错能力:KCL 有内置容错能力,即使个别工作程序出现故障,也能确保数据处理继续进行。KCL 还提供 at-least-once送货服务。

  • 处理流级别的变化:KCL 可以适应由于数据量变化而可能发生的分片拆分与合并。KCL 通过确保只有完成在父分片并进行检查点操作后才处理子分片,从而保持排序状态。

  • 监控:KCL 与 Amazon 集成, CloudWatch 用于消费者级监控。

  • 多语言支持:KCL 原生支持 Java,并支持多种非 Java 编程语言。 MultiLangDaemon