

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

# 使用 Kinesis Client Library
<a name="kcl"></a>

## 什么是 Kinesis Client Library？
<a name="kcl-library-what-is"></a>

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

KCL 经常更新，以纳入新版底层库、安全改进和错误修复。建议使用最新版本的 KCL，以避免出现已知问题，并从所有最新的改进中受益。要查找最新的 KCL 版本，请访问[ KCL Github](https://github.com/awslabs/amazon-kinesis-client)。

**重要**  
建议使用最新的 KCL 版本，以避免出现已知错误和问题。如果您使用的是 KCL 2.6.0 或更早版本，请升级到 KCL 2.6.1 或更高版本，以避免在流容量变化时出现分片处理受阻，但这种情况比较罕见。
KCL 属于 Java 库。使用名为的基于 Java 的守护程序提供对 Java 以外语言的支持。 MultiLangDaemon MultiLangDaemon通过 STDIN 和 STDOUT 与 KCL 应用程序交互。有关 MultiLangDaemon on 的更多信息 GitHub，请参阅[使用非 Java 语言通过 KCL 开发消费端](develop-kcl-consumers-non-java.md)。
不要在 KCL 3.x 中使用 2.27.19 到 2.27.23 适用于 Java 的 Amazon SDK 版本。这些版本出现的问题会导致使用 KCL 的 DynamoDB 时出现相关异常错误。我们建议您使用 2.28.0 或更高 适用于 Java 的 Amazon SDK 版本来避免此问题。

## KCL 主要功能和优势
<a name="kcl-benefits"></a>

以下是 KCL 的主要功能和相关优势：
+ **可扩展性**：KCL 支持应用程序在多个工作程序之间分配处理负载，以实现动态扩展。您可以手动横向缩减或扩展应用程序，也可以自动扩缩，而不必担心负载的重新分配。
+ **负载均衡**：KCL 在可用工作程序之间自动平衡处理负载，从而实现跨工作程序的均匀工作分配。
+ **检查点**：KCL 对已处理记录的检查点操作进行管理，使应用程序能够从上次成功处理的位置恢复处理。
+ **容错能力**：KCL 有内置容错能力，即使个别工作程序出现故障，也能确保数据处理继续进行。KCL 还提供 at-least-once送货服务。
+ **处理流级别的变化**：KCL 可以适应由于数据量变化而可能发生的分片拆分与合并。KCL 通过确保只有在父分片完成处理并进行检查点操作后才处理子分片，从而保持排序状态。
+ **监控**：KCL 与 Amazon 集成， CloudWatch 用于消费者级监控。
+ **多语言支持**：KCL 原生支持 Java，并支持多种非 Java 编程语言。 MultiLangDaemon