Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

处理启动、关闭和限制

以下是要融入到您的 Amazon Kinesis Data Streams application的设计中的一些其他注意事项。

启动数据创建器和数据使用者

默认情况下,KCL 从流的提示 处开始读取记录,这是最近添加的记录。在此配置中,如果数据生成应用程序在任何接收记录的处理器运行前向流添加记录,那么记录处理器不会在启动后读取这些记录。

要更改记录处理器的行为以便它始终从流的开头处读取数据,请在属性文件中为您的 Amazon Kinesis Data Streams application设置以下值:

initialPositionInStream = TRIM_HORIZON

Amazon Kinesis Data Streams 会将记录保留 24 到 168 小时。此时间范围称为保留期。将开始位置设置为 TRIM_HORIZON 时,将根据保留期的定义,对流中最早的数据启动记录处理器。即使使用 TRIM_HORIZON 设置,如果记录处理器在超过了保留期很长一段时间之后启动,流中的一些数据将不再可用。因此,您应始终让使用者应用程序读取流,并使用 CloudWatch 指标 GetRecords.IteratorAgeMilliseconds 进行监视,以确保应用程序与传入数据保持同步。

在某些情况下,对于记录处理器来说,错过流中的前几个记录没有关系。例如,您可能在流中运行一些初始记录来测试流是否正在按预期方式在端到端之间工作。在此初步验证之后,您随后会启动您的工作程序并开始将生产数据放入流中。

有关 TRIM_HORIZON 设置的更多信息,请参阅使用分片迭代器

关闭 Amazon Kinesis Data Streams Application

当您的 Amazon Kinesis Data Streams application已完成其预定任务时,您应通过终止运行该应用程序的 EC2 实例来关闭它。您可使用 AWS 管理控制台AWS CLI 来终止实例。

关闭您的 Amazon Kinesis Data Streams application后,您应删除 KCL 用于跟踪应用程序的状态的 Amazon DynamoDB 表。

读取限制

流的吞吐量在分片级别进行配置。每个分片具有一个 最多 每秒 5 次交易 可用于读取,最多可达的最大总数据读取速率为 每秒 2 MB 的读取吞吐量。如果某个应用程序(或对相同的流执行操作的一组应用程序)尝试以较快的速率从分片中获取数据,Kinesis Data Streams 将限制对应的 Get 操作。

在 Amazon Kinesis Data Streams application中,如果记录处理器处理数据的速率高于限额(如在故障转移的情况下),则会出现限制。由于 Kinesis Client Library管理应用程序与 Kinesis Data Streams 之间的交互,因此限制异常会在 KCL 代码中出现,而不会在应用程序代码中出现。然而,由于 KCL 会记录这些异常,因此您可在日志中查看它们。

如果您发现您的应用程序一直受到限制,则应考虑增加流的分片的数量。