什么是幂等性?

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

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

幂等性设计

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

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

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

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

分布式技术(5)服务高可用:幂等性设计相关推荐

  1. 网易视频云:分布式转码服务高可用浅析

    分布式视频处理系统中的worker.razer.sdk等模块以无状态方式设计,即worker应用停止服务或节点宕机均不会影响整个系统对于视频的处理.比如有worker-N应用正在处理转码,到了99%的 ...

  2. 服务高可用:幂等性设计

    转载自 服务高可用:幂等性设计 什么是幂等性? 一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求.而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返 ...

  3. 云原生时代微服务的高可用架构设计

    简介: 在8月20日"阿里巴巴技术质量精品课"上,来自蚂蚁的经国分享了对云原生时代微服务的高可用架构设计的全面解析,为大家介绍了应用架构演进路径.云原生时代的技术福利.高可用架构的 ...

  4. 蚂蚁金服资深技术专家经国:云原生时代微服务的高可用架构设计

    经国 蚂蚁金服数字金融线担任技术风险架构师 读完需要 15 分钟 速读仅需 5 分钟 经国,蚂蚁金服资深技术专家,毕业于浙江大学. 2014 年加入蚂蚁金服,先后负责过支付宝的单元化.弹性.去 ORA ...

  5. 高可用架构设计之无状态服务

    高可用架构设计之无状态服务 笑谈架构设计 事故的发生是量的积累的结果,任何事情都没有表面看起来那么简单,在软件运行的过程中,随着用户量的增加,不考虑高可用,迟早有一天会发生故障,不得事先考虑高可用设计 ...

  6. 全面!一文理解微服务高可用的常用手段

    来自:高可用架构公众号 " 高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,鬼知道为了这些串联起来的环节,我得出多少张牌去应对,才能最终组成一个整个系统的高可用落地方案. 什么 ...

  7. 全面 一文理解微服务高可用的常用手段

    " 高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,鬼知道为了这些串联起来的环节,我得出多少张牌去应对,才能最终组成一个整个系统的高可用落地方案. 图片来自 Pexels 什么 ...

  8. 微服务高可用之熔断器实现原理与 Golang 实践

    I.内容提要 在微服务架构中,经常会碰到服务超时或通讯失败的问题,由于服务间层层依赖,很可能由于某个服务出现问题,不合理的重试和超时设置,导致问题层层传递引发雪崩现象,而限流和熔断是解决这个问题重要的 ...

  9. 异地多活高可用架构设计实践与思考

    一.引 随着业务的快速发展,对于很多公司来说,构建于单地域的技术体系架构,会面临诸如下面的多种问题:础设施的有限性限制了业务的可扩展性:机房.城市级别的故障灾害,影响服务的可持续性. 为解决遇到的这些 ...

最新文章

  1. linux vim怎么回退,[Linux] Vim 撤销 回退 操作
  2. java笔试之字符串反转
  3. 【Python小脚本】实现王者农药自动刷金币啦~啦啦啦走跟我一起组队~
  4. LeetCode 1199. 建造街区的最短时间(优先队列贪心)
  5. 数据产品-数据可视化工具Excel
  6. 【LeetCode】剑指 Offer 49. 丑数
  7. VScode我的setting.json设置,和搜狗输入法配置
  8. Map集合的遍历方法
  9. 委托函数《重构》----处理概括关系
  10. WLC-生成CSR操作
  11. 【转】Python基础-字符串
  12. 冒泡python代码_用Python写冒泡排序代码
  13. 2021 王道考研 408系列讲解
  14. 项目经验怎么写HTML,简历中的项目经验怎么写
  15. 浏览器内核 五大浏览器内核
  16. 【沙发管家】华为悦盒刷机破解详细攻略,附多个第三方精简固件
  17. x64 各个cr控制寄存器 含义/用途 (cr0 cr1 cr2 cr3 cr4 cr8)
  18. android大字体桌面,大图标大字体 Android老人机桌面试玩
  19. oxooooooof4蓝屏_蓝屏代码0x000000f4怎么解决?
  20. python 赚钱 知乎_没想到吧!Google 排名第一的编程语言,为什么会这么火?

热门文章

  1. office电子书_掌阅推出首款彩屏电子书阅读器,用它看漫画体验到底如何?
  2. 2022年5月语音合成(TTS)和语音识别(ASR)论文月报
  3. 机器视觉 · 工业光源
  4. 95后程序员辞职大厂卖柚子,3个月爆卖3200万,走完父亲30年的路
  5. 自学 Photoshop 2022 Mac版-笔记1
  6. php.c drcom,Drcom (简体中文)
  7. 【POJ P3311】【状压DP】Hie with the Pie
  8. 让工控机通过笔记本的Wifi实现上网
  9. python爬虫第7章(1)
  10. Linux systemd启动流程