维基百科中幂等元的定义是:幂等是数学和计算机科学中某些操作的属性,可以多次应用而不会将结果更改为初始应用之外。< / em>的
问题是:我有REST API PUT调用,它会更新域聚合的属性。此外,它会为每个已更新的属性触发事件。现在,如果我们有两个完全相同的PUT调用一个接一个地调用到我们的后端:
问题是:这个操作是幂等的吗?
答案 0 :(得分:1)
This question and its answers解释幂等操作是什么。简而言之:重复呼叫不会改变结果。
因此,根据您对此操作的描述,它似乎符合幂等性。
答案 1 :(得分:0)
是的,它是:无论您发送相同的PUT请求多少次,它都会使您的系统(您的聚合)处于相同的状态。
答案 2 :(得分:0)
是和否。从数据的角度来看,它是幂等的。无论执行调用多少次,数据库中的数据都不会更改。但从某种意义上来说它不是幂等的,因为某些日志或其他事件可能会改变系统的“熵”:)
答案 3 :(得分:0)
这取决于您的定义。由于您有副作用(如果存在差异,则会使某些事件发生故障),多次调用可能会导致比预期更多的副作用。但是,应用程序的状态,忽略副作用,没有并发性,将是幂等的。请记住,REST调用是通过异步网络进行的,因此这是一个分布式系统。
如果您有两个并发进程,它们可能会触发不同数量的副作用。例如:
a = 2
a = 3
a = 2
a = 3
将发射两倍于
的事件a = 2
a = 2
a = 3
a = 3
这可能会造成一些麻烦。