我创建了一个服务X,其中包含一些数据的记帐请求来自许多其他服务Y。我通过添加许多属性来创建一个 idempotent_id ,从而使该idempotent_id保持惟一性。我还创建了一个idempotent_version并将其设置为1,将此记录存储到dynamoDB中(使用idempotent_id和idempotent_version作为分区键和排序键)。现在,我用这个和idempotent_version调用其他一些服务idempotent_id Z idempotent_version。一段时间后,假设请求具有相同的数据,我将创建idempotent_id,但它将与以前一样,因为我们正在处理相同的记录。现在,我必须创建idempotent_version,在本例中为2,因为前面有相同的请求(,如果n-1请求已经出现,这可以是n)。如何才能找到当前数据记录的idempotent_version,因为我将用此版本将数据存储到dynamoDB中,并使用此版本调用服务Z。(,适用于当前场景,为2)
发布于 2020-06-17 17:59:53
这些文档有一个节使用排序键进行版本控制。
基本上,当您创建v1时,也可以将其作为v1的副本创建为v0。版本0将永远是最近的版本。v0的另一个属性命名为“最新”,并将从1开始。
所以当v2来的时候..。
GetItem(hash:v0)
PutItem(hash:v2)
Copy v2 to v0, update "Latest" to 2
UpdateItem(hash:v0)有了新的事务支持,您可以确保v2的Put和v0的更新是一致的。
https://stackoverflow.com/questions/62433213
复制相似问题