`

笔记--幂等性

阅读更多

幂等性: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在数据库里面做唯一索引,防止多次付款,(并发时,只能处理一个请求)

 

  总结: 幂等性应该是合格程序员的一个基因,在设计系统时,是首要考虑的问题,尤其是在像支付宝,银行,互联网金融公司等涉及的都是钱的系统,既要高效,数据也要准确,所以不能出现多扣款,多打款等问题,这样会很难处理,用户体验也不好 

分享到:
评论

相关推荐

    《系统分析师》核心考点归纳总结笔记-打印版.pdf

    ### 《系统分析师》核心考点归纳总结笔记 #### 一、绪论 1. **信息的概念及计算** - **定义**: 信息是衡量系统有序程度的一种度量,表现为负熵。 - **计算公式**: \[ H()=−∑()log_() \] 其中,\(x_i\) ...

    Matlab笔记-模糊聚类分析原理及实现023.pdf

    模糊等价矩阵可以通过传递闭包矩阵Rk来表征,这是通过多次自乘得到的最小自然数k次幂,使得关系矩阵满足传递性。 其次,模糊矩阵的λ-截矩阵是将模糊等价矩阵转换为布尔矩阵的关键。通过设定阈值λ,我们可以得到一...

    汉明码简明笔记-讲解-详解

    例如,第一个校验位C1负责所有位置的奇偶性,其中包括所有第2的幂次位置的位;第二个校验位C2负责所有位置二进制表示中含有1的那些位。通过这种方式,当接收方接收到数据后,通过执行异或运算可以确定是否存在错误,...

    笔记-5、并发容器2

    【笔记-5、并发容器2】 预备知识: 在深入探讨并发容器ConcurrentHashMap之前,我们需要了解两个基础概念:Hash和位运算。 Hash是将任意长度的输入(也叫做预映射值或键)通过哈希函数转换成固定长度输出的过程。...

    Matlab笔记-模糊聚类分析原理及实现.docx

    总的来说,模糊聚类分析提供了一种灵活的工具,适用于处理具有不确定性或复杂关联的数据,如图像分割、文本分类、社会网络分析等领域。在实际应用中,选择合适的贴近度度量和聚类算法,以及调整参数如λ和类别数量,...

    java面试题-读书笔记-面试失败一次就记录一次的坑-不知不觉已经这么多了.docx

    - **容量增长**:HashTable的初始容量和扩容因子不固定,HashMap的初始容量是16,扩容时按2的幂次增长。 - **排序**:TreeMap中的键默认按自然排序,也可以通过Comparator进行定制排序。 4. **Tomcat, Apache, ...

    读书笔记 -《低风险创业》.pdf

    10. **指数型增长**:运用幂次法则思考,找到能让企业实现指数级增长的关键点,如零边际成本运营和杠杆资源。 11. **能力与风险**:提升个人能力是降低风险的关键,优秀的企业家擅长在控制风险的同时把握机会。 ...

    最优化理论笔记.pdf

    ### 最优化理论与凸优化知识点总结 #### 一、最优化理论概述 ...以上是对“最优化理论笔记”中关键知识点的概括总结。这些知识点覆盖了从基础概念到高级理论的各个方面,对于理解和应用最优化理论具有重要意义。

    李正元高数截屏笔记2

    - 函数展开成幂级数:如泰勒级数和麦克劳林级数,用于近似函数。 - 绝对收敛与条件收敛:探讨级数的收敛性分类及其判别方法。 6. **微分方程**: - 常微分方程:讲解一阶和二阶线性常微分方程的解法。 - 特征线...

    微积分笔记sl--197页 文字版.pdf

    - **函数的单调性与曲线的凹凸性**:通过分析函数的导数可以确定函数的单调性和曲线的凹凸性。 - **函数的极值与最大值最小值**:了解如何找到函数的最大值和最小值对于实际应用非常重要。 - **渐近线**:渐近线是指...

    陈文灯数学笔记(1)

    《陈文灯数学笔记》是一本深受广大数学爱好者和备考者欢迎的数学学习资料,尤其在考研数学领域具有很高的权威性。陈文灯教授是中国著名的数学教育家,他的教学方法和解题技巧深受赞誉,他的笔记集合了多年教学经验与...

    矩阵论复习笔记12261

    - 幂等矩阵和乘方矩阵的特性与它们的对角化形式紧密相关。 这些知识点构成了矩阵论的基础,对于深入学习控制系统理论、信号处理、机器学习等领域至关重要。掌握这些概念和技巧,能帮助我们更好地理解和应用矩阵在...

    高数笔记(学姐笔迹敲好看!) - 副本.rar

    学姐的笔记可能还涵盖了多元函数微积分、向量代数、空间解析几何等进阶内容,这些都是考研高数中不可或缺的部分。通过阅读这份笔记,考生可以系统地复习高数知识,同时,清晰的笔迹和逻辑结构也有助于提高记忆效率和...

    数值计算方法复习笔记与练习题.pdf

    《数值计算方法复习笔记与练习题》是一份专为研究生准备的复习资料,适用于学习《数值计算方法(第二版)》这门课程的学生。...在复习时,应结合笔记中的考试重点,针对性地加强理解和记忆,以期在考试中取得理想成绩。

    RocketMQ黑马笔记

    RocketMQ的幂等性主要包括消费者端幂等、生产者端幂等等方式。这些方式对消息的可靠性和可用性有很大的影响。 二十六、RocketMQ的消息轨迹 RocketMQ的消息轨迹主要包括消息轨迹数据的存储、查询、分析等方式。这些...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    7、**幂等性处理**:防止表单重复提交是幂等性的一个应用场景,通过令牌机制或唯一标识确保同一操作多次执行结果相同。 8、**数据权限**:RuoYi提供了基于角色的数据权限控制,可以限制用户访问特定数据。 9、**...

    Orcal入门学习笔记

    从给定的文件信息来看,这是一份关于Oracle数据库学习笔记的部分内容,涵盖了数据库操作、字符串函数、数学函数以及事务处理等多方面的知识点。以下是对这些知识点的详细解读: ### Oracle数据库入门 #### 安装与...

    kafka笔记.rar

    消费者通过消费组(Consumer Group)的形式工作,每个消息只能被组内一个消费者消费,保证了消息的幂等性。 ### 1.5 Broker Broker是Kafka集群中的节点,负责存储和转发消息。多个broker构成高可用的Kafka集群。 #...

    一份较为详细的《常微分方程》笔记

    Euler等幂方程是另一类特殊的二阶方程,笔记中也对其进行了讲解。 总的来说,这份笔记提供了常微分方程理论的坚实基础,并通过实例和练习加深对各种解法的理解。无论是初学者还是希望深化理解的高级学习者,都能...

    MIT公开课-线性代数笔记.pdf

    MIT公开课-线性代数笔记.pdf 线性代数是数学和计算机科学领域中的一个重要分支,它研究向量、矩阵、线性变换和向量空间等概念。本文根据MIT公开课的笔记,总结了线性代数的主要知识点。 一、目录方程组的几何解释 ...

Global site tag (gtag.js) - Google Analytics