00:00
各位同学大家好,接下来我们说一下我们本章的最后一小节多积案例。好,从开讲到这,我们解决了两大问题,遗留了一个问题,第一个我们的代码从8.0写到我们的9.1,成功引入了right sum,完成了我们之前相关的write分布式所自研的那一套操作,通过我们第二个问题的讲解,就是它的源码分析也完成了write,三是如何加锁解锁对应的可重入和watchdog开门稿,如果到时间了,马上给它加个钟,自动续期。这四大特性都给同学们进行详细的讲解过。好那么接下来多积案例这是什么什么意思呢?大家还记得这个案例吗?我们强调过啊。现在在工作中做好你的数据的TV存储,业务逻辑的red库和我们专门做red分布式锁的库不要一样,甚至在不同的机房,不同的机器上面。
01:05
第二个我们大家都清楚啊,如果你只有一台red,非常非常容易造成一种现象叫单点故障,那假设某一台red死了,这台red将将好是做red分布式锁的,那么你可想而知啊,就不要再说加锁解锁那些问题了,是锁的没有啊。所以呢,一般我们为了杜绝这样的单点故障,我们会采用多机的形式啊,那么一说到多机,弟兄们肯定会说两个你讲过。集群啊,什么哨兵啊,全给他上上。我们以集群为例,一般我们在前面说到red集群,Red是不是有master slave主从的关系,它根据前面所讲,单机死了怕出事,那么最好是多机,多机就牵扯到集群,集群按照我们传统所说的就master slave,但是这个时候弟兄们也晓得会出现一个问题,直接red锁过来写给master,由于red集群是AP,马上返回给对方好了好。
02:05
信心满满的走了,因为我认为我已经丢给这个master,正当这个master要异步复制同步给我们的slave的时候,Master挂了,那这个时候集群马上让Li上位,可是这个时候master从的那笔数据根本就有成功同步到我们的,我们莱上来以后根本就没有这一把锁的数据,这个是存在了数据丢失,外面有一大堆线程。本身之前第一个是交给了马斯塔,马斯塔突然挂了,你莱瓦上位以后又不认这笔账,那么这个时候其他的请求线程是不是就会加锁成功,就会导致我们的一所多见,基于此,我们就给大家唠了我们的多机案例和实例来两部分,先说理论,再说编码,这边请首先这个算法redlo是red支付它提出来的,那么官网上我们也说过,大致给大家解读和翻译过,我们最后再过一遍,首先安德雷斯提出的redlo算法大致这样的啊。
03:10
分布式环境,假设有N个red是吧?Master,注意人家的角色是master,这些节点完全互相独立,不存在主从复制或其他集群协调机制,纯纯的全master都是主力团,没有佯攻。一句话,根据我们前面讲的容错公式,N等于2X加一,我们用个最低标准,我希望我死了一台整体还能用,那么。二乘以一等于二,再加个一就是三,本次案例我们就以三台re ma来给大家演示,那么他为了取得锁要注意以下操作,第一个尝试的加锁时间对吧?你的锁的自动失效时间是十秒钟过期时间,那么我们尝试就是出lock尝试加速的时间是50毫秒以内,这样可以避免服务器red已经挂的情况下,客户端还在那死死等待。第二个它这个时候有一个2N加一,就是大多数的re节点都取到所,并且使用的时间小于所的失效时间的时候,所才算获取成功,那么得到了这个锁了以后,重复上面的第三步结果最后如果因为某些原因获取锁失败了,客户端应该在所有的right上面进行解锁,OK,所以说呢,这个时候就是安德雷斯他所说的一个算法,那么请问这个算法该如何实现呢?来。
04:39
这个锁的算法实现了多red实例啊,相对于单节点的red来说,优点在于防止了单点故障造成了整个服务停止,所以在多节点中所的设计以及多节点同时崩溃各种意外情况下都有它自己的独特方法。re,分布式所支持这个multilock机制就是多重锁的这种机制,可以加多个锁合并为一个大锁,对一个大锁进行统一的申请加锁以及示范。根据我们刚才所说的2N加一那个公式,大多数哎能够获得锁,我就认为统一加锁成功,那么最低保证分布式组的有效性,我们给大家总结了一下,首先互斥任何时刻只能有一个客户端获得所独占吗?第二个。
05:26
避免这个死锁,即锁定资源的服务区崩溃或者分区了,仍然能够释放锁,第三个容错,只要多数,比如说我们三台里面有两台在使用client就可以获取和示范锁啊,三台里面死一台没关系啊,你只要不是全死了一般都可以。那么首先大家在网络上看到的基于故障转移实现的主从是无法真正实现red的,这个red lock强调过,那么主从复制masterli是异步的,A拿到锁主red复制到数据,从slave的时候崩了,导致没有复制到ready中,然后。
06:06
莱瓦升级成个register,造成新上位的master,这个register没有A之前的这笔单子,这个时候B尝试来获得所,然后获得所,成功导致什么互斥失败,也即弟兄们。我们前面讲过的这张图和刚才也说过了,什么情况就这个一所被多见多用,好理论说完,那么接下来那杨哥怎么编啊,那么这个代码呢,还是有点坑爹,那么下面请听我说,接下来给大家说一下代码的参考来源,通过前面的讲解,我们已经明白了理论是大概什么意思,我们的诉求是什么?该解决什么问题,为什么有多机话好讲,如何落地,再直白的说一句。假设现在给你一个新技术,理论知识你学通了,用它来做个东西,解决一下你生产上的问题,这个代码该怎么写,你怎么知道这个代码写出来是对的?所以同学们无二化,凡技术必须要参考官网或者github的源码中心来。
07:19
打开对应的red sun相关的GI giate的网址,那么同学们都清楚,基本上wiki维基百科就是我们的入门案例介绍,打开以后直接谷歌翻译器搞定,那么接下来同学们lawyer,那杨哥你这个多记案例该怎么写呢?来吧,我们下面呢,简单的先看一下,在2022年去年的时候,同学们搂眼8.4这张叫redlock红锁对吧,也记我们前面算法所讲解的落地的官方案例的实操经验,对应的代码说明直接告诉你,基于red red sun红锁,Red sun red lock对象实现了red lock所介绍的加锁算法,该对象也可以用来将多个。
08:13
Redlo对象关联为几个,一个红锁,每个redlo对象实例可以来自于不同的red sun的实例,也即我们这儿。如果你怕有一个。Red单机的red锁加锁了以后,中途使用的过程当中突然挂了,那这个时候你晓得的100%会造成一些生产故障,那一个锁不够用,咱们是不是要加多个,人家呢,很贴心的给你准备好了,所以每个rlo对象实例可来自于。不同的writing sun的实例,那么大家请看一看这个代码,我相信秒懂吧,有点像我们勾C里面所讲的洛,一把锁可以配多个condition,那么同理,他在这儿给你写了示例,一个锁不够用了,来三个,然后呢,请看。
09:08
该对象可以用来将多个rlo对象关联为一个红锁对象,大家看这是不是叫red上red lock,一个right上的红锁对象,几把锁相关联,三把好同时加锁,洛克123红锁在大部分节点上加锁成功就算成功,好lock克啊洛。那么中间这块,也就是我们的watch talk加个钟common门狗,然后的话呢,它呢还告诉你这个东东呢,还提供了示放的时间this time来指定枷锁的时间,超过这个时间这个锁便自动解开了。那么一句话,这个呢是最经典的lo unlo,也就是我们常用的如果你觉得不满意。多把锁构成同一把红锁以后,请看lock指定个时间,时间单位以内的十秒,比如说给123加锁,如果没有手动解锁的话,十秒后将自动解开,哎,因为加锁操作是一个非常关键的影响高并发的一个操作,注意没有手动解开的话,也就是你不写unloook的话,十秒后将自动。
10:17
解开也记你加的这把锁有效期,锁本身的有效期,我不管你的业务有多少,反正这把锁我加进去就十秒钟,哎,我尽量要提高并发性,我不能长期占用。第二个为加锁等待十百秒的耗时,并在加锁成功后。十秒钟后自动解开,也记什么未加锁,等待我要去加,我可以有100秒的时间尝试重试的时间,但是加锁成功后,十秒以后咱们呢,完璧归赵解决问题,OK,这是三个好解读一下,那么同学们肯定会明白啊,那杨哥也没什么了不起的,不就照着官网这么用用搞定会了好。
11:02
啥?哎,那么这个时候呢,同学们不妨看一下,去年还好好的,到2023年的时候,他直接告诉你啥东道这个对象is deprecated不再推荐使用了,用这两个代替,我们看一下官网。来,同学们8.4啊。我们现在讲的是红锁,直接告诉你红锁这个对象已经弃用了,请改用这个这个这个我去,所以说各位亲,你以前如果写的代码是用8.4这块的话,对不起,官网已经取消了,所以呢,我们呢。另辟蹊径。另谋他图,在2023年我们需要用的是much lock,那么也就是我们的8.3节替代8.4的,请大家看什么东东多重锁,哎,所以说这块理论代码的出处大部分都差不多,一看你也应该看得明白,但是大部分你网络上看的帖子,到2023年我看了好多啊,他还有人在用红锁,但是注意官网上已经把这个red sun red lock这个。
12:18
Red lock接口的实现内废掉了,所以从现在开始,2023年开始,如果你用到了这块多机案例的red分布,请用8.3这个Mar lock OK,好,那么同学们。我们来看一下这个呢,是多重锁一样的,还是熟悉的配方,还是熟悉的味道,这个代码由于前面我们已经讲过一遍,再不再重复啰嗦,不再赘述,基本上看一下红色的你也就明白。我夸着的那些内容。和上面的一样,也一句话,还是要多重锁这个对象,允许将rlo对象分组,并他们作为一个什么。单个的锁来处理每个R对象可能属于不同的re sun实例,那么无非就是什么,多台机器上,每个机上一台对吧?好在这块呢,我dog开门狗不说了,然后呢,多重所得对现行为呢,符合Java log的规范,哎,这意味着持有所得所有者持有者对吧?持有所的持有者或者叫所有者,现程才能解开它,避免张冠李戴都清楚,所以大家请看,那么跟刚才的一样,是不是什么传统的枷锁?来吧,多重锁,这那同学们,这块是我直接粘过来的,那传统的枷锁,然后呢?
13:35
抢占这个锁和自动解锁的时间是在十秒以后,对吧,抢占成功以后,然后呢,自动解锁的时间十秒,然后这块干嘛try OK,等待这个所得。100,然后呢,自动的解锁的话是十秒钟以后,只要你加载成功,十秒钟以后我就解了,所以大家呢,要清楚一个8.4被拿下了,从现在开始可以用多重锁来替代我们对应的多机案例的落地实现,OK,它呢稍微有点坑的就是这个,以前我也用这个啊,用的挺好的,但现在呢,没办法,只好听官网的,人家已经不推荐了,我尽量用稳定的还在用的多重锁给大家说清楚好,那么接下来就要进入我们的真真正正的编码落地阶段。
14:28
接下来来看一下我们的案例,由于我们这是多记案例。我们现在至少。需要呢?根据我们前面讲的red lock的算法啊,红锁的算法,他官方推荐呢是五台,但杨哥讲课呢,没有那么多机器骑我的本子也受不了了,如果我这起五个red的实力我就疯了,OK,那我们在这块,根据我们的诉求,我们在这块red不是真真正的业务上存起数据的,只是为了给大家演示多G的red分布式锁实例,就是多把锁,大家看一下这是不是有lock克123,所以呢,我们这儿用三台,且我直接跑在docker上面,用容器虚拟化技术来模拟三台red实力,这是第一步,第二个节约时间,我相信。
15:25
溅冒的改泡沫斜亚母主启动,最终业内我相信大家呢,这个小口诀应该是非常的清晰和明确了,所以杨哥呢,在干之前把大家熟悉的先提前写好,比如说建这么一个工程对吧?然后呢,泡沫要粘哪一些ma的坐标和我们的样文件主启动类先给大家呢提前写好,我们呢就只编写重要的业务逻辑,以节约大家的时间。好那么同学们,接下来请跟着我来第一个docker走起,三台RA master机器,注意现在这三台都是master。
16:09
我们前面讲过很多理论知识了,最后复习一次。没有master,三台都是master。本次设置三台马各自独立,无同属关系,那么打开我们的do卡来同学们do卡R-P6381,因为大家都清楚啊,这个呢,我用docker起三台red实力818283,但是docker容器实力的话,它精于背上对吧。具体的内部的接口都是6379,这个端口映射用小P,这个我就不再废话了,刚杠内幕大家都清楚,别名杠D是后台运行,这个red代表是最新版的,那么也就是我们的7.0,这些东西简单一过,默认你懂,有问题的同学请去B站上搜索杨哥的do卡2022详细讲过,OK,这都2023年了,对于do卡我2018年讲过第一季,2022年讲过第二季,还不懂的同学请自行去查阅do卡2022不再废话,默认你懂,好在这块一号机启动没问题吧,那么一样的。
17:32
二三号机直接给我启动。好,同学们,Docker PS、杠、n number,最近启动的三台机器的实例,大家请看,这个叫什么?Container ID,容器ID,那么分别他们的名字叫red master 123,第一步完成,相当于对标我们这儿出来了三个register所OK,他们呢?
18:02
合成一个整体,待会儿我们准备这么用,但是他们现在三个都是master,没有从属关系,在right层面没有从属关系,再说一遍,但是待会儿结合我们前面所讲过的理论,我们呢,要把它们合成什么东东?同一个OK,每个r lock对象可能属于不同的WRITING3的实例,那么现在弟兄们应该清楚了吧,是不是1233个不同的例,OK,第一步完成第二个。进入上一步刚启动的red容器的实例里面来,同学们第一种进法,Xec-I有交互型的red master e,然后b bash,然后呢代表是一个shel脚本,对吧?我们进去以后再执行red client-P6379连起来,这是一种命令,一条命一个意思,分成了第一条第二条命令来进行处理,第二种呢,直接就把BBA换成red client OK,那么在这块弟兄们,我呢,由于这块呢是做red分布式锁,我呢也就不再搞特别啰嗦和麻烦的那些密码验证,大家请看kiss星现在没有吧,好了,这是我们的一号机,好同同学们啊,这个呢。
19:28
是我们的。二号机,再来一台机器,同学们,这个呢,是我们的三号机器。OK,那么大家请看,现在三台机器上通通就没有什么关键的这些RA分布式锁对吧?好了,那么接下来搞定相当于三台RA实例,专门做分布式锁的,完成第一步,OK,第二个键mod red,专门讲红锁算法的改泡沫写亚M主启动,好同学们,那么我们的泡沫就叫这个加入的动作很简单,也就是一些标准的red sun,哎呀斯瓦哥,然后呢,Common这个一个common的日志包和一些辅助工具包,辅助工具包等等,减少这个配置,好这块标配,第二个我们的。
20:35
亚M9090端口号应用的名字红锁算法,然后是否开启四瓦格true这块red里面几号库啊,零号库密码我没有写了,因为专门做red锁。超时进来模式进了三台单机,那么这块我们待会用red的线程池,Red的磁化技术,连接时间多少等等,不废话,那么我们三台机器是不是都在我Linux机器上面的185机器上面的638163826383共计模拟三台不同的电子实例?好了,这个主启动没什么好说的,不解释,直接只有这么一个,OK,那么这些呢,过。
21:21
提前做好都是一张的事,老图笔记发给大家,接下来这个业务类来同学们缓存red的属性等等等等,好,我们一个一个来,这些呢我先提前写好了,给大家呢,先说一下来节约时间啊,重点不是这些这些这配置类的我就不写,只写业务逻辑了。首先只是告诉你red的这个三个地址,那么来同学们请看,我这定义了一个date class,它呢叫signal property,三台机器string地址123,好,这是第一步,第二个property,那么也就是我们在application这配置的这些东西可以挨个读进去,那么就是时间密码,它有哪些模式迟化技术,然后请看啊,一个是池的配置啊,一个是单机信息的配置,那么单机信息的配置你就明白了,我们就是三个地址,分别是1857,上面的638163826383,然后他们这三个。
22:21
装到一个池子里面,那么来同学们重点就是这个磁化技术和这个缓存配置,来大家请看,那么这个磁化技术也就告诉你一些相关的一些信息,OK好了,那么这个池子里面的配置要注入进我们的缓存配置里面,同学们请看,告诉你看这过这个的开启,看这property,这在这块是不是就是我们red property,就是刚才大家看到注入进去的这些动作由他。带着池子和每一个单机实力的配置。OK,好,Property加class,它干的是这个事,它包也是这个register property,它包含有这两个东西,同学们这个能理解吧。red的属性包含着池子和单机的信息,那有什么用呢?请大家看我是不是有三台机器独立的,所以我这就有个red property要把它注入进去,123除了名字不一样,其他的一样的代码写法,就这么干。通过前面我们讲单机,我们都清楚这个叫conig,那么也就我在池化技术里面,我叫配置,三个配置信息请看这个节点,以这个开头,然后单个服务器的配置来自于地址啊,超时连接池大小等等等。
23:50
包括密码,最终返回去给我一个red sign create,按照这个配置创建这么一个实例,好,那么同学们配置也就给大家呢,介绍到这很简单啊,就是我们前面讲过的个conf,无非在这儿就是读一些配置注入进去,最终write great好了,那么这些完成以后,那么接下来就要写我们的相关的代码,我们动手的写在哪,然后待会给大家呢演示测试,这允许杨哥偷个了,正常情况下是不是controltr了,要掉service了,我这呢,偷了直接在service里面,全部controltrller里面全部搞定了啊,我就不不想再去写那个service了,省了一步,好,那么来弟兄们。
24:36
关闭其他正式开始编码,这个呢,相当于说啊,就是我们的分布式锁,现在你可以把它理解为三台ready。都是master,他们对外暴露一个整体,你要么就别加锁,要加锁三台。像石榴籽一样的紧紧抱成团,那么就是一大坨red分布式锁,好了,那么这个red分布式锁的名字啊,叫at硅red洛,那么来吧,那么第一个out,我们要干一件什么事呢?我们费了那么大劲,是不是叫red sun client这波没问题吧?那杨哥你这个代码哪来的?那么弟兄们请看在这块是不是由我们的red sun这些东东来给你搞定啊,OK,好,那么来我们来看一下这个类。
25:30
他自己自己的哈,是不是written client这么也是不是一个written红锁的一个相关的一个接口啊,这么说能跟上好了,那么written那么来吧,一好,干脆这样大家都明白什么意思啊,二三听懂,那么来吧,Controltrl了我。没有再写service了,直接一步性一步性搞定,那么public string get,我们在这块我们大家都清楚这是不是叫Mar look得到这么一个多重锁O吧来,那么这呢,Get mapping你要干一些什么事呢?Value就等于我们在这直接。
26:23
过来这写。Monlo OK,直接呢,就是多重锁一个验证,好了,看到这吧。嗯,任务的这个执行线程,来我们这直接这。好了,那么本次线程是叫这个,那么然然后这我们就说返回吧,那多重组的任务意思over没问题吧,我们搁到这,直接把我们的线程ID踢给别人画花好了,那接下来在这块我们该怎么用呢?我们通过这啊,同学们请看。
27:19
我们前面是不是有这个动作,这个是不是给我们得到了red sun client,由于这三个123的自动注入,这几个接口就像是service一样,它已经具备干活的能力了,所以呢,搁到这第二,我们要get lock。好哪一个呀,那是不是我们缓存的这一大个对吧,我们来吧,弟兄们在这块是不是就是我们的r lock1,那么请告诉我是不是就是re31.get lock123,然后得到r lock,弟兄们这一波没有任何问题吧,完全照着光玩,人家跟你说了8.4已经。
28:05
Some red lock,这个废对象已经被废弃了,请你用这两个,所以呢,我们呢,严格遵守官网的,我们呢,这么来写我们对应的代码,哎,我只告诉大家我们东西往哪来的?好了,那么同学们。二没问题吧,三没问题吧,我们LOOK123搞定,那么try catch finally又是一个经典的写法,对吧?来吧,和刚才一样,我们获得了这个以后,咱们是不是用我们这个。多重锁的这个look方法,配合我们的按look来进行对应的最传统最经典的编写啊好了,所以呢,各位亲,呃,我们呢,干到这就干脆这样吧,6SOMELO,然后呢,LOOK123。
29:11
这一波搞定,那么在这一块我们的red lock,好吧,横锁和我们的勾UC一样,一般加锁加在TRY对应的Y最外面对吧?好,那么在这块是不是我们的unlo,那么lo点范里这块零负直接写我们对应的,那么就是示范分布式所成功K直接呢,也就是我们的上面所编写的这一个搞定,那接下来lock克UN洛克全部完成。
30:02
好,那里面我们写一个什么东东呢。很简单,我得给大家演示故障失败和watchog,它这中间是不是说了这么一个动作,哎,也就是说也默认的也是我们配置了30秒钟,过了十秒钟以后马上自动续期加个钟,假设到第20秒的时候又继续往前加十秒钟,所以呢,给大家呢演示这么一个动作来,在这块我们所做的事呢,就是come in进入到了业务逻辑,哪一个呀,我们这块说的是不是叫多重锁这一货,好了,那么在这块是哪一个过来的,在这块OK,我们task线程ID是哪一个请求过来的线程ID请求线程是什么好,我们这故意。停30秒钟,OK,好,在这块接下来这个呢是task is over,然后呢,还是我们多重锁这块,把我们线程写上去,如果说在这块错了,后台请给我打出日志,并呃后台后台上给我打出print stack trace这么一个,然后日志里面给我写arow,好吧,那么也就是我们对应的这块业务。
31:35
那出现了。我们对应的exception OK,然后在这块1.getcourse,加1.getmessage,好了,就这么简单的一个,弟兄们,没问题吧,O了,那接下来代码基本上给同学们写完成了,我们启动一下来进行一下对应的测试。
32:03
好,同学们,程序呢,启动完成开始进行我们的测试,但是在测试之前我这提一嘴,刚才我手误,我把get ID写成了get name,请同学们稍微把这改一下,OK好了,话不多讲,进入到我们的测试环节,启动成功以后,结合我们的端口号9090和我们rest地址多重锁来吧,尝试一下,大家请看在这是不是开始转圈,转圈就对了,说明已经成功。反问,由于我这程序故意要正停30秒,同学们请看后台康议是不是42号线程进来了,那么来找到我们一号的这个通道,这些命令我就不想写了啊来,同学们请看一号机是不是还剩20秒,再来看是不是又变成29秒续中自动加钟成功了吧?同学们没问题吧?再来看,再来看20秒,再来看这个时候,30秒钟。
33:04
过去了,程序也已经完成,大家请看负二是不是已经过期,那么在这块以后同学们lower没有任何问题对吧?那么来同学们请看,你的多重组的任务完成了42秒钟,因为我们这的业务逻辑就跑多少秒,30秒,那同学们再来一次呗,来吧,此时的时候看一下28,看一下26,看一下24,好了,再等等21,再等等,怎么样,又续中到30了吧,第一个命令过,那么第二个命令,同学们请看,你随便找一台机器,好,大家请看它内部会生成一个唯一的UUID,这个43是不是现在我们的对应的第二次,第一次访问叫42,第二次访问是不是叫43?那么同学们请看,进入到43,任务完成了43,最终示范分布式所成功,T就这个艾硅果瑞德洛克正常前提全部搞。
34:04
搞定三把锁是一致的,好了,那么同学们,下面我们就要干一点坏事,假设啊中你加锁的时候啊,由于首先啊,同学们你加锁的时候几台机器啊,是不是我们的123,你必须加锁的时好着解锁的时候也得给我,但是中间如果某台机器出错了,在它解锁之前,你能够成功恢复,它还是可以作为一个整体有高度的容错性,通过前面我们也明白了,三把锁三位一体,加锁成功三个。都可以有一样的时钟频率来保证我们的洛克安洛克,好,那接下来我们再来一次啊,尝试一下三把锁三位一体,加锁成功以后,中间有一把锁坏了,这两把锁继续往前走,那么他突然又回来了,能不能跟上对应这两把锁,也就跟上我们大部队的正确的时钟频率,好那么同学们,我们接下来来演示一下,中间有一把锁挂了,也就是我们的这个啊,挂了以后它会有哪些表现,好同学们再来一次,搁到这儿,我直接把一号机给关了,那么他们两个大家请看,现在是25 23没问题吧,然后好,我马上又把一号机给你启动,它能不能追回来呢?大家请看28,大家请看24,哎,24哎,什么情况?
35:40
一下子不可能有四秒钟的差距吧,说明什么?我现在已经跟上大部队,我之前是自己认为还是从30开始读,但是我马上能找到我的兄弟部队,告诉我现在是多少,大家请看能不能理解,所以说他的容错性是非常高的,我死过一次以后,我又马上回来,这个时候我以我自己为主,我还是默认值是30,但是突然第二次以后,前面的告诉我,我现在是24了,对吧,我马上OK,我明白了,大部队现在已经是24了,这个时钟算法。
36:15
安德雷斯支付底层算法已经给你写好了,所以说呢,它的容错性是要比单机版强上很多倍的,那么基于此,那么可以来保证大家如果说啊,你真的担心你一台分布式锁单机故障,那么你可以用我们的多重锁来解决,不过从我的这个使用经验,一般分布式锁单机也够用,因为你就加把锁用完了马上再解锁啊,删。新增删新增也不大可能哈,谁会像我这样为了演示而演示,这个中间业务有干到30秒钟,一般什么业务办30秒钟对吧?这个已经是很可怕,但是呢,如果真有这样的诉求,麻烦同学们可以把这个方法考虑一下,加多重锁来给大家解决好,那么来同学们这个呢,也就是我们对应的啊红锁。
37:06
它相关的面试题write some理论的。代码来源参考以及我们的一个实操案例,那么最终我们大家都清楚加锁成功,我们这个类型是个什么哈希啊,这个呢,我们已经抓图了,我就不再敲代码,得到我们的结论就是说write分布式锁绝对不可能是用string,用什么set NX命令,我们前面讲过那么多多重入锁这些续命的这些考虑特性,最终啊拷入可重入性的话,一定要用哈希,最终的话我们大家都清楚它内部产生拥用ID,你的现场ID是多少,然后可重入的次所只要有同一个人进来,那么就是一次了。好,各位同学,对于我们的red lock横锁就给大家解释到这。
我来说两句