成都市 建设领域信用系统网站,装修十大风格,wordpress 动画主题,网站空间企业个人转载自 服务高可用#xff1a;幂等性设计什么是幂等性#xff1f;
一般在服务调用时#xff0c;读服务如果调用失败了#xff0c;会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求#xff0c;如果因为超时或者网络故障等原因被调用服务并没有返回成功的响…转载自 服务高可用幂等性设计什么是幂等性
一般在服务调用时读服务如果调用失败了会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求如果因为超时或者网络故障等原因被调用服务并没有返回成功的响应服务调用方就认为是失败了但很有可能的是已经成功了如果继续重复请求写服务如转账类的服务可能会造成严重的后果。所以写服务失败不能设计成继续发重复请求被调用服务也要设计幂等性即使重复请求也不会造成影响。
知道上面的背景所以幂等性就是同样的参数重复请求相同的服务必须得到相同的结果。
幂等性设计
举一个支付的场景请求一个第三方支付接口发起支付功能同样的订单号同样的金额信息返回的都是成功。同样的订单号不同的金额信息返回的是订单号重复。这就是幂等性设计第三方支付效验了请求参数和已有数据库的信息一致时直接返回已有的成功数据如果数据不一致而又订单号重复直接报订单号重复。而如果不做幂等性设计同样的订单号同样的金额信息重复支付可能会造成金额累加。为了服务友好性同样的订单号同样的金额信息返回订单号重复也是不友好的。
有些服务天生就具有幂等性如修改用户邮箱、性别等不管你重复请求修改多少次返回的结果都是一样的。
所以对于服务幂等性设计的要点就是一定要效验请求参数有效性及已有数据的对比。如果同样的请求参数已经处理过就不要重复处理直接返回这就是幂等性核心点。下面这张图已经很形式的说明了幂等性的重要性。