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

做网站什么软件文明网站建设工作进度表

做网站什么软件,文明网站建设工作进度表,erp管理系统介绍,濮阳水虎网络科技有限公司分布式锁: 使用场景: 通常对于一些使用率高的服务,我们会进行多次部署,可能会部署在不同的服务器上,但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性,我们需要对线程进行加锁,…

分布式锁:

使用场景:

通常对于一些使用率高的服务,我们会进行多次部署,可能会部署在不同的服务器上,但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性,我们需要对线程进行加锁,但是因为我们部署在了不同的服务器上,而互斥锁只针对加锁的那台服务器,不会去限制别的服务器,所以是不能实现强一致性的要求的。(比如在8080的线程1获取完库存后,8081的线程1也进行了获取,此时8080的线程1对内存进行了扣除,按理来说已经没有库存了,但是8081的线程1获取的时候还是有的,还会继续扣除,这样就会出现问题)

这个时候我们就要使用分布式锁来解决问题了,分布式锁可以实现不同服务器上的监控,只要有一个线程获取了锁,其他的线程(包括其他服务器上的线程)都无法继续获取锁。

那么分布式锁怎么使用呢?通常我们使用redis的时候,会通过redis中的redission来实现分布式锁。

Redission:

redission实现分布式锁有三个重点:

watch dog:

我们知道,获取了锁之后如果不去释放锁,那么别的线程就都无法去使用相关的资源,那么如果加锁的线程因为某些原因终止了,没有去执行释放锁的命令怎么办呢?也许我们可以去设置锁的时间,到时间了就立马释放锁?这种方法理论可行,但是实际上每个线程需要花费的时间是无法确定的,如果时间少了加锁就没有意义,时间久了又占用资源。如果有一个旁观者,它可以告诉我们线程是否结束,如果结束了就释放锁,如果没结束就给锁加时就好了。watch dog就可以实现这个功能。

在某个线程加锁的同时,会生成一个新的线程来启动watch dog监控,如果加锁线程没有结束watch dog会每隔(releaseTime/3)的时间做一次续期(releaseTime默认30s),如果线程结束了,我们可以发送释放锁的指令来停止watch dog续期锁。

下面是redission的代码实现,这里有一个要注意的地方,如果我们在trylock的时候设置了锁自动释放时间,redission就会认为我们可以自己控制什么时候释放锁,就不会使用watch dog来帮助我们。

重试机制:

当有线程获取锁后,另外的线程会尝试循环获取锁,不过这个次数不是无限制的,存在一个阈值。

LUA脚本:

加锁、设置过期时间等操作都是基于lua脚本完成,可以保证代码的原子性。

除此之外,redission生成的分布式锁还有一些特点

可重录:

什么意思呢?就是在同一个线程中可以多次进行加锁(同一把锁),而每加一把锁,锁的value +1,每释放一把锁,锁的value -1。举个例子,在add1方法中,我们拿了一个“heimalock”锁,此时这个lock的记录如下

因为生成了锁,value为1,在add1方法中我们又调用了add2方法,add2方法同样也拿了一个“heimalock”锁,此时并不会创建新的锁,而是将value +1变成了2,此时这个lock的记录如下

释放锁其实就是value -1,不再过多赘述。

主从一致性:

redission不能实现,但是redission提供了redlock(红锁)来实现,只不过效率太低,如果要实现主从一致性,建议使用zookeeper

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

相关文章:

  • 龙之向导免费网站什么网站的页面好看
  • 制作一个网站需要注意什么成都网站定制开发
  • 均安公司网站建设minisite网站案例
  • 动易网站建设实训报告学院网站建设投标
  • 上海哪家网站建得好网站建设考评表
  • 怎么学做一件完整衣服网站广州开发区黄埔区
  • 摄影网站建设文案php html5企业网站源码
  • 建网站首选公司营销网站的专业性诊断评价和优化
  • 顺义建站好的公司无锡网站搜索引擎优化
  • 网站地址做图标成都网站建设公司地址
  • 专业做汽配的网站wordpress海报生成器
  • 网站建设 企炬谭木记网页制作源代码
  • 网站icon图标怎么加企业网络营销策划书范文
  • 网站建站网站开发做网站需要好多图片
  • 如何分析网站关键词国家高新技术企业补贴多少钱
  • 重庆沙坪坝企业网站建设联系电话大连可以做网站的公司
  • 高端网站定制方案360收录提交入口
  • 做百度推广去些网站加客户沈阳网络科技公司排名
  • 中国建设银行网站怎么改支付密码忘了怎么办柳市网站建设
  • 如何做网站弹窗wordpress深入浅出
  • 徐州做网站公司什么网站做唱歌主播
  • 菏泽炫佑网站建设番禺人才网招聘信息
  • 网站内容更新科技资讯网站开发
  • 广州番禺建设银行网站登录深圳福田区口岸社区
  • 图片演示dw做网站响应式mvc企业网站源码
  • 北京网站如何做推广小程序注册条件
  • 网站基础建设英文翻译wordpress 查看大图
  • 织梦cms做网站教程视频旅游网站建设意义
  • 五个h5制作网站wordpress注册发送验证码
  • 移动端网站建设的软件有哪些wordpress实现首页功能能