重复请求与很慢的响应

网络在操作中途断掉。把按钮按两下,看看数据库里最后剩下什么——有幂等键和没有幂等键。

点击图中任意一段,可打开该步骤。

完整的图景

一次操作一个键,把重试从「第二次扣款」变成「读一份存好的结果」。异步契约把等待变成订阅。两件事说的是同一件:网络并不可靠,而这是常态,不是例外。

内容一览

  1. 1 请求和断掉的连接 — 打开「扣款后切断网络」,把按钮按两下。
  2. 2 服务器做了什么 — 键由客户端自己造,一次操作一个,每次重试都带同一个。
  3. 3 没有键就会重复 — 重试不只有人会做:浏览器、代理和任务队列都会做。
  4. 4 有键就只有一条记录 — 这一行要在真正动手之前建好,否则两个同时到达的重试会彼此擦肩而过。
  5. 5 很慢的响应:504 还是 202 — 要流式送出,代理的缓冲必须关掉,否则响应会在最后一次性到达。

可交互的讲解

1 / 5