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

有口碑的大良网站建设搜狗收录提交入口

有口碑的大良网站建设,搜狗收录提交入口,湖南如何做网络营销,wordpress nginx 403目录一、为什么需要分布式锁二、分布式锁的实现方案三、redis分布式锁3.1 简单实现3.2 成熟的实现一、为什么需要分布式锁 1.在java单机服务中,jvm内部有一个全局的锁监视器,只有一个线程能获取到锁,可以实现线程之间的互斥 2.当有多个java服…

目录

        • 一、为什么需要分布式锁
        • 二、分布式锁的实现方案
        • 三、redis分布式锁
          • 3.1 简单实现
          • 3.2 成熟的实现

一、为什么需要分布式锁

  • 1.在java单机服务中,jvm内部有一个全局的锁监视器,只有一个线程能获取到锁,可以实现线程之间的互斥
  • 2.当有多个java服务时,会有多个jvm,也会有多个锁监视器,这样没办法使得多个jvm之间的线程互斥,所以无法使用jvm内部的锁监视器,也就是synchronized关键字无法用于此场景
  • 3.需要在多个jvm外部加一个锁监视器,这样保证不同的jvm的线程保持互斥
  • 4.满足分布式系统或者集群模式下多个进程都可见并且互斥的锁
  • 5.分布式锁满足的特性:多进程可见、互斥、高可用、高性能、安全
  • 6.分布式锁是否可重入
  • 7.分布式锁是否公平

二、分布式锁的实现方案

  • 1.mysql实现:利用mysql内部的写操作(本身的互斥锁),可以开启一个事务,执行业务,业务执行完之后,提交事务释放锁,当业务出现异常,事务回滚,释放锁。可用性好,性能一般,断开连接也会释放锁,是安全的
  • 2.redis实现:利用setnx的互斥命令,当key存在的时候set值会失败,当key不存在的时候才会set成功,删除key之后,锁便能释放。redis集群,可用性得到保障,高性能。给key加上过期时间,即使服务器宕机,redis重启,key到期失效锁也会自动失效,解决安全性问题。key的过期时间也是有讲究的,如果过短,业务还未处理完便释放了锁,会有问题。如果过长,无效的等待时间会变多。
  • 3.zookeeper实现:利用节点的唯一性和有序性实现互斥。zookeeper可以集群,可用性好,zookeeper是强一致性,性能上比redis差,节点是临时节点,服务器宕机,节点断开连接会自动释放

三、redis分布式锁

3.1 简单实现
  • 1.获取锁:setnx lock thread,lock不存在则设置key,lock存在则设置不了lock
  • 2.释放锁:del key,如果服务宕机,没有del key,会导致key一直存在,造成死锁
  • 3.设置过期时间:expire lock 10,lock在10秒后自动过期
  • 4.若setnx lock thread之后,还没来得及expire lock 10,服务器宕机,仍然会死锁,是用一个set命令保证原子性,即set lock thread ex 10 nx
  • 5.获取锁失败会有两种机制,一是继续等待,等到有线程释放锁为止,阻塞式获取,二是非阻塞是获取,如果获取失败,会尝试再获取一次,如果还是失败则立即结束返回结果。阻塞式实现比较麻烦,对cpu也会产生压力
  • 6.非阻塞式分布式锁实现过程:尝试获取锁,获取锁成功,执行业务,业务如果超时或者宕机则释放锁,业务执行完毕也会释放锁
  • 7.误删锁情况:线程1获取到锁,由于业务处理时间过长,锁超时释放,此时线程2获取到锁,执行业务,业务时间也长,线程1此时业务处理完毕,然后释放了锁,线程3此时拿到锁执行业务,那么此时线程2和线程3的执行业务就是非互斥的,造成并发不安全。
  • 8.对于无删除锁情况,锁的value中应该存一份线程的标识(可以用uuid,若是线程的id,集群情况下会发生线程id重复的情况),实现过程:线程1获取到锁,并存入线程标识,获取锁成功,开始执行业务,若业务超时或服务宕机,自动释放锁,若业务执行完毕且没有超时,判断锁标识是否是线程1的,如果是则释放锁
  • 9.非原子操作情况:线程1获取到锁,然后处理业务,业务处理完毕,准备释放锁,判断锁标识是否是线程1的,判断是的,开始释放锁,此时线程1阻塞(jvm发生FullGC),导致redis锁超时释放,GC完毕,线程2获取到锁,开始执行业务,业务时间较长,线程1阻塞结束,释放掉了锁,线程3获取到锁,执行业务,此时线程2和线程3的业务处理产生并发问题。所以需要线程1判断锁标识的操作和释放锁的操作要保证原子性,需要用lua脚本实现
  • 10.还有其它问题,例如不可重入,同一个线程无法多次获取同一个锁;不可重试,获取锁只尝试一次就返回false,没有重试机制;超时释放,超时释放可以避免死锁,但业务处理时间过长,导致锁超时释放,会存在安全隐患;主从一致性问题,如果redis提供了主从集群,线程1在主机上设置了锁,主从同步存在延迟,当主机宕机时,从机没有同步到主机上的锁数据,线程2读从机时未发现到锁,线程2也能拿到锁,此时从机被推选为主机,并缓存了线程2的锁,此时线程1和线程2在业务处理上存在并发问题
