服务高可用:幂等性设计
来源:互联网 发布:重生星际淘宝主腐书网 编辑:程序博客网 时间:2024/05/02 00:17
QQ用得起来越少了,现在就加入300+技术微信群,公众号回复"微信群"即可加入。
什么是幂等性?
一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返回成功的响应,服务调用方就认为是失败了,但很有可能的是已经成功了,如果继续重复请求写服务,如转账类的服务,可能会造成严重的后果。所以,写服务失败不能设计成继续发重复请求,被调用服务也要设计幂等性,即使重复请求,也不会造成影响。
知道上面的背景,所以,幂等性就是同样的参数,重复请求相同的服务,必须得到相同的结果。
幂等性设计
举一个支付的场景,请求一个第三方支付接口发起支付功能,同样的订单号,同样的金额信息,返回的都是成功。同样的订单号,不同的金额信息,返回的是订单号重复。这就是幂等性设计,第三方支付效验了请求参数和已有数据库的信息一致时直接返回已有的成功数据,如果数据不一致而又订单号重复直接报订单号重复。而如果不做幂等性设计,同样的订单号,同样的金额信息,重复支付,可能会造成金额累加。为了服务友好性,同样的订单号同样的金额信息返回订单号重复也是不友好的。
有些服务天生就具有幂等性,如修改用户邮箱、性别等,不管你重复请求修改多少次,返回的结果都是一样的。
所以,对于服务幂等性设计的要点就是一定要效验请求参数有效性,及已有数据的对比。如果同样的请求参数已经处理过就不要重复处理,直接返回,这就是幂等性核心点。
下面这张图已经很形式的说明了幂等性的重要性。
推荐阅读
分享一套高级视频教程:Dubbo+Zookeeper+ActiveMQ+Redis系列
分享一套分布式架构设计高级视频教程
分享一套Hadoop全套视频教程系列
去BAT面试完的Mysql面试题总结(55道,带完整答案)
阿里高级Java面试题(首发,70道,带详细答案)
2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案
Spring面试题(70道,史上最全)
通往大神之路,百度Java面试题前200页。
分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
- 服务高可用:幂等性设计
- 设计高可用Web服务
- 高可用的服务设计
- 高可用服务设计概述[1]
- 高可用服务设计概述[2]
- 高可用服务设计概述[1]
- 高可用服务设计概述[2]
- 如何设计一个支持高并发的高可用服务
- 高可用服务
- 服务高可用技术介绍
- lvs+keepalived 高可用服务
- 高可用服务注册中心
- keepalived实现服务高可用
- 高可用架构之高可用的应用和服务
- 2.2网站的高可用架构之高可用服务
- 分布式系统高可用设计
- Mysql高可用架构设计
- 架构设计之高可用
- Spring Boot配置随机数
- HashMap 源码解析
- 分布式服务防雪崩熔断器,Hystrix理论+实战。
- GitHub上11月份最热门的Java项目
- Mycat
- 服务高可用:幂等性设计
- leetcode 639. Decode Ways II 动态规划DP
- Java内存泄漏介绍
- 网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解
- 一种更简便的增强 Wi-Fi 连接式物联网设计安全性的解决方案---凯利讯半导体
- 程序员如何成为编程高手,并以此创业
- DevOps到底是什么鬼?DevOps介绍及工具推荐。
- 分布式Session共享解决方案
- Neutron 的架构(3)