

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

# 使用 Kinesis 客户端库 (KCL) 处理 Amazon Keyspaces 直播
<a name="cdc_how-to-use-kcl"></a>

本主题介绍如何使用 Kinesis 客户端库 (KCL) 来使用和处理来自 Amazon Keyspaces 变更数据捕获 (CDC) 流的数据。

使用 Kinesis 客户端库 (KCL) 可以提供许多好处，而不是直接使用 Amazon Keyspaces Streams Streams API，例如：
+ 内置分片血统跟踪和迭代器处理。
+ 在工作人员之间自动进行负载平衡。
+ 容错能力和从工作器故障中恢复。
+ 使用检查点来跟踪处理进度。
+ 适应直播容量的变化。
+ 简化了用于处理 CDC 记录的分布式计算。

以下部分概述了使用 Kinesis 客户端库 (KCL) 处理流的原因和方法，并提供了使用 KCL 处理 Amazon Keyspaces CDC 流的示例。

有关定价的信息，请参阅 [Amazon Keyspaces（Apache Cassandra 兼容）定价](https://www.amazonaws.cn/keyspaces/pricing)。

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

Kinesis 客户端库 (KCL) 是一个独立的 Java 软件库，旨在简化使用和处理来自流的数据的过程。KCL 可以处理许多与分布式计算相关的复杂任务，让您在处理流数据时专注于实现业务逻辑。KCL 管理多个 worker 之间的负载平衡、响应工作器故障、检查已处理记录以及响应流中分片数量的变化等活动。

要处理 Amazon Keyspaces CDC 流，您可以使用 KCL 中的设计模式来处理流分片和流记录。KCL 提供低级 Kinesis Data Streams API 之上的有用抽象来简化编码。有关 KCL 的更多信息，请参阅 *Amazon Kinesis Data Streams* [开发者指南中的使用 KCL 开发消费者](https://docs.amazonaws.cn/kinesis/latest/dev/develop-kcl-consumers.html)。

 要使用 KCL 编写应用程序，请使用 Amazon Keyspaces Streams Kinesis 适配器。Kinesis 适配器实现了 Kinesis Data Streams 接口，因此您可以使用 KCL 来使用和处理来自亚马逊密钥空间流的记录。有关如何设置和安装 Amazon Keyspaces Streams Kinesis 适配器的说明，请访问存储库。[GitHub](https://github.com/aws/keyspaces-streams-kinesis-adapter)

下图显示了这些库是如何相互交互的。

![处理亚马逊密钥空间 CDC 流记录时，客户端应用程序与 Kinesis Data Streams、KCL、Amazon Keyspaces Streams Kinesis 适配器和亚马逊密钥空间 API 之间的交互。](http://docs.amazonaws.cn/keyspaces/latest/devguide/images/keyspaces-streams-kinesis-adapter.png)


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

## KCL 概念
<a name="cdc-kcl-concepts"></a>

在使用 KCL 实现消费者应用程序之前，您应该了解以下概念：

**KCL 消费者应用程序**  
KCL 消费者应用程序是一个处理来自 Amazon Keyspaces CDC 流的数据的程序。KCL 充当您的消费者应用程序代码和 Amazon Keyspaces CDC 流之间的中介。

**工人**  
工作程序是 KCL 使用者应用程序的执行单元，用于处理来自 Amazon Keyspaces CDC 流的数据。您的应用程序可以运行分布在多个实例上的多个工作程序。

**记录处理器**  
记录处理器是应用程序中处理来自 Amazon Keyspaces CDC 流中分片的数据的逻辑。记录处理器由工作程序为其管理的每个分片实例化。

**租赁**  
租赁代表分片的处理责任。工作人员使用租约来协调哪个工作人员正在处理哪个分片。KCL 将租赁数据存储在亚马逊 DynamoDB 的表中。

**检查点**  
检查点是记录处理器在分片中成功处理记录的位置的记录。Checkpointing 使您的应用程序能够在工作程序失败时从中断的位置恢复处理。

Amazon Keyspaces Kinesis 适配器到位后，您可以开始基于 KCL 接口进行开发，API 调用无缝定向到亚马逊密钥空间流终端节点。有关可用端点的列表，请参阅[如何在 Amazon Keyspaces 中访问 CDC 直播终端节点](CDC_access-endpoints.md)。

应用程序启动后，调用 KCL 来实例化工作进程。您必须向工作人员提供应用程序的配置信息，例如流描述符和 Amazon 凭证，以及您提供的记录处理器类的名称。在记录处理器中运行代码时，工作进程执行以下任务：
+ 连接到流
+ 枚举流中的分片
+ 协调与其他工作程序的分片关联（如果有）
+ 为其管理的每个分片实例化记录处理器
+ 从流中提取记录
+ 将记录推送到对应的记录处理器
+ 对已处理记录进行检查点操作
+ 在工作程序实例计数更改时均衡分片与工作程序的关联
+ 在分片被拆分时平衡分片与工作程序的关联