关于DynamoDB Streams与Kinesis Data Streams的顺序保证问询
DynamoDB Streams与Kinesis Data Streams:顺序和重复保证解析
先明确Kinesis Data Streams的官方特性说明:
Kinesis数据流记录的顺序可能与项目变更发生的顺序不同,同一项目的通知也可能在流中多次出现。您可以通过ApproximateCreationDateTime属性识别项目修改的发生顺序及重复记录。
针对你提出的两个问题,直接给出结论:
1. 同一项目相关的事件是否有顺序保证?
Kinesis Data Streams没有这个保证,但DynamoDB Streams有。
- Kinesis侧:不管是同一项目的事件,还是全局事件,都可能出现乱序,哪怕是同分片内的记录也不例外。你只能通过
ApproximateCreationDateTime字段自行判断事件的实际发生顺序,手动做排序处理。 - DynamoDB Streams侧:它会严格保证同一分区键下的所有变更事件按发生顺序投递,这是两者最核心的差异点之一。
2. 重复出现时,是否保证最终项目的所有事件都会按顺序输出?
没有这种保证。
Kinesis的重复记录是随机出现的场景,并非用来补全缺失事件或修正顺序的机制。它既不承诺所有事件一定会被完整投递,也不保证乱序的事件后续会按正确顺序补回来。如果你是把DynamoDB Streams的事件同步到Kinesis,那么你的方案能提供的顺序和可靠性保证,最多只能达到Kinesis本身的水平,没法继承DynamoDB Streams的有序性优势。
内容的提问来源于stack exchange,提问作者Filippo De Luca
相关产品推荐
相关产品推荐

