本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Kinesis Data Streams 创建器是指将用户数据记录放入 Kinesis 数据流中(也称为数据摄取)的应用程序。Kinesis Producer 库 (KPL) 简化了创建器应用程序的开发,使开发人员能够实现对 Kinesis 数据流的高写入吞吐量。
您可以通过 Amazon CloudWatch 监控 KPL。有关更多信息,请参阅 使用亚马逊监控 Kinesis 制作人库 CloudWatch。
主题
注意
建议您升级到最新 KPL 版本。KPL 会定期更新至最新版本,包括最新依赖项和安全补丁、错误修复以及向后兼容的新功能。有关更多信息,请参阅 https://github.com/awslabs/amazon-kinesis-producer/releases/
查看 KPL 的作用
KPL 是一个高度可配置的库 easy-to-use,可帮助您写入 Kinesis 数据流。它在您的创建器应用程序代码和 Kinesis Data Streams API 操作之间充当中介。KPL 执行以下主要任务:
-
利用可配置的自动重试机制对一个或多个 Kinesis 数据流进行写入
-
收集记录并使用
PutRecords
根据请求将多条记录写入多个分片 -
聚合用户记录以增加负载大小并提高吞吐量
-
与 Kinesis Client Library(KCL)无缝集成以在消费端上取消聚合批记录
-
代表您提交 Amazon CloudWatch 指标,以了解制作人的绩效
请注意,KPL 与中提供的 Kinesis Data Streams API 不同。AWS SDKs
了解使用 KPL 的优势
以下列表说明了使用 KPL 开发 Kinesis Data Streams 创建器的部分主要优势。
KPL 可在同步或异步使用案例中使用。除非存在使用同步操作的具体原因,否则建议您使用异步接口的较高性能。有关这两种使用案例和示例代码的更多信息,请参阅 使用 KPL 写入 Kinesis Data Streams。
- 性能优势
-
KPL 可帮助构建高性能创建器。假设您的 Amazon EC2 实例充当代理,用于从成百上千台低功耗设备收集 100 字节的事件并将记录写入 Kinesis 数据流。每个 EC2实例必须每秒向您的数据流写入数千个事件。要实现所需的吞吐量,创建器必须实施复杂逻辑(例如,批处理或多线程处理)及重试逻辑并在消费端端取消记录聚合。KPL 为您执行所有此类任务。
- 消费端端易于使用
-
对于使用采用 Java 的 KCL 的消费端端开发人员而言,KPL 无需额外工作即可集成。当 KCL 检索包含多个 KPL 用户记录的已聚合 Kinesis Data Streams 记录时,它将自动调用 KPL,以在将单个用户记录返还到用户之前提取此类记录。
对于未使用 KCL 而是直接使用 API 操作
GetRecords
的消费端端开发人员而言,KPL Java 库可用于在将用户记录返还给用户之前提取此类记录。 - 创建器监控
-
您可以使用 CloudWatch 亚马逊和 KPL 收集、监控和分析您的 Kinesis Data Streams 制作者。KPL 代表您向 CloudWatch 发送吞吐量、错误和其他指标,并且可以配置为在流、分片或生产者级别进行监控。
- 异步架构
-
由于 KPL 可能会在将记录发送到 Kinesis Data Streams 之前对其进行缓冲,因此在继续运行之前,它不会强制调用方应用程序屏蔽并等待确认记录已到达服务器。用于将记录放入 KPL 中的调用应始终立即返回,并且不等待发送记录或接收来自服务器的响应。相反,将创建一个
Future
对象,该对象稍后将接收向 Kinesis Data Streams 发送记录的结果。这与 AWS SDK 中的异步客户端行为相同。
了解何时不使用 KPL
当 KPL 会导致库(用户可配置)中产生高达 RecordMaxBufferedTime
的额外处理延迟时。RecordMaxBufferedTime
值越大,产生的包装效率和性能就越高。无法容忍这种额外延迟的应用程序可能需要直接使用 AWS SDK。有关将软件开发工具包与 Kinesis AWS Data Streams 配合使用的更多信息,使用 Amazon Kinesis Data Streams API 开发制作人 AWS SDK for Java请参阅。有关 RecordMaxBufferedTime
和 KPL 其他用户可配置属性的更多信息,请参阅 配置 Kinesis Producer Library。