前言

现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其再支付场景。幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品使用约支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条。在一个典型的订单交易系统中,防重和幂等设计是重要而又非常基本的概念。防重是指重复多次提交同样的交易指令或者订单请求到后台,系统必须能够去重,防止重复执行;而幂等,则是在多个同样的交易指令或请求同时或者先后到达后台,即使重复执行,系统也必须始终提供与一致的状态,而不能有其他的副作用。看起来,防重与幂等似乎在说同一件事情,但其实又有不同的概念区分。例如幂等其实可以通过防重设计来达到提供一致的系统状态,而防重却不如幂等那样开放承诺,允许被执行多次而达到一致状态,这其实要求在防重的基础上做出更多的设计工作,特别是在分布式环境中。

一、幂等定义

幂等是数据中得一个概念,表示N次变换和1次变换的结果相同。为了更深入地理解幂等,我们先来看看HTTP/1.1协议中对幂等性的定义࿱

分布式系统中的幂等设计相关推荐

  1. 分布式系统中,权限设计实践

    一.权限控制 1.业务背景 在复杂的业务系统中,权限管理是最基础的模块,通过各种授权结构模型,管理用户在产品中可访问和可操作的边界,以实现系统和数据安全管理的目的: 通常在系统的任何层面都会涉及到一定 ...

  2. 【通用设计】分布式系统中接口的幂等性

    阅读目录 业务场景 接口幂等性 幂等性实现方式 Token机制 数据库去重表 Redis实现 状态机 总结 业务场景 公司有个借贷的项目,具体业务类似于阿里的蚂蚁借呗,用户在平台上借款,然后规定一个到 ...

  3. 分布式系统中只有两个难题

    分布式系统抽象 讨论编程语言时,我们使用通用术语并用函数.运算符.类.变量和指针来定义我们的程序.通用的词汇可以帮助我们避免每次都为了描述某些东西而发明新词.我们的定义越精确.越没有歧异,听众也就越容 ...

  4. 来谈下高并发和分布式中的幂等处理

    来源:https://0x9.me/MRqcj 幂等的概念 幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 复制代码 在编程中,一个幂等操作的特点是其 ...

  5. 我们来谈下高并发和分布式中的幂等处理

    我们先来谈下幂等的概念 抽象概念 幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行 ...

  6. 高并发和分布式中的幂等处理

    今日推荐 这 9 个 Java 开源项目 yyds,你知道几个?阿里技术专家推荐的20本书,免费送!K8S 部署 SpringBoot 项目(一篇够用)妙用Java 8中的 Function接口 消灭 ...

  7. 接口幂等设计探索实践

    幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质.用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的.或者说是符合预期的 ...

  8. 如何检测分布式系统中的故障节点

    故障可能发生在网络连接级别(进程之间的消息丢失或传递缓慢),也可能发生在进程级别(进程崩溃或运行缓慢),并且延迟始终不能与故障区分开.这意味着在错误地将活动过程怀疑为已死(产生假阳性)与延迟将无响应过 ...

  9. 分布式系统中的幂等性(客户端与服务端的交易一致性,避免多次扣款)

    原文Zookeeper与Dubbo | 什么是分布式系统中的幂等性 结合支付防重设计一起看 ZooKeeper是一种分布式协调服务,他用简单的架构和API,解决了在分布式环境中协调和管理服务的难题. ...

最新文章

  1. 【优化3】非线性优化
  2. MySQL 创建数据表
  3. 【HTML5 video】video标签的部分属性解析
  4. 通过ProGet搭建一个内部的Nuget服务器
  5. 一个平行四边形可以分成四个_将平行四边形分割成两个三角形还易变形么?(人教四下五单元三角形例2)...
  6. Linux无线网络设置(wpa_supplicant的使用)
  7. iOS学习:CAShapeLayer与DrawRect对比,与UIBezierPath画图形
  8. [WildPackets.OmniPeek].OmniPeek.4.0.1
  9. WWDC22 - In App Purchase 更新总结
  10. Web渗透测试之信息收集
  11. Sims 4 Cottage Living 模拟人生4乡间生活 作弊码整理
  12. 什么电子邮箱最安全,什么邮箱更具私密性?
  13. c语言计算乘方不使用乘法,C语言乘方运算之矩阵乘方题解
  14. iOS之HomeKit
  15. linux下安装ffmpeg过程
  16. javaFX学习笔记之 管理Web弹出式窗口
  17. 坚持学英语 -- 公司前台MM 一日英语小记
  18. 如何把excel中的一行复制成多行
  19. 分布式文件系统—FastDFS-6.0.6搭建使用
  20. weinre调试环境搭建

热门文章

  1. java split 正则_java split方法的实现 正则匹配
  2. win8系统配置服务器地址,win8系统默认服务器地址
  3. php的关系数据库,php – 从关系数据库到非关系数据库的数据规范化的最佳实践...
  4. flink fi java_Flink DataStream API编程指南
  5. C++之构造函数和类型转换探究
  6. 全局变量中断原子操作_操作系统导论02-06章
  7. 数据消费过程_如何优雅地规划数据仓库体系
  8. 新思路计算机一级百度云,新思路全国计算机一级考试选择题(含解析和答案)合并(1)...
  9. 桩筏有限元中的弹性板计算_PKPM2010年11月结构技术问题汇总
  10. 基于android的视频采集系统的设计与实现,基于Android的视频采集系统的设计与实现...