【发布时间】:2017-08-04 13:06:40
【问题描述】:
我打算使用 DynamoDB,其数据需要同步到 CloudSearch。我知道可以使用 Lambda,但我想为此使用 Kinesis。所以 Producer 是 DynamoDB,它会为表中的每个 PUT/DELETE 生成流数据。
我的设计非常简单: (假设消费者有序接收记录)
- 接收记录
- 同步到 CloudSearch
- (重复)
当存在多个分片时,我无法弄清楚 KCL 如何确保在消费者端有序交付记录。从 API 文档中,这是我的理解
- 我们需要使用 GetShardIterator 创建每个分片的迭代器
- 使用分片迭代器,我可以按特定顺序获取该分片的所有项目。
但是,如果我想将数据从 DynamoDB 同步到 CloudSearch,那么我需要确保所有记录都以完全相同的顺序同步。这就是我感到困惑的地方:
- 物品可以同时放入不同的分片吗?
- (如果 1 为真),那么如果我有两个 Shard,每个 Shard 都需要一个 ShardIterator 对吗?
- (如果 1,2 为真)如果我需要确保所有记录都以有序的方式同步,那么我只需要一个线程,它以正确的顺序获取记录,不是吗?
- 如果我的想法是正确的,那么我如何才能通过两个分片实现有序接收?
【问题讨论】:
标签: amazon-kinesis