00:00
在呢,我们就看这个节点的创建了啊,那其实就这个加锁过程,那么加锁过程呢,咱可以其实给它放在这个方法里面去就可以了。那么然后呢,这个地方啊,可以调雷点开lo方法。啊,就搞定了呀。那么然后在这里面呢,我们就关联性的实现这个方案就可以了啊,那创建节点其实很简单,就this点点上然correct这个创建节点哈。咱们创建在这个根基点下面的啊,来一个root pass,加上一个斜杠,在这里加上我们这个锁的名称就可以了。那么这个所的内容啊,咱可以不用去指定来一个,那那么然后这个权限呢,还有一个ids,然后依然是开放权限。啊,然后呢,节点类型啊,是create model,我们可以创建一个临时节点。如果我们要出现永久结点的话,就可能会出现什么情况,可能会出现死者问题。那比如说呢,我这里的加锁已经成功了,我创建了一个永久节点。
01:00
那么然后呢,我还没来得及解锁呢,没来及解锁呢,我担心这个应用程序呢,就挂掉了。那么你可能就永远都没有机会解锁了啊。啊,最终呢,导致思索。那么以前在里面我们就遇到这样一个问题,那怎么解决呢?咱们是给咱们这个K啊添加过期时间来解决的。那么K报这个Z节点啊,它是没有过期时间这个东西的,它最好的就有这个零时节点。那么一旦我的当前这个客户端,当前这个服务器宕机了,那如果是临时节点的情况下,那链接就断开了,那链接断开了,咱们节点呢,自然而然的就已经释放掉了。所以咱这里要创建临时节点,以避免客户端程序宕机带的四个问题哈。OK,那么是咱们这里个痛点节点。好,那么这呢为了啊,这个呢是为了啊,防止为了防止防止。咱的客户端啊,咱的ZK客户端什么程序获取到所之后,然后呢,是服务器宕机带来的带的死锁问题啊问题。
02:15
那这里的话呢,我们创建的是临时临时节点。那么一旦我们的服务器宕机了,我们连接就被断掉了,那断掉之后的话呢,这个临时机能呢,就自然而然的就释放掉了,那就不会呢啊出现搜索问题哈。好,那么这里呢,咱们呃,创建出来之后呀,你这里呢,会有异常啊,如果你推理成功的话。那么是不会有异常的啊。如果出现异常了,说明咱出险失败了,那如果没有异常,就说明出现成功了,咱可以成一个出,那如果有异常的情况下。我们可以来一个啊,Try catch,那么这个catch啊,我们可以获取最大的那个异常啊,来一个嗯,Exception就可以了。
03:02
啊,然后呢,呃,咱这里呢,可以进行重试啊,重试呢,咱可以去睡一会来进行重试,咱们是slide点上sleep啊,比如说我就睡一个80毫秒,然后起来重试一下,那么重设单就是地位调用嘛,然后再来一个v.try lock。来地位调用一下啊,那么这个地方呢,我们就可以来一个KK。处理一下这个异常。那么最后呢,呃,咱们如果啊有其他原因,那导致程序提前结束了,咱可以一个false啊,False获取所失败呢。那么正常来说的话呢,咱这里呢,会一直进行重试啊,直到回到死为止哈。啊,它会阻塞在这个位置,一直进行地位调用。那么解锁的话呢,其实就更加简单了啊,我们只要把这个C基点删掉就可以了,那么this.the keep点上,然后是delete这个方法。
04:02
那我要去删除啊,这个root。删除这个root,那么加上这个呃,斜杠,加上咱们的这个lock name。A lock。啊,把这个节点呢给删掉,就相当于释放锁了哈,那么我们再去删这个节点的时候呀,我们不关心版本号,咱可以来一个负一啊就可以了,那么有异常呢,我们可以来一个啊,Try catch。啊,处理一下。好,那么最终的话呢,咱这加锁解锁呀,就已经封装好了。那分装好之后呢,诶,我们在这个代码里面呢,也可以使用它了啊,这地方报错报什么错呢?哎,这个有个东西啊,它不存在就删掉。好,那么下好之后呀,我们可以去重新启动一下咱们这两台服务啊,来看看呢,能不能嗯,解决我们那个库存超卖现象啊。
05:01
啊,咱可以呢,把那个客户端呢,也给它打开。啊,然后呢,连上我的这个好,现在我这个库存呢,给它改成这个5000啊。改成5000,然后来保存一下。那保定好之后呢,来看咱这两个服务,哎,启动的时候呢,就已经报错了。他什么呢?他说这个10086啊,被占用啊,然后呢,还有这个10010也被占用。啊,应该是已经停掉了吧,来重新启动一下试试啊。好,已经启动起来了,两个服务都启动起来了啊,刚才不知道什么原因被占标了。那我们啊,这块启动起来之后呢呢,立马就会到这个组keep链接了,啊这个呢,也已经汇到客链接了。那此此时呢,可能是我们项目启动的时候呢,可能会稍微慢一点,但对用户的使用来说啊,是没有影响的。
我来说两句