课程介绍
课程目录
用户评论
课程介绍
课程目录
用户评论

你将获得

  • 掌握某些知识点
  • 学会某些技巧(或思路)

教学服务

  • 1v1专属答疑服务
  • BAT专家面试辅导

讲师介绍

老师头像

诸葛

专业
图灵课堂联合创始人,多家一线互联网公司研发经验,曾就职于唯品会等一线电商互联网公司核心岗位,参与并主导多个高并发的互联网产品研发,对大型分布式,高并发及微服务架构有非常深入的研究。
老师头像

【图灵课堂】萌萌

专业/细心/热情
目前从事在线教育两年的时间,帮助学员提升技术与薪资。给学员进行更好的问题指导。

课程详情

我们图灵学院晚上8点有邀请到前美团、阿里、京东、国美、谷歌等大牛在腾讯课堂做技术分享,直播答疑,这个是直播地址:
https://ke.qq.com/course/230866?flowToken=1016835
直接点击链接进去免费订阅报名后
需要领取课前资料的同学可以加群联系萌萌或者艾琳老师领取资料
给你开通直播观看权限,发送学习资料哦~
加群即可领取如下Java架构师资料学习包  群号:1019734797 



基于Redisson框架实现分布式锁视频文稿

看一下,比方说我不知道这个框架有没有同学说过叫ready,有听说过的给老师打个一,没有听说过的给老师打个一,就是市面上面有一个叫red is的框架,有个ready的客户端框架叫radish,听说了给老师打个一,没有听说过的打个零,都给朱老师的反馈,那实际上这个ready呢,它就是它也是一个red is的Java客户端,跟我们结的很类似,只不过这个客户端在分布式场景下面用的更多一点,你比方说你看,你看一下这个radish的一些这个客户端接地这个red is客户端很多功能,它的功能基本大多数都是分布式场景,下面你看Dis tribute Dis tribute Dis tribute Java Le对分布所对等等等等各种分布式场景,对不对,也就是说dispute Java service对不对,就是这个right的客户端,它可以帮我们解决分数乘下面的很多的问题,比方说我们今天讲的这个封锁,他就可以帮我们轻松的实现,那怎么来实现呢,我带你先快速,实现一遍,然后再带你分析它底层的原理,其实你要用ready来实现我们刚刚说的那么复杂的那个逻辑,它实现起来非常简单,那我们要既然要用radish,这个Java的ride Java版本的red是客户端对不对,其实跟用ready的,用我们的JD是基本上差不太多,你肯定有一个依赖,对不对,比方说我们这里有一个,加了这么一个依赖之后,然后干嘛,我需要在我肯定有了这个依赖,你肯定要干嘛,要把它初始化对不对,有这么一个regular客户端,你要给它初始化对不对,好,那么在这个地方就敢说实话,那我只用十分不同的方式,用一个APP,并注入到我们十分容器里面,非常非常简单,对不对,一样的,这个跟阶级的初始化方式一样,差不太多,对不对,你要连接的哪个red对不对,操作哪个的对不对,当你可以用有如果是单机,单机的那种right是这么来念,如果是集群radish它都提供,或者说哨兵模式他都提供,那这些都是ready的哪些APIOK,最终,把这边配置设置好之后,通过reg.create加上你这个RAID的配置,它就会帮你创建一个ready的客户端实力,有了这个实力注入到十倍容器里面的APP,并网时,容器里面注入,注入一下,注入之后,那时容器里面就有这个reaction,那我当然就可以auto well直接引入来使用,我们来看一下这个read怎么来使用,其实非常简单,首先,先拿到一个叫做锁的对象,那这个锁的对象他是这样,这样子你还是要把这个所的名字给他弄进去,OK,有一个ready上锁,OK,拿到这个锁对象,注意我这时还没有加速,只是先生成一个琐对象,然后在哪个地方,在这个地方,在这个地方我执行一行代码叫做落单,OK,执行这一行代码搞定,OK,说白了这一行代码就会加速,那然后最后当然你加了锁,最后肯定要在这个地方释放所,对吧,那当然我这些个乱七八糟的代码就不,之前那些代码都不需要,这些代码都不需要了,我告诉你这些代码都不需要,这些个代码都不需要了来来把注释掉,也就我们刚刚说的那些所有的代码都不需要,那上我核心的代码,我告诉你只有这一行加这一行,再加一个是方数,我给你解释一下这几行代码什么意思,它实际上是这样子的,这几行代码这么是这么回事儿,我给你稍微解释一下来,我把先把它美化一下,好吧,美化一下,那实际上正常代码这样我先获取在race那边,先在race那边先获取一个锁对象,先获取一个right的锁对象,但是我这时候还没有往right里面去加这把锁,那我当你看所对象我知道还是给她设置一个K,对不对,然后当我掉了ready的这个锁对象之间的这条命,我告诉你这条命令他底层做什么事情,我看底层错了,就这件事情做的就是这件事情,OK,就相当于做了一个JD式的一个点,Set n X,你可以把它这么来理解的,一层就做做了这一行代码的事情,OK,也就是说注意,有的同学说,他说那这个锁锁的操作时间30,注意它默认就是所30,说白了这样的代码就是他就在reddit那边底层设置一个这个key和value设置是类似于像一个它自己生成的一个客户端的线程ID,然后再把这个K给他设的超时时间默认给他设置了30秒,当然它还有一些其他API可以把这个时间让你自己去设置,OK,就这个意思,那实际上这一行代码做了,那时候假设我有多个线程来请求这一行代码,我告诉你只有第一个线程能够拿设置成功这把锁,因为底层逻辑就这就这个骂,说白了只有第一个线程拿到把手往后面去执行