分布式技术(5)服务高可用:幂等性设计
什么是幂等性?
一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返回成功的响应,服务调用方就认为是失败了,但很有可能的是已经成功了,如果继续重复请求写服务,如转账类的服务,可能会造成严重的后果。所以,写服务失败不能设计成继续发重复请求,被调用服务也要设计幂等性,即使重复请求,也不会造成影响。
知道上面的背景,所以,幂等性就是同样的参数,重复请求相同的服务,必须得到相同的结果。
幂等性设计
举一个支付的场景,请求一个第三方支付接口发起支付功能,同样的订单号,同样的金额信息,返回的都是成功。同样的订单号,不同的金额信息,返回的是订单号重复。这就是幂等性设计,第三方支付效验了请求参数和已有数据库的信息一致时直接返回已有的成功数据,如果数据不一致而又订单号重复直接报订单号重复。而如果不做幂等性设计,同样的订单号,同样的金额信息,重复支付,可能会造成金额累加。为了服务友好性,同样的订单号同样的金额信息返回订单号重复也是不友好的。
有些服务天生就具有幂等性,如修改用户邮箱、性别等,不管你重复请求修改多少次,返回的结果都是一样的。
所以,对于服务幂等性设计的要点就是一定要效验请求参数有效性,及已有数据的对比。如果同样的请求参数已经处理过就不要重复处理,直接返回,这就是幂等性核心点。
下面这张图已经很形式的说明了幂等性的重要性。
分布式技术(5)服务高可用:幂等性设计相关推荐
- 网易视频云:分布式转码服务高可用浅析
分布式视频处理系统中的worker.razer.sdk等模块以无状态方式设计,即worker应用停止服务或节点宕机均不会影响整个系统对于视频的处理.比如有worker-N应用正在处理转码,到了99%的 ...
- 服务高可用:幂等性设计
转载自 服务高可用:幂等性设计 什么是幂等性? 一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求.而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返 ...
- 云原生时代微服务的高可用架构设计
简介: 在8月20日"阿里巴巴技术质量精品课"上,来自蚂蚁的经国分享了对云原生时代微服务的高可用架构设计的全面解析,为大家介绍了应用架构演进路径.云原生时代的技术福利.高可用架构的 ...
- 蚂蚁金服资深技术专家经国:云原生时代微服务的高可用架构设计
经国 蚂蚁金服数字金融线担任技术风险架构师 读完需要 15 分钟 速读仅需 5 分钟 经国,蚂蚁金服资深技术专家,毕业于浙江大学. 2014 年加入蚂蚁金服,先后负责过支付宝的单元化.弹性.去 ORA ...
- 高可用架构设计之无状态服务
高可用架构设计之无状态服务 笑谈架构设计 事故的发生是量的积累的结果,任何事情都没有表面看起来那么简单,在软件运行的过程中,随着用户量的增加,不考虑高可用,迟早有一天会发生故障,不得事先考虑高可用设计 ...
- 全面!一文理解微服务高可用的常用手段
来自:高可用架构公众号 " 高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,鬼知道为了这些串联起来的环节,我得出多少张牌去应对,才能最终组成一个整个系统的高可用落地方案. 什么 ...
- 全面 一文理解微服务高可用的常用手段
" 高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,鬼知道为了这些串联起来的环节,我得出多少张牌去应对,才能最终组成一个整个系统的高可用落地方案. 图片来自 Pexels 什么 ...
- 微服务高可用之熔断器实现原理与 Golang 实践
I.内容提要 在微服务架构中,经常会碰到服务超时或通讯失败的问题,由于服务间层层依赖,很可能由于某个服务出现问题,不合理的重试和超时设置,导致问题层层传递引发雪崩现象,而限流和熔断是解决这个问题重要的 ...
- 异地多活高可用架构设计实践与思考
一.引 随着业务的快速发展,对于很多公司来说,构建于单地域的技术体系架构,会面临诸如下面的多种问题:础设施的有限性限制了业务的可扩展性:机房.城市级别的故障灾害,影响服务的可持续性. 为解决遇到的这些 ...
最新文章
- java用重载实现获取元素的数据类型
- 弱网环境测试-Charles学习
- KVM详解(三)——KVM创建虚拟机
- android Tbs腾讯X5内核初始化失败
- 走进音视频的世界——杜比音效之AC3与AC4
- php 登陆代码,php登陆代码_php实现简单用户登录功能程序代码
- protel99实用基础入门教程
- matlab中符号检验,配对符号秩和检验,配对资料的符号检验,符号
- 听说股票是暴利?花了一晚上时间,用Python写了个股票提醒系统
- 笔记本电脑上网出现问题的解决方法
- CVE PoC的精选列表(二)
- 游戏客户端安全方案。
- 2022第七届“数维杯”大学生数学建模夏令营
- CODING 敏捷实战系列加餐课:CODING 做敏捷这一年 - 理解一站式 DevOps 产品思想
- 从多种解决方案中选择最优方案
- $ is not a function
- 抢票原理通俗解释,​候补购票是什么?你还在交智商税吗?
- android 2k 屏幕 字体模糊,显示字体小到有些模糊?高分屏别忘了这些设置
- SQL注入原理及防范
- 关于QT,你需要知道这些基础知识
热门文章
- ReadLikeHumans: Autonomous,Bidirectional and Iterative Language Modeling for Scene Text Recognition
- 深入理解Camera 基础知识点
- java的graphics2d_Java Graphics2D类的绘图方法
- 【raspberry pi】树莓派3测评
- 织梦5.7登陆注册实现
- 腾讯游戏DBA团队的发展自白
- Abbexa低样本量鸡溶菌酶 C (LYZ) ELISA 试剂盒
- 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼
- java 数组总结(赋值,反转,添加,查找)
- 新浪微博PC客户端(DotNet WinForm C# 版,C#调用新浪微博API代码,源码下载)—— 初探 (第二部分内置链接)