Dan*_*nte 14 amazon amazon-web-services amazon-kinesis
亚马逊声称他们的Kinesis流媒体产品保证了唱片订购.
它提供记录的顺序,以及以相同顺序读取和/或重放记录的能力(...)
Kinesis由Streams组成,Streams本身由一个或多个Shards组成.记录存储在这些碎片中.我们可以编写连接到Shard的消费者应用程序,并按照它们存储的顺序读取/重放记录.
但Kinesis能否开箱即用,为Stream本身订购,而无需向消费者推销订购逻辑?消费者如何从同一个Stream的多个Shards中读取记录,确保记录的读取顺序与它们添加到Stream中的顺序相同?
Dan*_*nte 11
看来这是不可能实现的.在分片级别上保证排序,但不在整个流级别上进行排序.
https://brandur.org/kinesis-order
回到我们原来的问题:我们如何保证所有记录的生成顺序与它们的生成顺序相同?答案是我们做不到,但我们不应该让这个不幸的现实给我们带来太多麻烦.一旦我们将流扩展到多个分片,我们就没有机制可以保证记录按顺序在整个流中消耗; 只在一个碎片中.
如果您需要保证流中所有数据的顺序,则只能有一个分片。当然,这并不能很好地扩展。您需要确定的是您是否真的需要这种级别的有序数据。流中的所有数据都与所有其他数据相关吗?关键是当数据有关联时,将数据放入分片中。使用多个分片可以并行处理您的数据。如果所有相关数据都集中在一个分片中,您就可以利用保证排序的优势。如果您确实需要对所有数据进行排序,您将不得不处理随之而来的有限扩展。
| 归档时间: |
|
| 查看次数: |
8922 次 |
| 最近记录: |