使用 Kinesis Client Library - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 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 的 Amazon SDK 版本。这些版本出现的问题会导致使用 KCL 的 DynamoDB 时出现相关异常错误。我们建议您使用 2.28.0 或更高 适用于 Java 的 Amazon SDK 版本来避免此问题。

KCL 主要功能和优势

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

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

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

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

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

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

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

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