Kinesis Client Library DynamoDB Adapter 会丢失数据吗
Will Kinesis Client Library DynamoDB Adaptor Lose Data
DynamoDB Streams Kinesis Adaptor published on github here 有这个功能,注释如下:
The Kinesis model provides an adjacent parent shard ID in the event of
a parent shard merge. Since DynamoDB Streams does not support merge, this
always returns null.
我很担心这个,我将使用 7 个分片的示例来描述我的担心,为简单起见,我们将它们命名为 0 到 6.
由于保留政策,0 的 parent 不再可用,1,2,3,4,5 是兄弟姐妹,因为 DynamoDB table 上的高流量,他们都有 0 作为他们的 parent,并且 6 是一个当前打开的分片,是自 DynamoDB table 上的流量峰值下降后合并的结果。我还假设它可以 只有一个 parent 所以它的 parent 随机是 3.
那么,这是否意味着如果我们针对具有上述状态的 DynamoDB 流启动一个使用此适配器的 Worker,它只会开始处理分片 0, 3 和 6??
我了解到 DynamoDB 流分片从不合并。即使到 table 的流量已经减少,每个(并行)分片的吞吐量也会降低。我在问题中描述的情况不会发生。
也好像
A DynamoDB Stream shard may have at most 1 parent and at most 2 children.
我从这个问题中学到的底线是:
Kinesis Client Library + the DynamoDB Streams Kinesis Adapter guarantees that all shards will be processed in order, except if you fall behind in processing a shard such that it is trimmed before you process it.
DynamoDB Streams Kinesis Adaptor published on github here 有这个功能,注释如下:
The Kinesis model provides an adjacent parent shard ID in the event of a parent shard merge. Since DynamoDB Streams does not support merge, this always returns null.
我很担心这个,我将使用 7 个分片的示例来描述我的担心,为简单起见,我们将它们命名为 0 到 6.
由于保留政策,0 的 parent 不再可用,1,2,3,4,5 是兄弟姐妹,因为 DynamoDB table 上的高流量,他们都有 0 作为他们的 parent,并且 6 是一个当前打开的分片,是自 DynamoDB table 上的流量峰值下降后合并的结果。我还假设它可以 只有一个 parent 所以它的 parent 随机是 3.
那么,这是否意味着如果我们针对具有上述状态的 DynamoDB 流启动一个使用此适配器的 Worker,它只会开始处理分片 0, 3 和 6??
我了解到 DynamoDB 流分片从不合并。即使到 table 的流量已经减少,每个(并行)分片的吞吐量也会降低。我在问题中描述的情况不会发生。
也好像
A DynamoDB Stream shard may have at most 1 parent and at most 2 children.
我从这个问题中学到的底线是:
Kinesis Client Library + the DynamoDB Streams Kinesis Adapter guarantees that all shards will be processed in order, except if you fall behind in processing a shard such that it is trimmed before you process it.