0
点赞
收藏
分享

微信扫一扫

RD55UP06-V 三菱iQ-R系列C语言功能模块

夏天的枫_ 04-03 06:32 阅读 2

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强

总时长 104:45:00 共408P

此文章包含第158p-第p165的内容


分布式锁

原理和使用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
使用下shell对产生的命令进行发送
查看 -> 撰写 -> 撰写栏

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

idea 选中的代码提取成方法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

加锁和过期时间是一个原子操作 就可以避免死锁
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用lua

在这里插入图片描述

也可以全部用lua脚本写分布式锁,这种一半Java代码,一半Redis运行代码,受网络原因影响很大 。网上有基于lua脚本实现的分布式锁 。
在这里插入图片描述

原子删锁
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
怕业务未执行完锁就过期了,可以给过期时间设置长一些 如300秒
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

redis自己实现分布式锁的最大的问题就是自旋,自旋消耗cpu资源,所以还是得中间件进行阻塞,比如zookeeper。
ZooKeeper 可以作为解决自旋问题的一种工具或组件的一部分。在分布式系统中,如果多个节点或线程需要协调访问某个共享资源,可以借助 ZooKeeper 提供的分布式锁机制来解决自旋问题。

具体来说,当一个节点或线程需要访问共享资源时,它可以尝试获取一个分布式锁。如果锁已经被其他节点或线程持有,那么它可以选择在获取锁之前自旋一段时间,等待锁释放。当锁释放时,它再次尝试获取锁。如果自旋等待的时间过长,也可以选择放弃自旋,暂时释放 CPU 控制权,并稍后再次尝试获取锁。

总的来说,虽然 ZooKeeper 本身并不直接解决自旋问题,但它提供了一种分布式锁的实现,可以帮助分布式系统中的节点或线程协调访问共享资源,从而间接地解决自旋问题。

使用更专业的Redisson进行分布式锁操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
第二个带配置,我们使用第一个原生的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单元测试
在这里插入图片描述

在这里插入图片描述

可重入锁

在这里插入图片描述

注入的变量名称最好可以和配置类里的名称(组件ID)一样(不一样也可以)
在这里插入图片描述
在这里插入图片描述
继承了juc包下的Lock类
在这里插入图片描述
在这里插入图片描述
阻塞式等待,不需要自旋了
(无锁自旋和重量级锁)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
使用了redis的看门狗 会自动续期
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

redis 看门狗原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里看不懂应该去学习手动使用redis实现分布式锁,框架是对手动的封装,看不懂很正常
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

读写锁

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
写成功才能读到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

闭锁

在这里插入图片描述
在这里插入图片描述
Latch翻译:门闩(shaun)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

juc lock的用法如下选中的蓝色代码
在这里插入图片描述

信号量

在这里插入图片描述

在这里插入图片描述

设置3个车位
在这里插入图片描述

值变成0后无法继续停车(请求阻塞)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可以利用信号量进行限流操作
在这里插入图片描述

使用tryAcquire 不会阻塞 会直接返回false,利用false可以返回一个页面给客户,让样客户可以看到当前爆满,请稍后重试这样的页面
在这里插入图片描述

在这里插入图片描述

error那里可以直接写当前流量过大,请稍后重试
在这里插入图片描述

在这里插入图片描述


举报

相关推荐

0 条评论