zoukankan      html  css  js  c++  java
  • 分布式系统接口幂等校验

    方案一: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请求即可???

         

  • 相关阅读:
    已知二叉树的前序遍历、中序遍历,求后序遍历
    排序算法
    应用层
    运输层
    mysql分页查询
    mysql 性能分析及explain用法
    数据库SQL优化
    MATLAB GUI设计(1)
    路径选择
    Python itchat库(1)
  • 原文地址:https://www.cnblogs.com/enchaolee/p/13675066.html
Copyright © 2011-2022 走看看