服务高可用:幂等性设计

作者: Java技术栈 | 来源:发表于2017-12-07 12:15 被阅读165次

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

什么是幂等性?

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

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

幂等性设计

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

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

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

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

image.png

号外:只要从简书过来关注下方微信公众号的,在公众号中回复MM,可以免费送干货:2TB架构师四阶段视频教程里面的资料。

推荐阅读


分享一套高级视频教程:Dubbo+Zookeeper+ActiveMQ+Redis系列

分享一套分布式架构设计高级视频教程

分享一套Hadoop全套视频教程系列

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

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

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

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

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

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


相关文章

  • 第二章架构设计之技术实践篇(上)

    本章要点 高可用设计手段 高并发设计手段 服务无状态化设计 服务负载均衡设计 服务幂等性设计 1.高可用设计手段 ...

  • 服务高可用:幂等性设计

    QQ用得起来越少了,现在就加入300+技术微信群,公众号回复"微信群"即可加入。 什么是幂等性? 一般在服务调用时...

  • 高并发架构设计原则

    高并发(拆分、服务化、消息队列、缓存) 高可用(集群、限流、降级) 业务设计(幂等、防重、状态机) 限流的目的 限...

  • 接口的幂等性的N种考虑

    分布式服务接口的幂等性如何设计 什么是幂等性 一个分布式系统中的某个接口,要保证幂等性,该如何保证?这个事儿其实是...

  • 【MQ消息】

    本文主要介绍MQ高可用性、消息幂等性、消息丢失的问题。 为什么使用消息队列?解耦、异步、削峰 如何保证消息队列的高...

  • 冥等性

    编程中的幂等性(二):高并发的系统如何保证幂等性 - 阿官 - CSDN博客

  • 了解高并发中的幂等性及如何解决其中的问题方案(附赠架构视频)

    高并发核心技术之 - 幂等性 1. 什么是幂等性 幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行的...

  • 高并发核心技术 - 幂等性 与 分布式锁

    高并发核心技术之 - 幂等性 1. 什么是幂等性幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行的...

  • 高并发核心技术 - 幂等性 与 分布式锁

    高并发核心技术之 - 幂等性 1. 什么是幂等性 幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行...

  • 幂等性设计

    1、概念 任意多次执行产生的影响与一次执行产生的影响相同,无 副作用。 幂等函数/幂等方法==使用相同参数重复执行...

网友评论

    本文标题:服务高可用:幂等性设计

    本文链接:https://www.haomeiwen.com/subject/oqinbxtx.html