同一请求的定义是什么?

时间:2019-06-19 22:34:09

标签: microservices terminology distributed-system

在这里(https://softwareengineering.stackexchange.com/questions/320143/should-an-idempotent-service-always-return-the-same),我找到了一个很好的答案。

但是“相同请求”的定义到底是什么?
可以将两个具有相同主体内容的不同API调用(不同的requestid / correlationid)视为相同的请求吗?

我的理解是:何时如何(通过api调用或事件消息传递)这两个请求都没有关系,只要它们具有相同的对应用程序状态的影响,那么两者都是相同的请求。它是否正确?

1 个答案:

答案 0 :(得分:0)

只要请求后应用程序状态保持不变。幂等性取决于您要如何处理这类情况。

场景1

CASE
increment(x)

我强烈不鼓励使用此类API;但它们必须具有唯一的相关ID或某种访问控制才能正常工作。

append(xs, x)
idempotency token: 521F14B6-4A72-467F-8CD0-6654C69F4629
increment(x);

场景2

append(xs, x)
   where xs read at revision 1022;

您如何确定两个Put(x=1) Delete(x) Put(x=1) 是否相同?同样,幂等性令牌或接纳控制,或两者兼而有之。


幂等标记的一个关键问题是如何处理它们。他们有TTL吗?您是否将它们存储在数据库中?