分布式锁 实现笔记

单体架构

分布式redis 实现 架构:

Redisson 实现:

--------------------------

单体架构:

单体架构,集群架构模拟超买问题:
前端Ngix的架构,单机环境下不一定,单机JVM下,多个JVM生效。模拟,启动一个端口,需要一个Ngxis ,运行一下程序,大概看一下,8090 执行两个接口,localhost:8090 执行以下程序,8090,redis 模拟超卖出俩,配置Ngix,反向代理到web 配置上,借助jmeter,高并发的接口,N反向代理到线上很多的场景,测试计划,线程组,严肃的接口:
一般来说,来加一个模拟高并发的接口的参数,一点记得URL上,配置200,配置的化,配置0 ,一般是非常高并发的请求,瞬间200个接口,压测完对应的web 的,运行一下程序,并不是,Java 压测的过程中,我们这个程序,出现剩余库存的数值。

高并发的问题,怎么去解决,借助分布式锁。

redis 实现 
redis ,实现的分布式分redis 的实现。APIsetNX 的API。强烈建议收餐厅一下,区别一下,执行 redis 对应的value,key,都清空,reids,执行结果都一样,redis 分布式锁实现的,解决掉这个问题,OPSforSet ,key value ,本人的方法,大家都知道,deids ,keyvavalue 取得更详细一些,实际上只能怪的执行个更外,redis 之前给库,result false ,直接return 掉,一般简单的分布式锁实现了。
分布式锁的 多线程访问,请求过来,都执行到这边,都会发到redis 下里面去,redis 是单线程的工具,
一个一个的去执行。如果第一个线程,返会的的都是false,前端的程序,可以单线程的并发的资源编程穿行的。

分布式锁的,

现在的问题; 
1.执行的业务代码,redis 的会执行if 逻辑直接执行了,所有的线程,不就是释放锁。
执行try catch 处理

这样还有问题吗?
整个web 应用挂了,直接stop了,进程都kill 掉了,所以说,优化一下我们的代码,
这种情况下,设置过期时间,可不可以这麽做的,设置10s 钟,就算死锁,10s 种维持的,锁失效问题,
停留10s 中,设置秒种,

还会出现死锁问题吗?

并不是原子代码块中,去执行,设置一个超时时间,稍等,同理比较外配的实现。
一种简单的分布式锁,实际上是执行的,如果代码放到,高并发场景,大概是这样的,
枷锁成功,线上的业务非常多,可能是花费1是5秒,当前的过去了10s,锁主动国企掉,高并发场景,不断地
请亲过来了,随着我们的程序的线程,第15s 执行删除锁,高并发轻轻又来了,第二个线程,也会成执行,这个锁,
高并发的执行逻辑,可能会一致执行。
库存的并发就问题,一推退宿。

高并发问题一直失效的问题,打1,小1,一线互联网的公司,就打掉了,代码,碰到一个时间设置成30s ,
设置300s ,搞不好,万一应用down 1,这个体验太差了。


时间不能太差,之前我们是这样来解决的,释放的锁的失效问题。定义一个线程ID,对于没有线程,下昵称为一个ID,可以判断来完成,取回一下所,如果说,redis ,i修改,这样的话,软件公司里面去写,比较完善了。超时问题非常了。
设置时间非常合理的呢,大家线程过来,拿到所之后,同时主线,开始分县城,开始一个定时任务,
去执行,加到的那把锁,重新会到30s ,超时 10s 的任务会馆,这个任务就挂了,进程挂了,30s 时间,有
抢山所。分布式锁,想的都很透彻,很可能会写出bugs.写出应给分布式锁。

 

Redisson

一个成熟的框架:锁续命的逻辑完成,也是一种Java 客户端.distribute lock 实现,加一个注解来实现。
使用分布式锁的实现,使用redis 实现。

加上一个redisonn 的实现,很多的模式,Resession  客户端完成后,
直接Autowired,首先获取一个所对象,做一个操作,之前来执行,释放执行。 
释放锁。

没有真正的去执行,没有底层去执行,底层Lua 脚本来执行。
加锁的执行的其他参数的方法,执行的默认就是30s,设置一些啊,大概设计逻辑线程,假设线程1 开始一个分线程
,重新释放,微服务的,实现的30s 定时任务的间隔时间,如果没执行,自旋加锁。

源码分析,ressins Lock ,command.
分析LUA 脚本执行。 调用一个redis call , if  Args,hset ,这样的话,如果不存在的话,set key 不重复的话,
默认30s <设置key,中间被打算了,整个程序挂了,C语言完成的保证了原子性,具体lua 脚本,所以这些指令,C语言
不存在,rediso 大部分都是Luau脚本执行。分布式接触LUA脚本,保证了原子性,还保证了原子性。
一把比较完善的分布式锁,早期的版本都形成了。

redis 架构,主从架构哦,分布式,还有什么问题?哨兵和集群的架构,Mastaer 失败了,
网redis 是新啊了一般与同步与实现,假设主节点,和从节点,第1个结构,新的主节点,访问新的主节点,
线程1开始出现,怎么解决呢? redis 还有请求过来,但是redis 请求按着去排队,知道redsi 单机的并发量
,力量说10w 的并发量。分布式锁的办法。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迅捷的软件产品制作专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值