分布式锁的一些细节问题,值得收藏

作者&投稿:长沙秀 (若有异议请与网页底部的电邮联系)
~

原文

我看在技术大群里面有人问分布式锁问题,说是被面试官各种刁难,我是实在看不下去了,面试官意思很明确,你们有造火箭的经验吗,有的话来他们公司造自行车,没有的话:今天面试就到这里了!

但是说实话面试官没必要因为这个问题继续追问,没啥意思,但是又不得不问,确实有些企业用到分布式锁了。

没办法,逼迫你必须得背会它。

接下来就说下群友面试碰到的问题,因为候选人可能自己已经掌握了实现分布式锁的原理,但是被面试官问到细节可能就不清楚了,因此给大家讲下这块。

问题-1 如果setnx执行成功,但是在expire执行的时候redis节点宕机了,在这种情况下,锁不会被释放,导致死锁。解决方案:

问题-2 如果expire时间过短,但是任务执行时间过长,那么锁会因为过期而被删除,其它客户端可以重新获取锁。在这种情况下,多个客户端同时获取到了锁。解决方案:

问题-3 如果expire刚好过期,此时删除了这个key,那么当另一个客户端进行获取锁的时候就会抢到锁,那么这个时候当前释放锁的客户端会执行最后的del命令把别的客户端刚才设置的删除了,这个时候就破坏了资源的并发操作。

解决方案:

