• 分布式系统接口幂等校验


    方案一:redis+token

    单独提供一个获取token的接口(生成随机token后写入redis),前端每次请求业务接口时,先调用获取token的接口拿到token,然后带着token去请求业务接口,业务中判断,如果redis中存在此token的话,那就删除,正常执行业务。如果没有的话证明已经执行过一次了,属于重复请求。

            注意:1,del时要判断如果del结果返回-1,证明删除失败,已经被其他请求过了,属于重复请求

                       2,用户不刷新页面不获取新token(无论前后端生成的token),这样可以cover住大部分场景。

    方案二:分布式锁

                  接口参数 + session敏感信息拼接成lock key ,setnx 成功,执行业务逻辑,然后释放(比对随机生成的lock value),sexnx失败,那就是重复请求。

    方案三:数据库唯一索引

    问题待定:

    Gavin.Lee:
    用token方式去做的话,select token is exist 接着就得del,然后判断del 返回。用分布式锁的执行完业务以后再去释放lock

    Gavin.Lee:
    如果用token方式做幂等,重试的话每次重试只需要生成不同的token请求即可???

         

  • 相关阅读:
    Lucene全文检索
    数据库设计样例
    tortoisegit 保存用户名密码
    ServletContextListener 解析用法
    !! 浅谈Java学习方法和后期面试技巧
    佳能2780打印机老出5100错误
    蓝屏
    股市口诀
    如何准确进行T+0操作
    通达信:显示K线图日期
  • 原文地址:https://www.cnblogs.com/enchaolee/p/13675066.html
Copyright © 2020-2023  润新知