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