基于 Kinesis 客户端库 (KCL) 的应用程序中的负载平衡和扩展

Load balancing and scaling in Kinesis Client library (KCL) based application

我正在使用 amazon-kinesis-connectors 构建一个 kinesis 客户端应用程序。我正在弄清楚一些事情。

KCL 如何确保负载均衡和缩放。例如,我有一个带有一个碎片的流,并且在一整天或特定时间内放置了很多 records/events 15 分钟。那么它将如何处理这种突然的流量和负载。

为了负载均衡,您需要多个分片。 Kinesis 试图平衡每个工作人员承担的分片数量——如果您只有一个分片,您将无法从超过一名工作人员那里获得任何好处。有关 Kinesis 负载平衡如何工作的更多信息,请参阅此处 my related answer

至于缩放 - 每个分片都有它可以承受的最大流量限制 - 来自 kinesis limitation docs

Each shard can support up to 1,000 records per second for writes, up to a maximum total data write rate of 1 MB per second

使用 kinesis 扩展的方式是添加更多分片 - 更多分片 == 更多吞吐量。您可以拥有这些分片 pre-created,也可以在流量增加时添加它们。