我做过支付,所以举了这样的例子
我再解释下场景:
在分布式的情况下,系统的之间的状态很容易不一致,因此,系统会出现自动的重试或者报文的补发,在这种情况下,为了系统间状态一致,需要小心的对每次请求做幂等处理
幂等处理的一大原则就是:某一次请求,如果已经处理过,那相同的请求重试的时候,返回的结果应该是一样的,不然的话,分布式系统之间的状态就不一致了。
所以,做幂等,第一重要的是这个请求要判断是否是已经处理过的请求,如果不是处理过的请求,那就该怎么处理就怎么处理。如果是已经处理过的请求(两次不同的支付不是同样的请求,要搞清楚),那么,就小心构造一个跟上次一样的处理结果给对方,这样的话,调用方和被调用方状态就一致了,这个很重要。
请仔细理解我说的话。
【 在 Mikov 的大作中提到: 】
: 标 题: Re: 如何避免同一个请求被调用多次?
: 发信站: 水木社区 (Wed May 31 13:34:02 2023), 站内
:
: 你没做过支付吧? 做过的就不会举这样的例子了
:
: 【 在 licy 的大作中提到: 】
: : 幂等性说的是同样的请求应该得到同样的结果。
: : 比如你支付一个订单,发了一个请求,返回订单成功,那么,如果这个请求由于某种原因再次重试的话,应该得到的是相同的结果,即支付成功。这样调用方和被调用方结果就一致了。
: : 这个是幂等性,而不是返回一个“该请求过,不能重试”,要是这样的话,调用方和被调用方状态就永远不能一致了。
: : ...................
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 220.181.41.*]
--
FROM 60.253.163.*