服务高可用:幂等性设计

简介: QQ用得起来越少了,现在就加入300+技术微信群,公众号回复"微信群"即可加入。什么是幂等性?一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。

QQ用得起来越少了,现在就加入300+技术微信群,公众号回复"微信群"即可加入。

什么是幂等性?

一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返回成功的响应,服务调用方就认为是失败了,但很有可能的是已经成功了,如果继续重复请求写服务,如转账类的服务,可能会造成严重的后果。所以,写服务失败不能设计成继续发重复请求,被调用服务也要设计幂等性,即使重复请求,也不会造成影响。

知道上面的背景,所以,幂等性就是同样的参数,重复请求相同的服务,必须得到相同的结果。

幂等性设计

举一个支付的场景,请求一个第三方支付接口发起支付功能,同样的订单号,同样的金额信息,返回的都是成功。同样的订单号,不同的金额信息,返回的是订单号重复。这就是幂等性设计,第三方支付效验了请求参数和已有数据库的信息一致时直接返回已有的成功数据,如果数据不一致而又订单号重复直接报订单号重复。而如果不做幂等性设计,同样的订单号,同样的金额信息,重复支付,可能会造成金额累加。为了服务友好性,同样的订单号同样的金额信息返回订单号重复也是不友好的。

有些服务天生就具有幂等性,如修改用户邮箱、性别等,不管你重复请求修改多少次,返回的结果都是一样的。

所以,对于服务幂等性设计的要点就是一定要效验请求参数有效性,及已有数据的对比。如果同样的请求参数已经处理过就不要重复处理,直接返回,这就是幂等性核心点。

下面这张图已经很形式的说明了幂等性的重要性。

image.png

推荐阅读


去BAT面试完的Mysql面试题总结(55道,带完整答案)

阿里高级Java面试题(首发,70道,带详细答案)

2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案

Spring面试题(70道,史上最全)

通往大神之路,百度Java面试题前200页。

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。


相关文章
|
1月前
|
NoSQL Java API
分布式系统---幂等性设计
分布式系统---幂等性设计
30 1
|
6月前
|
消息中间件 Java 关系型数据库
分布式系统第五讲:分布式事务及实现方案
分布式系统第五讲:分布式事务及实现方案
|
8月前
|
NoSQL 前端开发 Java
高并发下接口幂等性解决方案
高并发下接口幂等性解决方案
|
8月前
|
存储 消息中间件 SQL
浅谈高并发和分布式系统的幂等如何处理
幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
|
12月前
|
NoSQL JavaScript 小程序
高并发下如何保证接口的幂等性?
高并发下如何保证接口的幂等性?
|
NoSQL 关系型数据库 MySQL
|
消息中间件 缓存 NoSQL
详细讲解服务幂等性设计
在日常工作中的一些技术设计方案评审会上,经常会有提到注意服务接口的幂等性问题,最近就有个同学就跑到跟前问我,幂等性到底是个啥?
详细讲解服务幂等性设计
|
NoSQL 前端开发 Java
高并发下接口幂等性技术方案
高并发下接口幂等性技术方案
225 0
高并发下接口幂等性技术方案
|
新零售 消息中间件 存储
保证分布式系统数据一致性的6种方案
在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?
4098 0
|
NoSQL 前端开发 Java
高并发下的接口幂等性解决方案!
高并发下的接口幂等性解决方案!
311 0
高并发下的接口幂等性解决方案!