【问题标题】:Idempotent Keys From Client's Perspective从客户端的角度看幂等键
【发布时间】:2020-03-10 18:40:42
【问题描述】:

假设我有一个 API 调用下游服务的 API,称为 /charge (POST)。假设在进行充电时,反向代理发生超时,我得到了5xx。但指控确实发生了。

在这种情况下,我会回复 5xx 给我的消费者。现在,如果消费者使用相同的幂等键调用,那么他的请求可以成功,因为下游服务将返回响应的缓存副本。但是,如果他在调用我的 API 时使用不同的幂等密钥,他将继续收到 409s,因为付款已被收取。

这是我的两个问题:

  1. 客户端如何知道何时使用相同的 idempotentId 重试或完全发起新请求?

  2. (补充上一个问题)UI 如何决定使用不同的幂等 ID?每个新请求是否都包含一个新的 Id,并且只有重试逻辑重用相同的 Id?

基本上,我试图从客户端了解幂等键 的观点。

【问题讨论】:

    标签: rest http microservices


    【解决方案1】:

    在向用户返回失败响应之前,应自动重试几次超时。因此,如果错误是暂时的,则用户不会注意到任何问题(除了可能可以忽略不计的响应延迟)。

    请求发起系统应维护所有请求及其状态的日志。因此,如果故障持续较长时间,系统可以定期重试失败的请求,并向用户提供提交请求的详细 UI 视图。这消除了用户重试请求的需要。系统将代表用户执行此操作。

    【讨论】:

      猜你喜欢
      • 2014-08-29
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多