如何正确使用分布式锁

………………草稿未完成…………………

1.为什么加锁

1.1.单机环境什么要加sychornized锁?

拿秒杀活动来说,当多个请求同时并发到达业务临界资源时,资源对其他线程不可见,这样会变成线程非安全的逻辑。

int  total  = 100private  void  buyGood(int  needCount){
   print(total); // 此时是一百个。
   Tread.sleep(2000);
   if(total > 0 && total> needCount )(
      print("可以卖!");
   );  
} 


private  psvm (){
   Thread1.buyGood(100);
   Thread2.buyGood(100);
} 

Thread1,Thread2 两个线程都售卖成功了,但是我们只有100个。造成线程不安全。 所以我们在临界资源加sychornized锁 保证了 数据的安全性。

1.2.分布式环境为什么会有并发数据问题

而当我们在单台机器处理业务能力不足时,开始使用分布式集群处理业务能力,而这样的情况下,使用sychornized锁只是对单台线程加锁,但是针对对个进程的数据安全确无法限制。所以在这里引入了分布式锁的概念。

2.测试现象

1.使用测试工具模拟并发jmeter
2.秒杀系统超买现象,引发的事故。

3.如何使用

1.redis锁
2.zookeeper
3.数据库版本比较

4.如何优化

1.正确使用
2.异常,宕机,死锁,时间过期的穿透
3.代码实战

5.可用框架

redisson

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值