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


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

         

  • 相关阅读:
    SQL综合练习(一)
    数据探索及数据处理&文本数据的处理(二)
    数据探索及数据处理&文本数据的处理(一)
    交叉验证cross_validation
    优惠券预测——特征工程
    优惠券预测——数据探索2
    优惠券预测——数据探索1
    C盘扩容
    tracert在网络中的使用
    网络故障篇
  • 原文地址:https://www.cnblogs.com/enchaolee/p/13675066.html
Copyright © 2020-2023  润新知