单体架构
分布式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 的并发量。分布式锁的办法。