亚马逊声称他们的Kinesis流媒体产品保证了唱片订购。
它提供记录的排序,以及以相同的顺序读取和/或重放记录的能力(...)
Kinesis由Streams组成,Streams本身由一个或多个Shards组成。记录存储在这些碎片中。我们可以编写连接到碎片的消费者应用程序,并按照它们存储的顺序读取/重放记录。
但Kinesis能否开箱即用,为Stream本身订购,而无需向消费者推销订购逻辑?消费者如何从同一个Stream的多个Shards中读取记录,确保记录的读取顺序与它们添加到Stream中的顺序相同?
答案 0 :(得分:8)
这似乎无法实现。在分片级别上保证排序,但不在整个流级别上进行排序。
https://brandur.org/kinesis-order
回到我们原来的问题:我们怎样才能保证所有 记录的生成顺序与它们的生成顺序相同?该 答案是我们不能,但我们不应该让那个不幸 现实困扰我们太多了。一旦我们将我们的流扩展到多个 碎片,没有我们可以用来保证记录的机制 在整个流中按顺序消耗;只在一个单一的 碎片。
答案 1 :(得分:1)
如果需要保证流中所有数据的顺序,则只能有一个分片。当然,这样做的伸缩性不是很好。您需要确定的是您是否真的需要该级别的有序数据。流中的所有数据是否与所有其他数据相关?关键是在关联数据时将数据放入分片中。使用多个分片可以并行处理您的数据。如果所有相关数据都放在一个分片中,则可以利用保证的顺序。如果您确实需要对所有数据进行排序,则只需要处理随之而来的有限缩放。
答案 2 :(得分:-2)
对此不确定。
但是我想他们是说在多个分片之间可以排序。
我希望数据流意味着对碎片进行逻辑分组。 因此,如果这是真的,那么我想排序是可能的。
请检查并确认