幂等性的相关问题
1、什么是幂等性
2、为什么需要幂等性
3、幂等性的缺点
4、如何保证幂等性
- 前端拦截
- 例如按钮的点击次数限制
- 使用数据库实现幂等性、
- 乐观锁
- 通过更新版本号实现
- 悲观锁
- 查询状态、添加操作、更改操作由于是非原子性的,那么可能得不到数据的一致性。应配合事务进行处理。
- 全局ID
- 雪花算法
- 唯一索引
- 乐观锁
- 使用JVM锁实现幂等性
- JVM锁实现是指通过JVM提供的内置锁,如Lock或者是Synchronuzed来实现幂等性
- 流程:通过Lock对代码段进行加锁操作、然后在判断此订单是否已经被处理过,如果未处理则开启事务执行订单处理、处理完成之后提交事务、释放锁。【适用于单机锁、分布式不适用】
- JVM锁实现是指通过JVM提供的内置锁,如Lock或者是Synchronuzed来实现幂等性
- 使用分布式锁实现幂等性
- 在每次执行方法之前、先判断是否可以获取到分布式锁,如果可以。则表示为第一次执行方法、否则直接放弃请求。