<pre data-tool="mdnice编辑器" style="box-sizing: border-box !important; margin: 10px auto 1rem; padding: 0px; outline: 0px; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 12.25px; overflow: auto; display: block; color: rgb(33, 37, 41); max-width: 100%; overflow-wrap: break-word !important; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: rgba(170, 170, 170, 0.48) 0px 0px 6px 0px; border-radius: 4px;">`1. uuid = gen()

问题-4 假如redis主节点宕机,主从同步延迟或者有问题,那么从成为主之后,客户端就会重新获取到锁,这样也会并发不安全。解决方案:

问题-5 如果redis发生脑裂,那么也会发生多个客户端并发持有多个锁的问题,所以redis为了解决这个脑裂问题,引入两个配置,只有合理配置这两个参数就可以尽最大努力避免脑裂,细节大家下去自行研究哈。

只要线程成功获取到锁,就会启动一个watch dog,它是一个后台线程,每10秒检查一次,如果线程一持有锁,那么它会不断延长锁的生存时间。因此,Redisson是可以解决过期时间到了但是业务还没执行完的问题。

Redlock核心思想是这样的:部署多个redis master节点,确保它们不会同时宕机。而且这些主节点之间是完全独立的,它们之间没有数据同步。同时,我们需要确保使用相同的方法来获取和释放锁。具体获取锁和释放锁的步骤大家下去自行研究。




布氏粘度计安装方法
在安装布氏粘度计时,首要步骤是确保供电电源满足仪器工作需求,且接地端有可靠接地,遵循国家相关规定。安装环境需选择在无腐蚀性气体、无强电磁干扰、无振动的工作台上,以保证设备的稳定运行。紧接着,将带齿立柱旋入主机底座的螺孔,齿形面朝向正前方,用扳手固定,防止立柱转动,具体操作可参照图2。...

急急急!!!求各大公司招聘的机械类笔试题!题型和答案
答案:答案如下:1.细实线 2.右侧 3.主要轮廓线与水平方向成45度 4.允许尺寸的变动量 5.金属键 6.各向异性 7.727℃ 8.2.11% 9.索氏体 10.回火矫正法 11.正火 12.渗氮 13.渗碳 14.100 15.传输能量 16.钢结硬质合金 17.ABS塑料 18.氧化铝 19.聚四氟乙烯 20.金属材料 陶瓷材料 高分子材料 21.化学分析...

支付宝布氏鲸家园植物怎么解锁
1、首先在手机上打开支付宝,在支付宝首页界面,点击打开神奇海洋。2、其次在神奇海洋界面,点击左上角的海域,并选择布氏鲸家园。3、然后在布氏鲸家园中选择需要解锁的植物并点击出现培养选项,点击培养当培养值达到10的时候即可解锁植物。

有关恐龙的资料
肱骨有低矮的三角嵴(Deltopectoral crest,让胸锁三角肌肉附着的部分),长度约是肱骨的1\/3到1\/2。肠骨后部有个突出区块。胫骨末端边缘宽广,有个往后的凸缘。距骨有个明显上突,与胫骨契合。除上述几个特征以外,大部分恐龙还有一些共同特征,但是因为出现在其他主龙类,或者不存在于早期的恐龙身上,因此不列为恐龙的共有...

关于鲸的资料
须鲸科 Balaenopteridae 如:蓝鲸(蓝鳁鲸,剃刀鲸)Balaenoptera musculus、小须鲸(小鳁鲸)Balaenoptera acutorostrata、座头鲸(驼背鲸,大翅鲸)Megaptera novaeangliae、长须鲸 Fin whale、大须鲸(鳁鲸)、布氏鲸(鳀鲸) Bryde's whale、小布氏鲸Balaenoptera edeni、塞鲸 Sei whale 体型巨大,其中最小的种类体长也大于6米...

科学家的姿料
英国数学在一个时期里闭关锁国,囿于民族偏见,过于拘泥在牛顿的“流数术”中停步不前,因而数学发展整整落后了一百年。 应该说,一门科学的创立决不是某一个人的业绩,它必定是经过多少人的努力后,在积累了大量成果的基础上,最后由某个人或几个人总结完成的。微积分也是这样,是牛顿和莱布尼茨在前人的基础上各自独立...

奶牛引种需要注意哪些问题?
购买奶牛前,应到售牛地区深入调查,了解该地区是否爆发过布氏杆菌病、结核病、口蹄疫等传染病。如该地区尚在疫情封锁期,就不要从该地区引种。(2)避免调包。如果外购大批量的奶牛,最好逐头做好标识,给已购买的每头牛打上耳号,以免被调包。(3)注意运输安全。在夏季运输牛时,要特别注意防暑...

有关于鲸的资料
须鲸科 Balaenopteridae 如:蓝鲸(蓝鳁鲸,剃刀鲸)Balaenoptera musculus、小须鲸(小鳁鲸)Balaenoptera acutorostrata、座头鲸(驼背鲸,大翅鲸)Megaptera novaeangliae、长须鲸 Fin whale、大须鲸(鳁鲸)、布氏鲸(鳀鲸) Bryde's whale、小布氏鲸Balaenoptera edeni、塞鲸 Sei whale 体型巨大,其中最小的种类体长也大于6米...

段学复的人生经历
在布劳尔1942年发表的重要论文《论阶恰含某素数的一次幂的有限群》的指引下,他在同一题目的博士论文(普林斯顿大学,1943年)中,在与布劳尔合作并继续布氏的工作而完成的两篇论文中取得了一些迄今仍有意义的重要成果。它们主要是:(1)得出了其阶为pqbm的某些单群的结构,其中p和q是互不相同的素数,b和m为正整数且...

为什么要养宠物
4、宠物的皮肤真菌感染也较普遍,与人密切接触很有可能感染饲养者,宠物也能感染结核病、布氏杆菌病等严重威胁我们人类的健康。饲养宠物的同时对这些疾病也要引起我们重视。 5、饲养宠物对环境也造成一些危害,由于目前大多数宠物饲养者环保意识较差,犬猫在小区或公共场所随意大小便,另外宠物病死后的尸体随意丢弃,严重污染...

涞源县18325296321: 什么是分布式锁服务Chubby -
后霞乳酸: 含义: Chubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题. 作用: 通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性.不过值得注意的是,这种锁只是一种建议性的锁(Advisory Lock)而不是强制性的锁(Mandatory Lock),如此选择的目的是使系统具有更大的灵活性. 希望可以帮到您

涞源县18325296321: Java网上商城项目中,商品管理模块的业务流程大概是什么,该怎么说 -
后霞乳酸: 商品管理模块看怎么做的最考验技术点的模块是购物车和秒杀购物车是多表联合操作,考验业务能力,网上查找一些资料即可秒杀环节是考验高并发,用redis分布式锁实现,找一些流程即可正常我们开发模块,首先是业务分析,然后是数据库处理,在之后就是分配任务,按写好的文档进行开发,最后交付,上线.

涞源县18325296321: redis是怎么分布式缓存数据的 -
后霞乳酸: Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能 比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的.

涞源县18325296321: Jedis干什么用的 -
后霞乳酸: Jedis使用总结前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现.本文做个总结,主要分享如下内容:【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分...

涞源县18325296321: 目前让密码最安全的算法是什么? -
后霞乳酸: 加密算法加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密).加密技术的要点是加密算法,加密算法可以分为对称加密、不对称加密和不可逆加密三类算法...

涞源县18325296321: 如何挑选防盗门锁,哪种门锁什么牌子好? -
后霞乳酸: 如何挑选防盗门锁,哪种门锁什么牌子好?教几个方法的小常识:记得 收藏.方法/步骤 1、看锁具材料 市场上的锁具材料基本分成不锈钢、铜、锌合金、铁钢和铝材.不锈钢其强度好、耐腐蚀性强、颜色不变,是最佳的造锁材料;...

涞源县18325296321: 深入研究 Java Synchronize 和 Lock 的区别与用法 -
后霞乳酸: 在分布式开发中,锁是线程控制的重要途径.Java为此也提供了2种锁机制,synchronized和lock.做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方.我们先从最简单的入手,逐步分析这2种的区别...

涞源县18325296321: 蜜蜡新矿和老矿的区别 平常心对待文玩 -
后霞乳酸: 一直喜欢蜜蜡,后来偶尔看到真正的老蜜,就慢慢地开始对老蜜感兴趣了. 可能市场上都把颜色较深的棕色蜜蜡统称为老蜜.所以大部分朋友对老蜜的认识仅止于深色的. 老蜜蜡色泽温润,给佩戴者一种祥和之气,并且随着老蜜蜡与身体的不...

涞源县18325296321: 红木的收藏价值体现在哪里?哪些红木家具值得收藏? -
后霞乳酸: 黄花梨太少了,就不说了,老挝酸枝还比较容易入手 老挝大红酸枝基本特性: 1、老挝红酸枝花纹漂亮,简单的说就是黑色的纹理多一点.纹理层次感分明. 2、老挝红酸枝油性大,有光 泽,不易裂. 3、老挝红酸枝密度大. 在明清两代,老红...

涞源县18325296321: 豹子号的纸币有没有收藏价值? -
后霞乳酸: 号码是三同号豹子号号码,真品有收藏价值的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网