AI
推荐
模板社区
专题
登录
免费注册
首页
思维导图
详情
分布式锁使用
2021-08-09 10:31:14
49
举报
分享方式
免费使用
AI智能生成
分布式锁几种方式
redis
分布式锁
高并发架构 电商 负载均衡 微服务 中台架构
秒杀
模版推荐
作者其他创作
大纲/内容
分布式锁思考
保证在分布式系统中,同一方法在同一时刻只可被一台机器的一个线程执行
应该为可重入锁,避免产生死锁
高可用的获取和释放锁
获取和释放锁性能要好
场景举例
京东618 iPhone12手机秒杀
分布式锁特征
互斥性
任意时刻,只能一个线程持有锁
锁超时释放
锁超时了,可释放,防止资源浪费及死锁
可重入性
同一个线程可重复获取当前持有的锁
高可用、高性能
加锁和解锁开销尽可能低,且保证高可用,避免分布式锁失效
安全性
锁只能被持有的线程删除,不能被其他线程删除
基于数据库方案
两种方式
乐观锁
CAS(compare and swap)
版本号机制
悲观锁
for update
总结
悲观锁简单易用、保障数据一致性,但并发量较大时,导致请求排队,影响数据库稳定,消耗服务器性能
乐观锁主要基于系统数据存储逻辑上,可能存在一些局限性,例:并发场景中直接更改了共享数据属性,导致脏数据
基于缓存方案(Redis)
setnx+expire
setnx+value(随机值/系统时间)+expire
redisson
加锁
阻塞式等待,默认加锁时间为30s(看门狗默认时间)
自动续期
解锁时间要大于业务执行时间
读写锁
写锁(排它锁)
读锁(共享锁)
信号量
acquire()
release()
tryAcquire()
基于Zookeeper方案
緩存失效问题<br>
缓存穿透
缓存不存在时,设置null值,并设置过期时间
缓存击穿
缓存雪崩
缓存数据一致性
双写模式
失效模式
收藏
立即使用
JVM内存结构图
收藏
立即使用
Java类加载机制
收藏
立即使用
NIO原理模型
收藏
立即使用
MySQL知识框架
水手辛巴德
职业:本科
去主页
Collect
Get Started
分布式锁
Collect
Get Started
Redis分布式锁
Collect
Get Started
分布式
Collect
Get Started
分布式锁架构
评论
0
条评论
下一页
图形选择
思维导图
主题
补充说明
AI生成
修改AI描述
去编辑
重新生成
提示
关闭后当前内容将不会保存,是否继续?
取消
确定
Document