当前位置: 首页 > news >正文

眉山市网站建设网站建设教程(任务2签订网站建设合同)题库

眉山市网站建设,网站建设教程(任务2签订网站建设合同)题库,做网站有哪个空间,wordpress手动搬家问题分布式锁是我们在分布式场景中经常用到的一种技术,在后端面试中也是出镜率很高,那么我们设计分布式锁的时候应该从那几方面去考虑呢 实现分布式锁需要考虑的点 设置超时时间 设置超时时间的目的是为了避免这个场景:进程A拿了锁&#xff0c…

分布式锁是我们在分布式场景中经常用到的一种技术,在后端面试中也是出镜率很高,那么我们设计分布式锁的时候应该从那几方面去考虑呢

实现分布式锁需要考虑的点

设置超时时间

设置超时时间的目的是为了避免这个场景:进程A拿了锁,但是在持有锁期间自己因为某些异常挂掉了,这样进程A就永远不会释放掉这个锁了。如果没有设置超时时间的话,这个锁就会死锁,所以会需要设置一个超时时间,来保证当锁的持有者无法释放锁的时候,锁不会成为死锁。

设置守护线程

设置守护线程的目的是为了避免这个场景:进程A拿了锁,也设置了超时时间30s,但是因为某些业务的原因,进程A确实需要持有锁超过30s,那么这个时候如果不加任何干预的话30s后锁自动释放肯定是不符合预期的。

有些同学可能就会问了,那我不是把超时时间设置长一点就好吗?但是一是超时时间设置长了是会有副作用的,那就是锁持有者无法释放锁时锁自动持有的时间会变长;二是即使设置的再长也是有个限制的,无法完全保证不会发生正常使用的锁被错误的自动释放掉。

所以我们需要在持有锁的这个进程中额外增加一个线程,具体做的事情就是当持有锁的时间超过锁过期时间的一半时,自动对超时时间进行一个续期,这样当进程存在的时候,就会一直对超时时间进行续期,不会被意外的自动释放;如果进程挂掉的话,则不会进行续期,超时后锁会被自动释放,也不会产生死锁。

Redis实现分布式锁主要要注意的地方

  • 使用SETNX实现排他性锁,SETNX意为set if not exist,即如果这个锁已经被持有了,则无法再次申请
  • 使用超时限制特性来避免死锁
  • 释放锁的时候需要进行检查来避免误释放别的进程的锁:添加key的时候使用uuid生成一个identifier,作为key的value随key一同写入redis;释放的时候,使用get命令获取到锁的value的时候,检查是不是之前存的那个identifier,如果不是的话就说明锁已经释放了

tooz实现基于redis的分布式锁的实现方法

获取到一个锁的实例以后,如果acquire成功,则将acquired置为True

任意一个锁的实例想要release锁的话,先判断acquired是否为True,如果为True才允许释放,如果为False直接抛出异常“不能释放没有获取的锁”,以此避免错误释放

超时时间过一半以后,实例会自动延长超时时间到原本设置的超时时间,避免因为超时时间的设置把原本需要很长时间处理的任务的锁错误的释放掉了

使用setnx和expire的问题:setnx和expire是两条指令而不是原子指令。

解决办法:使用set扩展参数替代:set key value ex 5 nx

http://www.yayakq.cn/news/514748/

相关文章:

  • 网站二维码可以做长按识别吗苏州网站快速排名优化
  • 嘉兴优化网站收费标准一个新的网站开发语言
  • 云南专业网站优化wordpress ftp 插件
  • 怎样建个网站建设美妆企业网站
  • 建设局哪个网站查证毕设敦煌壁画网站开发选题背景
  • 如何做起一个网站推广雅布设计师
  • 上海网站制作的费用网站制作的建设大纲ppt
  • 鲜花店的网站建设淄博网站制作建设优化
  • 关于优化网站建设的方案河南省建设厅证件证件查询网站
  • 生态文明建设网站专题培训wordpress端口不生效
  • 赣州建设部网站怎么让网站分享有图片
  • 制作网站一般多少钱微信开发平台公司
  • 网站建设行业论坛凡科做的网站好吗
  • 榆次网站建设公司wordpress留言源码
  • 旅游网站建设规划书模板下载廊坊视频剪辑培训机构
  • 私人公司怎么做网站正规大宗商品交易平台
  • 视频网站文案做蛋糕网站有哪些
  • 聚美优品网站开发时间进度表4免费网站建站
  • .net 开发门户网站单位网站建设情况
  • 东莞网站建设求职简历手机的网站建设目标是什么
  • h5网站页面设计上海公司车辆怎么查询违章
  • 营销型企业网站 网络服务建设个直播网站要多少钱
  • 最新wordpress漏洞网站排名优化电话
  • 网站运营策划ppt邢台哪里可以做网站
  • 诸城做网站的平面设计师证书
  • 深圳免费建站域名注册查询 万网
  • 成都网站建设科技响应式布局实训报告
  • 网站优化的核心不包括php和python
  • 温州网站建设备案网站的制作步骤
  • 文字壁纸做背景处理的网站泰国服务器租用