本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理启动、关闭和限制
以下是要融入到您的 Amazon Kinesis Data Streams 应用程序的一些其他注意事项。
启动数据创建器和数据使用者
默认情况下,KCL 从流的提示处开始读取记录,这是最近添加的记录。在此配置中,如果数据生成应用程序在任何接收记录的处理器运行前向流添加记录,那么记录处理器不会在启动后读取这些记录。
要更改记录处理器的行为以便它始终从流的开头处读取数据,请在 Amazon Kinesis Data Streams 应用程序的属性文件中设置以下值:
initialPositionInStream = TRIM_HORIZON
默认情况下,Amazon Kinesis Data Streams 将所有数据存储 24 小时。它还支持最多 7 天的延长保留期和长期保留长达 365 天。此时间范围称为保留期。将开始位置设置为 TRIM_HORIZON
时,将根据保留期的定义,对流中最早的数据启动记录处理器。即使使用 TRIM_HORIZON
设置,如果记录处理器在超过了保留期很长一段时间之后启动,流中的一些数据将不再可用。因此,您应始终让使用者应用程序读取流,并使用 CloudWatch 指标 GetRecords.IteratorAgeMilliseconds
进行监视,以确保应用程序与传入数据保持同步。
在某些情况下,对于记录处理器来说,错过流中的前几个记录没有关系。例如,您可能会在流中运行一些初始记录来测试流是否正在运行。end-to-end正如预期的。在此初步验证之后,您随后会启动您的工作程序并开始将生产数据放入流中。
有关 TRIM_HORIZON
设置的更多信息,请参阅使用分片迭代器。
关闭 Amazon Kinesis Data Streams 应用程序
当您的 Amazon Kinesis Data Streams 应用程序已完成其预定任务时,您应通过终止运行该应用程序的 EC2 实例来关闭它。您可使用 Amazon Web Services Management Console
关闭您的 Amazon Kinesis 数据流应用程序后,您应删除用于跟踪应用程序的状态的 Amazon DynamoDB 表。
读取限制
流的吞吐量在分片级别进行配置。每个分片的读取吞吐量为每秒 5 个事务,最大总数据读取速率为每秒 2 MB。如果某个应用程序 (或对相同的流执行操作的一组应用程序) 尝试以较快的速率从分片中获取数据,则 Kinesis Data Streams 将限制对应的 Get 操作。
在 Amazon Kinesis Data Streams 应用程序中,如果记录处理器处理数据的速度超过限制(例如在故障转移的情况下),则会发生限制。由于 KCL 管理应用程序与 Kinesis Data Streams 之间的交互,因此限制异常会在 KCL 代码中出现,而不会在应用程序代码中出现。但是,由于 KCL 会记录这些异常,因此您可以在日志中看到它们。
如果您发现您的应用程序一直受到限制,则应考虑增加流的分片的数量。