Skip to content

imgolye/idempotent-springboot-star

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一、概述 (一)幂等定义

  1. 数学领域的幂等定义 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现。
  2. 编程领域的幂等定义 对于一个方法/接口/函数采用同一个数据请求执行任意次数(>=2)而对数据只产生0次或1次变更。则认为该接口/方法/函数具有幂等性 RFC 2616 HTTP 幂等性

(二)为什么需要幂等 早期编程领域主流的架构为单体架构, 接口的调用多为进程内调用.针对每一个接口的调用都存在明确的结果失败OR 成功, 随分布式架构流行越来越多的调用转变成跨网络调用, 受网络的稳定性影响调用的结果也变得不确定, 为避免引入繁琐的 write-check 编码模式.

(三)可能产生幂等性的场景 通常接口分为两类(查询和修改),对于查询类型的我们认为天然幂等,不管执行多少次只会对数据产生0次影响。而针对修改类型(新增,修改,删除)可能会根据请求数产生n次影响

  1. 网络波动,可能会引起重复请求
  2. 用户重复操作,用户在有意无意下触发多次请求
  3. 自身应用使用了重试机制(rpc重试或业务重试等)
  4. 页面重复刷新或提交
  5. 用户双击提交按钮

二、项目介绍 项目构建工具maven

模块说明

  1. idempotent-core: 幂等核心依赖包
  • core包主要提供了幂等的拦截实现、计数器的创建销毁、基础配置、以及一些支持业务方个性化自定义处理的接口。
  1. idempotent-reids: 基于redis实现的幂等方案
  • redis包主要实现了幂等的存储、默认bean的配置、以及序列化等 三、项目使用
org.link.redis idempotent-redis 1.0-SNAPSHOT

Releases

No releases published

Packages

No packages published

Languages