duduping和幂等性是否相同?

3

根据这个定义幂等性的回答,我明白了什么是幂等性。

但是我也听到很多人将这种行为描述为“去重”。这是否是等效的术语?

例如,如果一个API是幂等的,那么对于相同的请求被处理N次,得到的状态会与一次相同。我可以说这个API在去重请求吗?

1个回答

4
这两个术语并不等同,尽管对于不熟悉幂等性的人来说,将其初步基于与去重相似之处可能会有所帮助。
以银行账户的API为例,该API接受一个正数或负数来调整账户余额(存款或取款)。显然,这个API不是幂等的,因为连续的交易具有累积效应。
另一方面,我们肯定希望对这些交易进行去重。如果交易#123被错误地提交两次,它应该仅适用于账户余额一次。在这种情况下,需要对交易进行去重,因为API不是幂等的。
去重是一项活动:一项要执行的操作。幂等性是一个属性:一种要描述的属性。当去重的结果与幂等性的效果相同时,即状态没有改变时,两者之间存在相似之处。但是,等效的结果并不意味着这两个术语是等同的。

谢谢!我真的很喜欢最后一部分的内容:“去重是一种行为:一种需要执行的动作。幂等性是一种属性:一种用来描述的特性。”现在我在想,我能不能说去重是实现幂等性的一种方法呢?在你的例子中,我们可以在API中添加一个“requestID”字段,并让API变得具有幂等性,这样使用相同的requestID提交两次的交易#123将不会改变最终状态。 - Long Quanzheng
不,虽然去重可以是防止状态改变的一种方法,但它也可以是引起状态改变的一种方法(例如,对列表进行去重)。后者与幂等性无关。而且幂等性并不能阻止任何事情发生,它只是描述了一个效果。阻止方法执行和两次执行相同效果的方法并不相同。 - jaco0646

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接