00:00
好,同学们,搁到这儿,我们从一一直一直一直写到了我们的。9.1版的这个代码算式把分布式所给同学们做了一个详细全面的介绍。那么从单机版到我们最后的。用为了避免集群环境下出了问题,我们不用我们自己写的,用官方推荐的,那么这种情况下呢,给大家讲清楚了,你看这是Java实现的吧。给大家讲清楚了,为什么要用这个,那么你在面试的过程当中,人家会问你删除key的时候会出现哪些情况,OK,那么接下来我们来说一下。时间的关系,我们呢,没有再带着大家说red它底层的源码解读,如果你想了解同学欢迎。到最后来上硅谷大厂高阶班找杨哥,这道题目也只讲了70%,还有30%啊,我们就是讲软件上上的源码解读,以及它的什么续命是怎么续的,对吧?我们这儿是不是说过一个东西叫缓存续命嘛,对不对,如何续期的这个问题,好,这是第一个,那么第二个呢。
01:13
到9.1版的时候,基本上我们已经算是解决了我们的问题,但是呢,由于时间的关系,我不能反复的压测,一直没有给同学们呢压出来。只写安洛克,没有判断的,这种情况有兴趣的同学可以自己去压测,你做的多了以后一定会碰到这个故障,那么解决方案,那么请大家注意,不要直不愣登的直接上来安洛克啊,现在你直接用安洛克,基本上不会再出现超买超卖的现象了,但是呢,汇报。这种异常,那么为了避免的话呢,还是请同学们呢。按照杨哥的建议,给你的程序健壮一点啊,加上这么一个判断,好,那么同学们搁到这儿了,以后如果还想深度解读的同学,欢迎到后续来找杨哥,我们继续再上硅谷一起交流,一起学习,那么这些也是我个人的一个思考和总结,如果你有比我更好的方案,或者你们公司啊,因为在座各位都是这个,呃,在公司里面了,也许有比我更好的方案的同学也欢迎来和杨哥交流,OK,仅供一个参考啊,不敢说我就是什么绝对牛逼,绝对权威,不可能因为技术的解决方案非常多,可能我也有考不到考虑不到的盲区,或者说是你有比我更好的方案,欢迎大家给我发邮件啊,到地铁上呢,来找我,那么给我来了以后确确实实有收获,这样的话呢,我们教学乡长一起交流,共同进步,好,那接下来老规矩理论实操小总结,我们回顾一下我们ready分布式所将会出现了哪些问题。
02:44
第一波,那么同学们我们都知道,写完了以后单机版二话不说,高并发多线程一定要上。Size或者根据你的业务原创,你单基版上是OK了,你上按分布式。怎么着?不OK,为什么?因为你只要是改成了分布式方式的部署,那么这个时候是不爽的,那么接下来我们呢,只要上了N进的分布式的微服部单击锁S不好了,所以说我们继续我们取消了单击锁S上分布式,讲清楚了为什么要用SNX,主要就是加什么过期时间,但是呢,且SNX呢也会有一些要求,第一个。
03:27
你加了锁,没有释放锁的话会出异常,可能就无法释放锁,所以加锁的话好说,解锁的话必须要在代码层面放在final里面示范锁,但是呢这个呢,都是你一切程序运行的情况下,我们要考虑宕机了。部署的微服务代码层面根本就没有走到finally这个代码块,没有办法保证解锁这个key没有被删,所以需要有过期时间。说白了,正常情况下。我们呢可以手动删除,但是异常情况下,假设你的Java程序断了你red服务器上面这个锁,你是需要有第二道保险,让自己带一个过期时间把它删掉,否则一定会出严重的问题。那么接下来我们继续。
04:15
分布式锁的话,加了以后增加了过期时间,我们又必须要求他们两个必须是什么?同一行,就是加锁和过期时间必须是一行的原子操作,那么最后我们告诉自己,自己只能删自己的,防止张冠李戴,A删了BB删了C,一删了二,二删了三,不OK,所以说避免这种情况,我们在删除的时候干嘛也要保证我们两个。必须是判断了以后是自己的才能删除,那么再结合后面我们的集群,再结合我们的red,它由于什么主机淡了,还没有来得及异步复制到同机,同机上位以后导致账单失效等等的一系列问题,我们最终觉得呢,自己写的不OK,我们上reda来进行落地的实现,上reda几乎可以解决我们的超买超卖现象,但是在unlo的时候,希望大家严谨加这么一个东东,保证程序的见状,避免出现删的不是自己锁的这种故障。好,那么同学们对于我们red分布式所就给大家介绍到这儿。
我来说两句