00:00
各位同学大家好,接下来我们将为大家介绍高阶篇的第八章手写write分布式所,也就是我们常说常见常考面试中的重灾区red分布式所。那么注意第八章和第九章redlo红锁算法和底层源码分析,这两章是1R2221的事,这个主要是工程案例经验和落地代码,而这个主要是我们实际上所用的red sun红锁,对吧?康师傅红牛锁,我们在课堂上戏称原来也聊过这个的底层圆法分析和给同学们的深度讲解,所以这两章一定连起来看,你要么就别学,你要学八九两章,请整体一套拿下,谢谢。好,接下来话不多讲,植入主题,杨哥老规矩,什么是right分布式锁?
01:00
好,第二个能干什么?怎么出现呢?解决了哪些痛点?是不是只可以用register做分布式所?别的行不行?如果别的行的话,比如说my keepper,那么最终你为什么要选择了用做分布式所?好,带着这些问题,那么请再次强调,这个问题100%面试重灾区,请同学们务必掌握,来老规矩,大场面试题说话,那么各位股粉返回回来的面试题。第一个register除了拿来做缓存set k1 V1 get k1以外,你还见过其他register什么用法?那么自然而然,Register是不是还可以用来做?分布式数好,那接下来我们来总结一下这道题目,各位同学可以探讨,从第一天跟着杨哥学到这了,你们自己思考一下,Red除了拿来做缓存对吧,挡在MY前面做它的带刀护卫,你还见过red什么用法?我暂停一下录屏,请同学们把答案打在各自的上课对话框上面,谢谢大家的回复啊,部分同学回答的不错,小白篇呢,也没有白学,那么来我们简单的做个总结啊,这道题目呢,也被问过,首先各位同学。
02:22
数据共享分布式session可以吧,假设ABCD4个微服务,它有些公用的数据,有些数据是各个微服务自己带着的,那么有些需要共享的,比如说像分布式session这样的东西,咱是不是可以存在red,在这台red机器上面,谁需要谁去取,来进行续传,来进行共享,那么第二个就是我们本次要着重讲的分布式锁,第三一个全局ID。第四一个计算器点赞未统计对吧,Ma。购物车那么轻量级的消息队列,注意啊,我们也说过了,List和stream这两个类型是可以作为消息队列的啊,轻量级的啊,当然如果贵公司真实业务上的话,还还是建议用卡夫卡rocket MQ和MQ对吧?毕竟专业的事情交给专业的中间件去做,那么再来抽检。
03:19
点赞、签到、打卡,那么对于我们的sat集合里面的差集、交集、并集对不对?可以在社交上面用户关注可能认识的人,推荐模型等等,那么再来热点新闻,热搜排行榜,Z set1大堆是吧?包括什么geo类型的,我们讲过附近的妹子啊,附近的加油站,附近的核酸检查点,美团附近的酒店等等等等,那么red在当今大厂里面,它的用法广度和深度是越来越重要,OK,那么这道题如果人家问你red除了拿来做set ke1 V1get k1这么一个缓存的话,我希望你。背五个给你哦,他可以拿来做好多,最起码回答我给杨哥个面子点赞嘛,对吧,微信朋友圈点赞,这个可以做吧,抽奖嘛,这个可以做吧,对不对,随机出个数字,所以呢,这些呢都说过了,请同学们务必用心,OK,你呢一定要该记记,该背背会说。
04:19
不要看完了一遍以后啊,懂了说一下,那假设你这个面试题碰上这样了,能不能倒出来点东西。所以不要假装努力,因为最后的结果不会陪你演戏,一句话不是看完一遍就行,抓住重点能自己说一点最好动手做一下好。接下来ready做分布锁的时候需要注意的问题有哪一些?那么这个呢,我们会详细的写八个版本,甚至九个版本,带着同学们一点点的去抠,参考我们的guc里面的aqs啊。锁的这个定义规范和要求来考虑,来告诉大家写一把锁,你你觉得用很很简单是吧?哎呀,有什么了不起的,杨哥洛克安洛克加锁解锁就完了,那请问一下。
05:11
所得超时呢,所得重试呢,所得可重入性呢等等,参考我们勾UC2022版啊。AQA4,那些规范你如何写一个再来你们公司自己实现的分布式所是否是用set NX命令实现的?人家直接就问明说了,你在网络上看的大部分帖子都是用set NX做的,这个是不够的。我不能说他错,但他最多写到了85份,这是不够的。真真正正大厂高频发的程序是不可以用set NX的。它还不够好,那么请问这个是不是最合适的?不是你如何考虑分布式所的可重入问题,好,那么这个请问该怎么考虑?为什么?杨哥到后面有一张叫redlo的算法和底层源码分析好,把面试题说白了,带来一些问析,如果red是单点部署,会带来什么问题?第二个,那你准备怎么解决掉这个单点问题很经典,如果你所有东西,尤其仅有一台red,你100%就挂了,对不对?
06:19
如果你加锁的那个T也在这个单点的服务器上面,它已挂了,那么大家是不是就没有锁了?那么你准备怎么解决这个问题呢?那么当然是上red集群,可是集群下面也有问题呢,比如说主从模式下面一组二从我们用red集群CP方面有没有什么问题呢?那么来同学们,我们也简单的说一下这个东东,OK吧,好,同学们。我们大家都清楚啊,一般我们大家最经典的啊,就是不管你是任何一家公司,大中小微。如果你们公司的red就是一个red单机,那我个人觉得你可以离开这家公司了,这家公司的技术经理或这家构师一定是水货最差,给个面子,不敢说三组三从,Red集群起码是不是也得是一主一从或者一主二从吧?那么当然我们前面是不是介绍过哨兵和red,拉斯和red集群两个,你二选其一,总要用一个吧,那么大家都清楚啊,我们前面强调过一个东西叫CP原则,那么切记,Red集群是AP,听懂了吧,它是高可用的,那么这个时候如果说red单机它保证的是C,那么主要是什么一致?好啊,Red你们看过一张capp的图,一定要分清楚red在CP里面,说清楚了,Red集群是什么,Red单机是什么,把这个给我说明白了,OK,好,一个是集群啊。
07:48
一个是单机,首先red单机,它用任何单机的东西,它没有办法保证AA是高可药,作为经点,我把电源拔了,它有个毛线高可右同意吗?所以说它主要保证的是一致啊,它没有办法保证高可用高可的一定是AP,所以说我们在介绍的时候要分两种情况说单机。
08:12
和集群分别是什么?那么接下来red集群它是AP高可用加分区容错性,它有个什么问题呢?我一大堆请求过来了,好,Ready,高可用,快,如果我在这儿建立把分布式锁,在这儿写了一把锁啊,正常情况下是master。是不是同步给我们的SLAVE1和二没问题吧,各位亲,那么。岁月静好的时候,我这写了个数据同步给S1S2,写了个数据同步给S1S2没问题,但是和zoo keepper集群的区别是。Zoo keepper集群是全部的节点都收到这个信息了,整体一致性成功了,他才告诉你搞定,所以zoo keep集群它是CP,但是red集群的是只要主机master收到了,马上回复给请求搞定,有数据,正常情况下立刻同步给S1S2,但就怕这种情况。
09:24
只有master收到,然后呢,网络断了。马奇死了,对不起,刚才。这笔账我只写进了master,按正常常规的途径,Master为了保证高可用,迅速就告诉对方已经收了。但是呢,一回复给对方了以后,他自己马上死了,还来不及把我的信息同步给我的从击A1和S2,那么好在这块不是有哨兵或者克拉集群的容错吗?好,哥哥,你死了没问题,一边去,咱是不是演示过一主一从或者一组二从,相应的silver变master上位,那么这个时候旧的这台silver啊,比如说一组假设就单是一组一从吧。
10:17
S1是不是重新变成了我们的M?弟兄们,新的master这个没问题吧,同计上位,但是对不起,老的这个收到的这个数据还没来得及同步给我,我现在上位了以后,人家客户端又来取了,对不起。在我这儿查无此数据,查无此凭证,那这个时候毛了,我刚才存了呀,存的这个人死了,没有来得及同步给我,我上位以后我根本不知道,那就产生了分布式系统锁的相关故障,这是很要命的,所以这种问题也是在集限下面会碰上的,大家一定要小心,那么自然然我们呢,工作当中是不是就会用我们的redlo也记red red sun这个东东来解决对应的问题,OK,所以这些问题是非常非常关键和重要,那么再来right分布锁如何续期,时间要到了,兄弟加个钟你怎么加?
11:26
有什么考虑,有哪些问题?请问watchdog看门狗你知道吗?那如果这些问题啊,你现在呢是一片空白,我敢保证你去应聘大厂是非常困难的,那么各位股粉,各位同学,希望大家呢,八九两张跟下来,我们会花很多的笔墨给大家重点介绍这些模式,这些设计,包括写分布式所需要考虑的问题,详详细细给大家自研一个手写red分布式所,当然我们工作中用RED3OK好。
12:04
面试题我们就说到这八九两章,整完了,咱们再来回头看看这些面试题。
我来说两句