00:00
啊,上节课啊,我们是采用这个主题边API手动的方式去实现了一个分布式数。大家感受怎么样?是不是感觉这个比较复杂一些啊,而且呢,这个写起来啊,啊确实要困难一些啊,那么来看一下有没有这种成熟的框架帮我们去解决这个问题呢。哎,那是有的哈,那这个呢,叫这个呃cur啊这个框架它呢,可以帮我们去实现对应的分式数啊。那这个跟我们原生的Java API的方式去实现有什么区别呢?那像我们这个啊,原生自己写的代码,那绘画连接呢,是异步的,需要自己处理,比如说像这个啊,用这种啊down啊。还有呢,像这个watch啊,需要重复注册啊,不然呢不能生效啊,只你看咱们只注册了一次对吧,然后开发的这个复杂性呢,肯定是比较高的。然后不支持呢,多点删除或者创建啊,如果是并发的去删除或者创建的时候,它就会出现问题啊,需要自己去递归啊,所以呃,其实呢,我们上面那个案例呢,在生产环境下啊,是不具备这种呃,实际解决生产环境问题的。
01:11
那真正在生产环境下,我们怎么来实现所呢?那我们就用这个,它是一个专门的API啊,来帮我们实现,这是它对应的这个官网地址啊。拿过来之后,嗯。不知。啊,我这个网不是很好啊,那我就先不上来了哈,那大家呢,可以自己看一下对应的这个官网相关的一些内容啊,我就不等啊,那下面呢,我们要用这个的话,需要添加上对应的依赖关系啊。这几个框架依赖把它放进来。放到文件里面。OK吧,嗯OK,嗯,这个完事之后,那接下来我们创建一个测试的包。
02:01
K3。行吧,在这里面我们创建一个类,那这个类名呢,叫这个lock test。测试。A。测试,那这个怎么用呢?嗯。用起来呢,非常非常简单啊,非常非常简单,那比如说首先啊,我们这里面啊要创建。分布。然后我再创建一个分布所。哎,创建两把锁对吧,那你第一个你先创建,那就你一个in。啊,这是它对应的一个API框架,你这个框架里面需要你来一个客户端,然后你针对某一个路径对吧,节点的一个监控哦。那这个客户端怎么获取呢?
03:00
那这个呢,我们get一下啊,Get q CU。R a rame。Work,哎,这个方法呢,没有,我一会儿呢,通过方法的形式给他返回对应的一个客户端。那我要监控哪一个路径呢?哎,我监控这个log。这可以吧,哎,拉斯这个锁啊,这个目录下。然后点Y回来,这样呢就得到了一个LOCK1对吧。那现在的问题就是解决如何来实现这个方法,对吧。Out,加回车。OK吧,拿到它啊,那在这里面怎么写呢。非常非常简单。那你只需要。嗯,这样CEO。然后。Factory factory通过工厂类的形式,然后点build点那你设置对应的参数,比如说我们设置第一个啊,Connect,你是不是也得连接到哪一个主机啊。
04:07
直接写了吧。我们要连接的是HIDE1022181啊,然后我们连接的是hi doop1032181。Op。104。2181背吧,哎,连接它,然后我再点。第二。下一个我是谁呢?哎,设置这个太out。知道吧,帽子,那这里我就直接给一个值。不2000毫秒啊,两秒钟。再回来再设置。三太棒啊,这里面也有一个。也是一个超时连接时间,再给他两秒钟。然后下面还有像这个policy,嗯,这个啊,就相当于是你连接失败之后,哎,那你隔间隔多少秒之后,我再进行下一次的一个重试啊。想从事的话呢,你可以。
05:02
又一个。哎,这个啊重试的次数,那么CTRL加T,那第一个呢,是对应的多少秒之后。同事。三秒。重试多少次呢?那这里面我重试那。是这个意思啊。OK吧,啊,是他po。按照这个策略进行一个重试。那么我返回一个值呗。那对应的这个呢,就是client客户端,我们就拿到了,那拿到了这个客户端。返回的是一个builder对吧?哎,这个builder不太对啊,我们不返回这个,我们这样在它后面呢。然后点。Build build之后,然后再返回啊,这就对了啊,然后客户端OK吧,嗯,要不然它返回的是这个build。拿到这个客户端之后呢,这个客户端是不是得返回啊。
06:01
对吧,哎,返回掉。OK,那前面呢,这个客户端点start启动。客户在。OK吧,哎,这个是创建,创建完之后启动,启动之后我可以打印一句话。说呀,这个主keepper。启动成功。对吧,诶这个就是这块的一个描述啊,获取到对应的一个客户端链接。行,那这一个呢比较复杂,那下一个我再创建一个,这就直接拿过来。这呢,就变成老板。啊,现在呢,是相当于有两个客户端对吧?哎,去访问对应的这个根目录下log在里面。那接下来就创建线程呗,创建多线程。又一个。Red。
07:01
又一个。对吧,然后包给它start。那在里面怎么写呢?第一个log是一点,那我这里面要是获取到数就是A块。或者把手。犯下。这是获取到手,获取到手打印一下。线程一。获取到数对吧。获取到之后,我再来演示一个什么事呢?哎,我再获取一下,那它会出现什么情况。哎,它有一个锁的一个重入的问题。比如说这里面说县城。一。再次。过去。到手。可以吧,哎,你说没退出的时候,我再获取一次。然后。睡一会儿。点sleep。那我还是睡这个五秒钟吧。
08:03
OK。然后呢,那接下来我就要释放手了啊,那一点释放。这是释放一次。那这个就是so释放。是吧?哎,石方说,然后我再来lo。一点,我再释放一次。那这个呢,叫so。建成一。再次释放。哎,我说这连续入两次,然后释放两次,那这又是一个什么效果呢?我们一会来看一下啊,然后下面呢,我再来看线程二。那这里面我都改一下,改成线程二啊二二。啊,这里面描述。行,那现在呢,就已经改完了,改完之后我们来演示一下,看看是什么样的一个执行顺序啊。
09:09
现在呢是线程二啊,线程二获取到所对吧?啊,然后再次获取到所,然后线程二四方所,再次四方所啊,线程一获取到所,然后再次回到数,相当于是是不是可以有一个所的重入啊啊然后四方数四方数,你看同一时间线程一它可以。两次进入是吧啊。啊,这个呢,就是通过这个框架的方式啊,帮我们实现这种分布式锁啊,真正在企业开发的时候,肯定是要用这种成熟的这种框架啊,不会自己去手写啊,因为呢,这里面考虑的点呢,啊是非常非常多的。
我来说两句