我打算使用其数据需要同步到CloudSearch的DynamoDB。我知道Lambda可以使用,但我想为此使用Kinesis。所以生产者将是DynamoDB,它将为表中的每个PUT/DELETE生成数据流。AWS kinesis,如何确保在使用多个分片时订购的邮件传递
我的设计是非常简单的: (假设消费者接收记录有序)
- 接收记录
- 同步到CloudSearch
- (重复)
我有想知道KCL如何确保在消费者端有序交付记录时,如果有多个碎片存在的话。从API文档,这就是我理解
- 我们需要创建一个每个碎片迭代器,使用GetShardIterator
- 随着该碎片迭代器,我可以在一个特定的序列碎片的所有项目。
但是,如果我想要将DynamoDB中的数据同步到CloudSearch,那么我需要确保所有记录都以完全相同的顺序同步。这里是我感到困惑的地方:
- 可以将物品同时放入不同的碎片吗?
- (如果1是真的),那么如果我有两个碎片,那么每个碎片都需要一个ShardIterator?
- (如果1,2为真)如果我需要确保所有记录都以有序方式同步,那么我需要一个线程,它按正确的顺序获取记录,不是这样吗?
- 如果我的想法是正确的,那么我如何才能实现有序接收两个碎片?