来自亚马逊开发指南:
分片是短暂的:它们会根据需要自动创建和删除。任何分片也可以拆分成多个新分片;这也会自动发生。(请注意,父分片也可能只有一个子分片。)一个分片可能会分裂以响应其父表上的高水平写入活动,以便应用程序可以并行处理来自多个分片的记录。
在我的应用程序中,我并不关心来自哪个分片数据,我只想处理所有更改。但是,当您设置流处理器时,您必须订阅一个或一组分片。如果可以随时删除/拆分/添加分片,您如何确保获得所有更改?
客户端是否应该轮询分片列表以进行更改?
来自亚马逊开发指南:
分片是短暂的:它们会根据需要自动创建和删除。任何分片也可以拆分成多个新分片;这也会自动发生。(请注意,父分片也可能只有一个子分片。)一个分片可能会分裂以响应其父表上的高水平写入活动,以便应用程序可以并行处理来自多个分片的记录。
在我的应用程序中,我并不关心来自哪个分片数据,我只想处理所有更改。但是,当您设置流处理器时,您必须订阅一个或一组分片。如果可以随时删除/拆分/添加分片,您如何确保获得所有更改?
客户端是否应该轮询分片列表以进行更改?
是的。如果您使用的是 DynamoDB 流的低级 API,则需要自行处理这些场景。
一个更好的主意是使用 DynamoDB Streams Kinesis Adapter,它允许您使用 Amazon Kinesis Client Library。后者为您处理所有上述复杂性,从而使您的生活更简单。
相关文档可以在这里找到。