选择数据流容量模式 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

选择数据流容量模式

什么是数据流容量模式?

容量模式决定了如何管理数据流的容量以及如何为数据流的使用量收费。在 Amazon Kinesis Data Streams 中,您可以选择按需模式和供应适用于数据流的模式。

  • 按需-按需模式的数据流不需要容量规划,可自动扩展以处理每分钟 GB 的写入和读取吞吐量。在按需模式下,Kinesis Data Streams 会自动管理分片以提供必要的吞吐量。

  • 已预置-对于具有预置模式的数据流,您必须指定数据流的分片数。数据流的总容量是其分片容量的总和。您可以根据需要增加或减少数据流中的分片数。

您可以使用 Kinesis Data StreamsPutRecordPutRecords用于在按需和预配置容量模式下将数据写入数据流的 API。要检索数据,两种容量模式都支持默认使用者使用GetRecordsAPI 和增强型扇出 (EFO) 消费者使用SubscribeToShardAPI。

按需模式和预配模式均支持所有 Kinesis Data Streams 功能,包括保留模式、加密、监控指标等。Kinesis Data Streams 在按需和预配置容量模式下提供了高持久性和可用性。

按需模式

按需模式下的数据流不需要容量规划,而且自动扩展以处理千兆字节写和读每分钟吞吐量。按需模式以低延迟简化了大量数据的收集和存储,因为它消除配置和管理服务器、存储或吞吐量。您可以每天摄取数十亿条记录,而无需任何运营开销。

按需模式非常适合满足高度变化和不可预测的应用程序流量的需求。您不再需要为峰值容量配置这些工作负载,这可能由于利用率低而导致成本更高。按需模式适用于具有不可预测和高度变化流量模式的工作负载。

使用按需容量模式,您可以按 GB 数据流写入和读取的数据付费。您无需指定预期应用程序执行的读取和写入吞吐量。Kinesis Data Streams 会随着工作负载的增加或减少,可随着工作负载的增加 有关更多信息,请参阅 Amazon Kinesis Data Streams 定价

Y您可以使用 Kinesis Data Streams 控制台、API 或 CLI 命令以按需模式创建新的数据流。

按需模式下的数据流最多可容纳过去 30 天观察到的峰值写入吞吐量的两倍。随着数据流的写入吞吐量达到新的高峰,Kinesis Data Streams 会自动扩展数据流的容量。例如,如果数据流的写入吞吐量在 10 MB/s 到 40 MB/s 之间变化,那么 Kinesis Data Streams 可以确保您可以轻松突增,使之前的峰值吞吐量翻倍,即 80 MB/s。如果同一数据流维持 50 MB/s 的新峰值吞吐量,Kinesis Data Streams 将确保有足够的容量来获取 100 MB/s 的写吞吐量。但是,如果您的流量在 15 分钟持续时间内增加到上一个峰值的两倍以上,则可能会发生写入限制。你需要重试这些受限的请求。

按需模式的数据流的总读取容量与写吞吐量成比例增加。这有助于确保消费者应用程序始终具有足够的读取吞吐量来实时处理传入的数据。与使用GetRecordsAPI。我们建议您使用一个消费者应用程序与GetRecordAPI,以便在应用程序需要从停机时间中恢复时,它有足够的空间来赶上。对于需要添加多个消费者应用程序的场景,建议您使用 Kinesis Data Streams 的增强型扇出功能。增强的扇出支持使用SubscribeToShardAPI,每个消费者应用程序都有专用吞吐量。

处理读写吞吐量异常

使用按需容量模式(与预配置容量模式相同),必须为每条记录指定一个分区键,才能将数据写入数据流。Kinesis Data Streams 使用分区键跨分片分配数据。Kinesis Data Streams 监控每个分片的流量。当每个分片的传入流量超过 500 Kb/s 时,它会在 15 分钟内拆分分片。父分片的哈希键值在子分片之间均匀地重新分配。

如果您的传入流量超过之前峰值的两倍,即使数据在分片中均匀分布,也可以在 15 分钟内体验读取或写入异常情况。我们建议您重试所有此类请求,以便所有记录都正确存储在 Kinesis Data Streams 中。

如果您使用的是导致数据分配不均衡的分区键,并且分配给特定分片的记录超出了限制,则可能会遇到读写异常情况。在按需模式下,数据流会自动调整以处理不均匀的数据分配模式,除非单个分区键超过分片的 1 MB/s 吞吐量和每秒 1000 条记录的限制。

在按需模式下,Kinesis Data Streams 在检测到流量增加时均匀分割分片。但是,它不会检测和隔离将较大一部分传入流量推向特定分片的哈希键。如果您使用的是高度不均匀的分区键,则可能会继续收到写入异常。对于此类使用案例,我们建议您使用支持精细分片拆分的预置容量模式。

预置模式

在预置模式下,在创建数据流后,您可以使用动态扩展或缩减分片容量Amazon Web Services Management Console或者UpdateShard计数API。当有 Kinesis Data Streams 创建者或使用流中数据时,可以进行更新。

预配模式适用于容量需求易于预测的可预测流量。如果您希望对数据在分片之间的分布方式进行精细控制,则可以使用预配模式。

对于预置模式,您必须指定数据流的分片数。要使用预置模式确定数据流的大小,您需要以下输入值:

  • 写入流的数据记录的平均大小(以 KB 为单位,向上取整为 1 KB)(average_data_size_in_KB)。

  • 每秒写入流和从流读取的数据记录数 (records_per_second)。

  • 使用者数量,即 Kinesis Data Streams 应用程序,并发且独立使用流中数据的应用程序(number_of_consumers)。

  • 以 KB 为单位的传入写入带宽 (incoming_write_bandwidth_in_KB),等于 average_data_size_in_KB 乘以 records_per_second

  • 以 KB 为单位的传出读取带宽 (outgoing_read_bandwidth_in_KB),等于 incoming_write_bandwidth_in_KB 乘以 number_of_consumers

您可以计算分片数量 (number_of_shards)您的流需要使用以下公式中的输入值。

number_of_shards = max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048)

如果不将数据流配置为处理峰值吞吐量,则在预配模式下仍可能会遇到读写吞吐量异常。在这种情况下,您必须手动扩展数据流以适应数据流量。

如果您使用的是导致数据分配不均衡的分区键,并且分配给分片的记录超出限制,则可能还会遇到读写异常。要在预配模式下解决此问题,请识别此类分片并手动拆分它们以更好地适应流量。有关更多信息,请参阅 。对流进行重新分片.

在容量模式之间切换

您可以将数据流的容量模式从按需切换到预配置,或从预配置切换为按需。对于你的中的每个数据流Amazon账户,您可以在 24 小时内切换两次按需容量模式和预配容量模式。

在数据流的容量模式之间切换不会对使用此数据流的应用程序造成任何中断。您可以继续写入和读取此数据流。当您在容量模式之间切换(从按需模式到预配置或从预配置到按需)时,流的状态将设置为正在更新. 你必须等待数据流状态才能进入处于活动状态然后再次修改其属性。

从预配置容量模式切换到按需容量模式时,数据流最初会保留过渡之前的任何分片计数,从此,Kinesis Data Streams 将监控您的数据流量,并根据写入吞吐量扩展此按需数据流的分片计数。

当您从按需模式切换到预配置模式时,数据流最初还会保留过渡之前的任何分片计数,但从此,您应负责监控和调整此数据流的分片计数以适应写入吞吐量。