幂等性:WEB资源或API方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。HTTP协议的方法是具有幂等性语义要求的,比如:get方法用于获取资源,不应有副作用,因此是幂等的;post方法用于创建资源,每次请求都会产生新的资源,因此不具备幂等性;put方法用于更新资源,是幂等的;delete方法用于删除资源,也是幂等的。
常用来保证幂等的手段:
1.MVCC方案:即多版本并发控制,在系统设计的过程中,合理的使用乐观锁,通过version或者updateTime(timestamp)等其他条件,来做乐观锁的判断条件。
例如:update tableName set name=#name#,version=version+1 where version=#version#
2.去重表:在插入数据的时候,插入去重表,利用数据库的唯一索引特性,保证唯一的逻辑。
3.悲观锁:整个执行过程中锁定该订单对应的记录。注意:这种在DB读大于写的情况下尽量少用。
4.select + insert:并发不高的后台系统,或者一些任务JOB,为了支持幂等,支持重复执行,简单的处理方法是,先查询下一些关键数据,判断是否已经执行过,在进行业务处理,就可以了。注意:核心高并发流程不要用这种方法。
5.状态机幂等:根据业务单据上面的状态来判断是否执行相应的操作。
6.token机制,防止页面重复提交:
业务要求:页面的数据只能被点击提交一次
发生原因:由于重复点击或者网络重发,或者nginx重发等情况会导致数据被重复提交
解决办法:
集群环境:采用token加redis(redis单线程的,处理需要排队)
单JVM环境:采用token加redis或token加jvm内存
处理流程:
数据提交前要向服务的申请token,token放到redis或jvm内存,token有效时间
提交后后台校验token,同时删除token,生成新的token返回
token特点:要申请,一次有效性,可以限流
7.对外提供借口API幂等性实现:
如银联提供的付款接口:需要接入商户提交付款请求时附带:source来源,seq序列号。source+seq在数据库里面做唯一索引,防止多次付款,(并发时,只能处理一个请求)
总结: 幂等性应该是合格程序员的一个基因,在设计系统时,是首要考虑的问题,尤其是在像支付宝,银行,互联网金融公司等涉及的都是钱的系统,既要高效,数据也要准确,所以不能出现多扣款,多打款等问题,这样会很难处理,用户体验也不好
相关推荐
进程是运行中的程序,它具有动态性和并发性 线程,是处理器分配的最小单位 在操作系统中,通常使用进程控制块(PCB)来标记进程 在操作系统中,进程之间经常会存在互斥和同步两种关系 信号量:是一种特殊的变量,...
7、处理幂等性的思路与防止表单重复提交 8、数据权限 9、分布式事务解决方案(Seata) 10、分布式事务总结 11、自定义注解+AOP 12、权限中的概念梳理 13、登录.授权流程梳理 14、RuoYi-Vue3 15、动态菜单加载思路 16...
对幂级数而言,我们收敛要考察幂级数的收敛域,其次,要考察其一致收敛性,再由一致收敛性,就可以得到幂级数的相关性质。首先我们考察幂级数的收敛域。 假设幂级数在x=x0≠0x=x_0\neq 0x=x0=0处收敛,那么,...
幂等性——Idempotence & 描述性配置Descriptive 幂等性: *基础设施即代码实践的核心原则 *部署动作每次都使用同样的“描述性配置文件”作为部署的配置,而每次执行都可以将目标环境设置为与“描述性配置文件”一致...
spring-parentmaven父pom和子pom的版本号批量修改1 设置新的版本号./mvnw versions:set -DnewVersion=2.4.12 撤销设置./mvnw versions:revert3 提交设置./mvnw versions:commit4.项目打包(同时处理项目所依赖的包)...
文章目录Kafka架构名次解释Producer(生产者)命令使用脚本常用参数举例分区策略发送返回值幂等性Consumer(消费者)命令使用脚本常用参数举例分配策略Topic(主题)命令使用脚本常用参数举例Kafka高读写 ...
2020年04月12日更新:承蒙各位的厚爱,得到了130+的star,我倍感惊喜~不过这个项目我是存在很大的遗憾的,一直想重构下代码并且留下完整的笔记,也让一些联系我的朋友有点难以下手。但是我又担心没有此能力,会对...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
(如何保证消息消费的幂等性) 如何保证消息的可靠性传输?(如何处理消息丢失的问题) 如何保证消息的顺序性? 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时...
分布式数据库中间件Mycat/Sharding-jdbc、分布式事务Seata、分布式全局ID、接口幂等性、SpringCloud之Eureka服务治理、SpringCloud之Ribbon和Feign、SpringCloud之Hystrix和Config、SpringCloud之ZUUL(Gateway)和...
算术运算符:幂>乘除余>加减 位运算符: 移位>按位与>按位或 比较运算符:按顺序比较 布尔运算符:与and>或or 11.程序的组织结构——顺序结构、选择结构、循环结构 顺序结构:按顺序执行代码,没有任何判断和跳转 ...
本文实例讲述了Python学习笔记之自定义函数用法。分享给大家供大家参考,具体如下: 函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()等。也可以创建用户自定义函数。 函数定义 ...
稳定性和刚度边值问题:射击方法对称矩阵特征值问题:Jacobi旋转,幂/逆幂方法,三对角形式最小化/优化:一维问题,ND问题,鲍威尔方法,单纯形方法在化学物理学中的应用:分子热力学(理想气体,谐波振荡器,刚性...
模幂运算 唐叶乘法 图表: 基本: 双连通组件 路径: 一种* 弗洛伊德-沃歇尔 约翰逊算法 最宽路径问题 欧拉图: 最小生成树: Borůvka的 埃德蒙兹(树木) 独立集 最大独立集(动态规划) 二分图(读作 bi·par·...
幂等性难保证:重复秒杀 不适合新手 瓶颈分析: update 减库存 | GC|网络延迟 insert | GC|网络延迟 commit/rollback 网络延迟分析:同城机房(0.5~2ms) max(1000qbs) -update后JVM-GC(50ms) max(20qps) 异地机房...
以幂等方式并行编排机器而定制。 概述 这是一项正在进行的工作。 考虑随时可能发生变化的一切。 Spire 是一个单一的可执行二进制文件,您可以使用它来提供和配置远程 Unix 系统。 它运行 Clojure领域特定语言,即: ...
真正的 RAM 机器是一种虚构的计算机,其存储单元包含任意,其运算包括普通算术( +, -, *, /取幂等)。 真正的 RAM 模型在概念上简化了许多算法,并且是教授和探索几何思想的有用工具。 但是真正的 RAM 模型的概念...
DFA是一种估算赫斯特指数的方法,用于量化一维过程的自相似性和长期相关性。 [笔记。 为方便起见,本文档没有区分适当的过程和从该过程中采样的(观察到的,可能还有一些未观察到的或“缺失的”)值的数组。 过程/...