幂等性

幂等性

用户对同一操作发起的一次请求或者多次请求的结果是一致的    如:用户多次点击按钮,用户回退再提交,微服务互相调用,网络原因,导致失败,触发feign重试机制等
 解决方案:
    1.token机制,服务端提供发送token接口,服务器保存token在redis,前端发送请求带上token与服务端保存的对于,一致则完成。完成后销毁。 如:验证码    但是会产生删token问题,不管先删token再执行业务,还是后删,因为不是原子操作,会有危险性,所以为了保证原子性,需在redis使用lua脚本保证操作是在一起的
    2.各种锁机制,数据库悲观锁   select *from xxx where id=1 for update     一般随着事务一起使用
                 数据库乐观锁   适合用在更新场景中,处理读多写少
                 业务层分布式锁    加分布式锁锁定数据,处理完后释放锁,获取到锁必须先判断这个数据是否处理过
    3.各种唯一约束
            数据库唯一约束:按照唯一索引插入,相同订单不可能有两条记录插入,防重
            redis set防重:计算数据MD5将其放入redis,每次处理,先看看md5是否存在,存在不处理
    4.防重表
            使用订单做去重表唯一索引,把唯一索引插入表,再业务操作且在同一事务,即使业务失败,也会回滚
    5.全局请求唯一id
            调用接口生成唯一id,redis将数据保存到集合中,存在即处理过
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值