【问题标题】:What is definition of an Identical Request?相同请求的定义是什么?
【发布时间】:2019-06-19 22:34:09
【问题描述】:

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

但“相同请求”的真正定义是什么?
可以将两个不同的 API 调用(不同的 requestid/correlationid)但具有完全相同的正文内容视为相同的请求吗?

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

【问题讨论】:

    标签: microservices terminology distributed-system


    【解决方案1】:

    只要应用程序状态在请求后保持不变。你如何做幂等取决于你想如何处理这些类型的场景。

    场景 1

    increment(x)
    
    append(xs, x)
    

    我强烈反对这样的 API;但它们必须具有唯一的关联 ID 或某种准入控制才能正常工作。

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

    场景 2

    Put(x=1)
    Delete(x)
    Put(x=1)
    

    如何判断这两个Puts 是否相同?同样,幂等令牌或准入控制或两者兼而有之。


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

    【讨论】:

    • 我们使用相关 ID 作为请求标头的一部分。但在某些情况下,我们可能会得到相同的请求正文,但相关性 id 不同。我们正在考虑实现一个消息存储来处理这个重复的请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多