美文网首页
幂等总结

幂等总结

作者: 知止9528 | 来源:发表于2019-01-26 20:52 被阅读158次

    幂等性概念

    幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的

    常见技术方案
    1.mysql一致性读下面的select,多次查询应该是一致的

    2.删除数据,删除一次和删除多次应该是一致的

    3.插入数据(可以通过唯一索引,来防止重复插入)

    4.token机制,防止页面重复提交
    处理流程

    1. 数据提交前要向服务的申请token,token放到redis或jvm内存,token有效时间
    2. 提交后后台校验token,同时删除token,生成新的token返回

    说明:Redis是单线程的,多个命令是需要排队的,而一次删除和多次删除又是一致的,每次的token也应该是唯一的

    5.加锁
    (1)悲观锁

    select * from table_xxx where id='xxx' for update;
    

    id字段一定是主键或者唯一索引(行锁,innodb的锁是加在索引上的),不然有可能会锁多行,更甚者锁表

    (2)乐观锁
    通过版本号实现

    update table_xxx set name=#{name}#, version=version+1 where version=#{version}#
    

    (3)分布式锁
    常见的分布式锁方案
    ①数据库唯一主键
    ②redis锁
    ③zk锁
    详细见锁的分析文章

    6.状态机幂等

    在设计单据相关的业务,或者是任务相关的业务,肯定会涉及到状态机(状态变更图),就是业务单据上面有个状态,状态在不同的情况下会发生变更,一般情况下存在有限状态机,这时候,如果状态机已经处于下一个状态,这时候来了一个上一个状态的变更,理论上是不能够变更的,这样的话,保证了有限状态机的幂等。

    相关文章

      网友评论

          本文标题:幂等总结

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