提高系统稳定性-幂等性-悲观锁

前言继上次乐观锁方案之后, 接下来讨论幂等性的第二个方案悲观锁方案鉴于前两个系列文章的问题和乐观锁的缺点, 我们又提出了悲观锁方案保证接口的幂等性.回忆一下, 没有悲观锁的方式是这样的:有了悲观锁的时候:有几点讨论说明一下:是不是可以先去查, 查完之后再等修改的时候再锁, 其实查询完加锁是可以防止并发修改的, 只能一个一个的修改, 但是不能保证查询到的是正确的信息, 如果注册记录没有乐观锁的情况下, 还是会插入多条. 阻塞锁和非阻塞锁的区别: 非阻塞锁...
摘要由CSDN通过智能技术生成

前言

继上次乐观锁方案之后, 接下来讨论幂等性的第二个方案

悲观锁方案

鉴于前两个系列文章的问题和乐观锁的缺点, 我们又提出了悲观锁方案保证接口的幂等性.

回忆一下, 没有悲观锁的方式是这样的:

 

有了悲观锁的时候:

 

 

有几点讨论说明一下:

  1. 是不是可以先去查, 查完之后再等修改的时候再锁, 其实查询完加锁是可以防止并发修改的, 只能一个一个的修改, 但是不能保证查询到的是正确的信息, 如果注册记录没有乐观锁的情况下, 还是会插入多条.
  2. 阻塞锁和非阻塞锁的区别: 非阻塞锁如果获取不到就返回失败, 阻塞锁获取不到会尝试一定的时间或者尝试一定懂得次数, 到了阈值才会获取失败.
  3. 可重入锁和非可重入锁的区别: 当注册用户一再次申请同一个 email 的锁, 那么如果是不可重入锁, 就会造成死锁, 如果是重入锁, 可以继续获取这个锁做事情

悲观锁的优缺点

  1. 对于用户和系统更友好, 如果冲突概率很大的时候, 不会造成数据库过大的压力和系统报警
  2. 悲观锁让代码编写逻辑变得简单了一些, 可以在代码编写中假设自己在单线程内编程, 在一些不重要的业务场景下甚至可以减少思考乐观锁的设计
  3. 缺点是如果冲突的可能性不高, 会造成性能的缺失
  4. 如果纯依赖悲观锁, 如果集群网络不好等极端的情
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值