微服务 接口 高并发 幂等 防重 高并发扣减

方案选型:

1.同步锁(单线程,集群可能会失效)
2.分布式锁如redis(高并发 实现复杂)
2.业务字段加唯一约束(简单)
3.令牌表+唯一约束(简单推荐)
4.mysql的on duplicate key update(简单 联合唯一索引 防重)
5.共享锁+普通索引(简单)
6.利用MQ或者Redis扩展(排队)
7.其他方案如多版本控制MVCC 乐观锁 悲观锁(select for update) 状态机等。。。
对客户端请求排队或者单线程都可以处理幂等问题,需要根据具体业务选择合适的方案但必须前后端一起做,前端做了可以提升用户体验,后端则可以保证数据安全。

编程中常见幂等

select查询天然幂等
delete删除也是幂等,删除同一个多次效果一样
update直接更新某个值的,幂等
update更新累加操作的,非幂等
insert非幂等操作,每次新增一条

产生原因

由于重复点击或者网络重发 eg:
点击提交按钮两次;
点击刷新按钮;
使用浏览器后退按钮重复之前的操作,导致重复提交表单;
使用浏览器历史记录重复提交表单;
浏览器重复的HTTP请;
nginx重发等情况;
分布式RPC的try重发等;

文档

点一下按钮调两次接口?浅谈接口设计的幂等性

高并发场景下锁的使用技巧

分布式锁实现方式详解

高并发余额减款如何防重

高并发和分布式中的幂等处理

高并发的核心技术-幂等的实现方案

什么是幂等策略

java幂等性的控制

关于接口幂等性的总结

如何避免下重复订单

每秒100W请求,12306秒杀业务,架构如何优化?

Spring Boot 如何防止重复提交?

并发扣款,如何保证数据的一致性?

springboot 幂等插件 基于redisson

高并发下如何保证接口的幂等性?

Redis架构实战:高并发情况下并发扣减库存

SpringBoot + Redis 解决海量重复提交问题

分布式接口幂等性、分布式限流(Guava 、nginx和lua限流)

接口级故障的应对方法

优雅地处理重复请求(并发请求)

案例

一个注解,优雅的实现接口幂等性!

一种非侵入式的接口幂等性实现方案,非常优雅!

蘑菇街防重复请求处理的实践与总结

电商库存系统的防超卖和高并发扣减方案

支付宝防并发方案之"一锁二判三更新"

支付中心,防止重复支付的一些思路!

高频交易总延迟?2张表告诉你如何进行热点设计!

幂等机制 美团redis setnx实现幂等

分布式系统互斥性与幂等性问题的分析与解决

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值