00:00
下面我们来看一下我们的这道题目。请问你知不知道什么是分布式所?注意。这跟我们以前讲的GOUC那个体系下面的针对于单个GVM加的锁,就是那些SYNCH的lock and lock是两回事。换句话说,请同学们一定要有这个概念。第一种,我们是在GVM。缠面的。加锁这一波OK吧,第二种我们是基于分布式微服务。架构。拆分后,各个微服务之间。为了避免冲突和。数据故障。R。加入的。一种锁,那么就称之为什么分布式锁?这是两个不同的东西,请同学们务必要有这个概念,OK吗?好。
01:05
一个是说白了就是什么单机版的锁,第二个分布式的锁,以前我们说的基于M层面这种加锁,就是我们刚才所说的属于什么单机版的锁。OK。好,这是第一个小概念。第二个。有哪些实现方案?一般而言,我们要实现分布式锁。按照你公司的业务。简单的和复杂的主要呢是分成三种,第一个MY可以实现,第二个zoo keeper可以实现,第三的我们的。他们这三种技术都可以作为分布式。那么接下来啊,我们来看看。请你谈谈你对分布式所的理解,那么说明什么?现在一般的啊。互联网公司啊,大家。都习惯。
02:00
用red做分布式锁,包括大家如果做了孟庆祥老师,雷锋阳老师,徐静博老师的电商项目都清楚,那么我们基于red来做的分布式锁,那么这个时候我们是不是有个red red分布式所这么一种思现天上飞的理念必然有落地的实现,这个时候我们是不是用过一个东西叫red?上这么一个,然后呢,调用它的洛克。按落方法来实现了我们的分布式所,那么这些算是前情概要和复习么?再次强调,这些东西我默认为大家是懂的啊,前面都已经说过了,我的大场面试题第三季这个。这些题目的话,是要求大家有一定的工作经验的哈,一到三年,那么这些东西就是目前主流的,我一说你就应该懂,有这些背景知识以后我们呢都清楚。上T的时候会有哪些问题等等等等,他咱们验试的过程当中,他会有很多很多很多的问题来问问你,那不妨同学们。
03:03
来看看关于分布式锁。除了拿来做缓存的话,你还见过基于red的其他什么用法?那么是不是就是我们前面所说的,可以拿来做新浪微博交友关系,可以拿到做购物车,可以腾讯微信朋友圈点赞,喜欢的订微信公众号订阅等等。来做分布式锁的时候有哪些需要注意的问题?这个非常非常难,那么实不相瞒,到后面我会先写好一个在你看来是正确的不会有事的一个程序,然后请你来挑我的bug,你要有本事把我的这些bug全部挑出来,那么你应该在高并发多线程的编程基本功是过关的,OK,好,这是第一个。第二个,如果是单点部署会带来什么问题?好。那么接下来我们来看看。连续来问,如果是单点部署的话,那你准备怎么解决一些单点问题呢?那么也就是我们给大家整理好的这些问题。
04:06
集群模式下面我我们都清楚,Red一般你不会去部署单机版,最差的你也是要备一个什么一主二从,然后是一个无人值守的话,再加个哨兵,那么一般我们都会用集群,那么就是什么。最经典的是不是三主三从啊,那么六个OK,那么这个时候如果在这种集群模式下。的这个分布式锁会有什么问题?在电商的简历上面,你介绍一下red lock,你该不会跟他说是康师傅红烧牛肉锁吧?不是红锁的意思听懂了吗?Red布所的简写,你简历上写了你用过。请你谈谈你为什么要用这个,面试官并不满足于你说好我用,我们公司呢是用,反正我就API级别层面的调用洛克,洛克就解决了,那么在这个之前我们都清楚。Red是一种理念,天上飞的理念,有落地的实现,有很多种技术,包括Python。
05:06
Go Java都可以有各自的分布式所,那么对于Java而言,我们用,那么在这个时候你怎么知道要用三,但它之前你有没有自己手写过一个分布式所,那么再来看。分布式锁如何续期?看门狗听说过吗?所以说呢,Re,分布式所是现在必考必问的一个通道,OK,那么这呢,我们呢,大家呢,再来回顾一下简单的哈。首先我们大家都清楚,现在我们的互联网行业直接上过来一定是什么基于分布式,基于分布式的微服务架构,那么现在呢,将会一个请求过来了。他这儿呢,前面呢,一般会挡着一个做负载均衡的。管分配的是是不是我们的NS啊好,那么NS过来了以后,后面的话呢,可能是两台机器,可能是四台,可能是八台甚至更多,我们来个最简单的啊,假设我们这儿就两台机器,两个微服务。
06:12
那么一个微服务假设是1111这个端口号,第二个微服务是2222OK吧,那么好,这个时候的话呢。我们在后面又会跟着一个。我们的数据库,这个数据库是不是我们的MYSQL可能吧,也可能我们各种。任务的话是我们的,那么这样的话呢,高并发的情况下,N打出去了以后,两台11112222微服务如果处理不好,那么是不是这样的话会导致都把它落到了同一个节点上面,会产生数据冲突。会出现我们在电商里面最可怕的是不是超卖这种现象啊,所以说呢,我们有必要把这种请求需要你在这儿不好意思啊,给我做一个。
07:04
排队。听懂了吧,那么red由于天生它是单线程的,OK,那么你每一个请求过来,走到我这儿,Red的话,我们这儿谁先到谁先在ready上面建一把锁,用完了你再把它删掉,下一个线程也是这样。删掉了以后,我知道这个key没有人在使用了,我也去建这么一把锁,表示我正在使用,那么完成我的业务逻辑,用完了再删除,那么这个就是我们分布式所的由来,不要忘了我们前面复习string这个类型的时候也提过一句,我们是不是说过一个叫set NX,听懂了吧,如果我们。自己手写就需要依赖这个set NX命令加我们的R脚本,OK,这是我们自己的,那么再加上啊,如果你是。克拉斯,这样集群模式啊,我们自己手写的在集群模式啊,支持并不好,那么终于由我们的这样的一种小工具出来,这样的一种理念和组建出来,给我们完成了这些任务,虽然是red上也不是特别100%的完美啊,那么在除非你们公司是京东量的超高并发下面。
08:17
天猫啊,淘宝一般的中小产用个ready够用了,OK,那么这个就是我们的,算是一些前勤知识的复习和总结,如果听到这儿懵逼的同学,那么上硅谷的孟庆祥老师,徐静博老师,还有雷凤阳老师所讲的电商项目,那么请你呢,回去呢,看一下到杨哥这儿面试题了,由于我们的时间关系,我不可能再给你点点滴滴的从零开始默认啊,你是懂了这些东西,好,那么接下来。杨哥呢,将会带着大家,你们现在在工作中解决。这个问题都是用RED3,那么为什么要用这个分?分布式所到底有哪些can?请你谈谈你在使用分布式的时候遇到的can有哪一些?
09:02
那这些面试过程当中是需要你说这个过程,而不是跟人家面试官说我们用red就可以解决分布式组的问题,完活交卷了,你根本找不到工作。很难进大厂,好,那么接下来前秦概要完成了以后,我们开始。从零开始搭建一个我们的程序,然后给大家演示分布式锁的各种坑和来龙去脉,最后我会给你看我写的代码肯定是能跑通的,对吧?上面测试通过以后,那么这个时候请大家一起来找茬,一起来吐槽,那么你来看看。这个里面有多少坑在等着你?好,那么同学们,我们的前期的铺垫和题目先给大家说到这儿,那么接下来我们动手构建一个编码,构建一个我们的案例。
我来说两句