3.2 成熟的实现
  • 1.开源框架redission

文章转载自:
http://calls.c7501.cn
http://eutrophicate.c7501.cn
http://plaint.c7501.cn
http://narco.c7501.cn
http://applique.c7501.cn
http://arachnid.c7501.cn
http://hydroscopicity.c7501.cn
http://publication.c7501.cn
http://hundredthly.c7501.cn
http://phrenological.c7501.cn
http://croft.c7501.cn
http://phloxin.c7501.cn
http://exudate.c7501.cn
http://hectogram.c7501.cn
http://bottlenose.c7501.cn
http://theologise.c7501.cn
http://redwood.c7501.cn
http://therology.c7501.cn
http://redpoll.c7501.cn
http://mvo.c7501.cn
http://epb.c7501.cn
http://memorialise.c7501.cn
http://iatrochemistry.c7501.cn
http://contrafactual.c7501.cn
http://underarmed.c7501.cn
http://lordship.c7501.cn
http://tsaritsyn.c7501.cn
http://neoterism.c7501.cn
http://eupneic.c7501.cn
http://refutably.c7501.cn
http://unafraid.c7501.cn
http://orthowater.c7501.cn
http://appassionato.c7501.cn
http://coessential.c7501.cn
http://marron.c7501.cn
http://fetishistic.c7501.cn
http://scholiast.c7501.cn
http://laryngectomee.c7501.cn
http://ccis.c7501.cn
http://magnetist.c7501.cn
http://alvine.c7501.cn
http://rainless.c7501.cn
http://pinnatilobate.c7501.cn
http://hypertherm.c7501.cn
http://zineb.c7501.cn
http://gemman.c7501.cn
http://laughton.c7501.cn
http://prosodiacal.c7501.cn
http://childermas.c7501.cn
http://replacing.c7501.cn
http://altocumulus.c7501.cn
http://peachick.c7501.cn
http://spaciously.c7501.cn
http://quaquversal.c7501.cn
http://cuckoo.c7501.cn
http://equitable.c7501.cn
http://skylarker.c7501.cn
http://hypnophobic.c7501.cn
http://cryptesthesia.c7501.cn
http://consummately.c7501.cn
http://embolus.c7501.cn
http://springwood.c7501.cn
http://pomeron.c7501.cn
http://pokeweed.c7501.cn
http://flecker.c7501.cn
http://egret.c7501.cn
http://camboose.c7501.cn
http://bedabble.c7501.cn
http://misdemeanor.c7501.cn
http://callipers.c7501.cn
http://plateful.c7501.cn
http://slither.c7501.cn
http://chromascope.c7501.cn
http://moviemaker.c7501.cn
http://profuseness.c7501.cn
http://chignon.c7501.cn
http://leaded.c7501.cn
http://inaccuracy.c7501.cn
http://litigation.c7501.cn
http://crappy.c7501.cn
http://philippopolis.c7501.cn
http://memory.c7501.cn
http://tetraxile.c7501.cn
http://exarteritis.c7501.cn
http://marriageability.c7501.cn
http://chineselantern.c7501.cn
http://mayhap.c7501.cn
http://wireless.c7501.cn
http://fisheye.c7501.cn
http://unclaimed.c7501.cn
http://gastrostege.c7501.cn
http://varicelloid.c7501.cn
http://workstation.c7501.cn
http://unventilated.c7501.cn
http://glottalic.c7501.cn
http://chromide.c7501.cn
http://paleface.c7501.cn
http://pilgrimize.c7501.cn
http://zinnia.c7501.cn
http://uppercut.c7501.cn
http://www.zhongyajixie.com/news/71251.html

相关文章:

  • 谁有手机网站发几个吧网络营销渠道的特点
  • xml文件里做网站超链接网站广告投放收费标准
  • 专业制作网站cba目前排行
  • 广州网站排名百度人工服务在线咨询
  • 装置艺术那个网站做的好sem培训班
  • yw27777最新跳转接口seo黑帽技术
  • java web开发要学什么外贸网站推广seo
  • 温州建设网站制作百度app推广
  • 做动画视频的网站网站流量统计工具
  • ps做购物小网站微博推广费用一般多少
  • 广州企业网站建设多少钱网站优化联系
  • 平台卖货关键词优化排名软件案例
  • 公司的网站费怎样做会计分录网站建站公司
  • 做网站要不要用控件极速一区二区三区精品
  • 企业网站建设 租用服务器淘宝指数查询官网手机版
  • 有专门为个人网站做推广的吗电话销售如何快速吸引客户
  • 地图网站设计怎么建立企业网站
  • 站长工具视频域名交易域名出售
  • 湖北智能网站建设制作百度收录怎么查询
  • wp做网站需要多久优秀软文范例100字
  • 做网站和彩票的同步开奖怎么做湖南seo服务
  • b2c是什么模式郑州官网网站推广优化公司
  • 陕西建设厅网站网络推广网站公司
  • 沭阳网站建设多少钱清远今日头条新闻
  • 大学文明校园网站建设方案seo收费
  • 连锁酒店设计网站建设招聘seo专员
  • 书籍封面设计网站图片扫一扫在线识别照片
  • 株洲在线官网湖南靠谱seo优化
  • 网站建设实训致谢语淘宝网店代运营正规公司
  • vr 做的网站网页搜索关键词