处理启动、关闭和限制 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

处理启动、关闭和限制

以下是要融入到您的 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 进行监视,以确保应用程序与传入数据保持同步。

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

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

关闭 Amazon Kinesis Data Streams 应用程序

当您的 Amazon Kinesis Data Streams 应用程序已完成其预定任务时,您应通过终止运行该应用程序的 EC2 实例来予以关闭。您可使用 Amazon Web Services Management ConsoleAmazon CLI 来终止实例。

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

读取限制

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

在 Amazon Kinesis Data Streams 应用程序中,如果记录处理器处理数据的速度超过限制(例如在失效转移的情况下),则会出现节流。由于 KCL 管理应用程序与 Kinesis Data Streams 之间的交互,因此节流异常会在 KCL 代码中出现,而不会在应用程序代码中出现。然而,由于 KCL 会记录此类异常,因此您可在日志中进行查看。

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