客户端应如何处理 added/removed/split 个 DynamoDB 流碎片?

How should a client handle added/removed/split DynamoDB Stream Shards?

来自amazon develop guide

Shards are ephemeral: They are created and deleted automatically, as needed. Any shard can also split into multiple new shards; this also occurs automatically. (Note that it is also possible for a parent shard to have just one child shard.) A shard might split in response to high levels of write activity on its parent table, so that applications can process records from multiple shards in parallel.

在我的应用程序中,我并不真正关心数据来自哪个分片,我只想处理所有更改。但是,当您设置流处理器时,您必须订阅一个分片或一组分片。如果分片可以随时 removed/split up/added,你怎么能确定你得到了所有的变化?

客户端是否应该轮询分片列表以进行更改?

是的。如果您使用的是 DynamoDB 流的低级 API,您需要自己处理这些场景。

更好的办法是使用 DynamoDB Streams Kinesis Adapter,它允许您使用 Amazon Kinesis Client Library。后者为您解决了上述所有复杂问题,从而使您的生活更简单。

可以找到相关文档here