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

c2c网站开发成本湖南环保设备公司中企动力网站建设技术支持

c2c网站开发成本,湖南环保设备公司中企动力网站建设技术支持,东营做网站seo的,桂林网络科技目录Redis的租约问题Redis租约问题的想法Redis租约问题的解决方案Redis的租约问题 首先我们先来说一说什么是Redis的租约问题。   在我们实现Redis分布式锁的时候&#xff0c;我们会出现Redis锁的时间<业务执行执行时间&#xff0c;这其实就是一个典型的租约问题&#xf…

目录

    • Redis的租约问题
    • Redis租约问题的想法
    • Redis租约问题的解决方案

Redis的租约问题

首先我们先来说一说什么是Redis的租约问题。
  在我们实现Redis分布式锁的时候,我们会出现Redis锁的时间<业务执行执行时间,这其实就是一个典型的租约问题,那么什么是租约问题呢?我们让用户线程获取锁之后,同时为了防止用户进程产生错误而无法释放锁,导致其他用户再也无法获取不到锁产生的死锁现象,所以我们为每一个锁设定一个Expire Time,这样即使在用户进程不能正常释放锁的情况下,过期时间到了之后,Redis会自动释放掉锁来让别的用户来获取到锁。
  这就是典型的租约机制,用户申请了一个租约时长为lock_timeout的锁,用户可以在租约期间使用完之后正常释放锁,如果说了租约时间,即使用户没有释放锁,Redis也会自动释放锁。
 
 

Redis租约问题的想法

  我们来设想一下,如果用户可以很清晰的知道自己将要使用锁的时间,那么我们设置lock_timeout就很容易了,但是如果当用户并不知道自己用锁的时间,设置租约就会是一个困难,当然,一般都不知道。我们设置租约时间

  • 如果我们设置的时间过短,那么可以用户还没用完锁,锁就被Redis释放掉了,之后多个用户访问一个共享资源产生错误。
  • 如果我们设置的时间过长,那么当用户如果产生错误不能正常释放锁的时候,其他用户线程就需要等待较长的时间才能获取到锁。

所以,我们就萌生出一个想法:当用户并不知道自己会用多久的时间,那么我们为该锁设置一个较小的lock_timeout,同时在该锁的过期之前,就自动的向服务器延长该锁的lifetime.
 
 

Redis租约问题的解决方案

Redis租约问题一般有两个解决方案。

  1. 业务调研
    我们需要大量测试我们业务的执行时间,然后可以将我们所的过期时间设置为业务时间的1.5倍,给他充分的冗余时间。但是如果我们考虑更多的异常情况发生的话,那么我们这种方法可能不太靠谱。所以就有了第二种方法。
  2. 锁的续约
    锁的续约,我们在去加锁的时候,一般都会去启动一个线程,而在开启这个启动线程的时候,我们同样去启动一个守护线程,这个守护线程,我们就可以用来作为锁的续命。过程:
    假设我们用户拿到了我们的锁,但是我们的业务时间远远大于我们加锁的时间,如果我们的锁快到我们的过期时间的时候,比如过期时间的前5s,这个时候我们就可以用我们的守护线程去扫它,看看我们的业务有没有执行完,如果没有执行完,那么续约同样的lock_timeout,以此类推,确保我们当前的加锁时间大于我们的业务执行时间,这个是锁续约的核心思想。

那么我们这么做可能会出现什么问题?
在我们进行业务调研后,我们得出了我们业务时间的平均值,如果我们的用户线程在执行过程中出现了问题,那么业务执行时间就会无限长,那么我们的岂不是会进行无限的续约?所以简单的设计有点不太合理。

那么怎么解决呢?
我们的解决方案是使用重试次数(这个重试次数是重点)
假设我们的业务的执行时间平均是10s,那么我们最多容忍它执行50s如果他还没有执行完成,那么我们就认为的服务器或者代码有问题,我们需要进行人为干预。这里的话,我们需要重试四次即可。

 

请添加图片描述
 

注意:我们的守护线程是依赖于我们的用户线程而生的,用户线程死,我们的守护线程就死,所以我们守护线程来进行续命,用户线程在,守护线程就在,就可以续命。
 请添加图片描述
 
请添加图片描述
 
这里使用了Lua脚本,Lua脚本的作用在于保证原子性,它能确保Lua脚本里面的内容要么同时执行,要么同时不执行。
 
请添加图片描述

 
 
 
  
  
  

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

相关文章:

  • 南京淘宝网站设计公司网络营销方式举个例子
  • 做网站搜索推广点击率太低怎么办价格低的形容词
  • 企业网站建设费用财务处理长春网站建设翻译
  • 网站空间里绑定好域名博文阅读网站建设
  • 做网站交易平台挣钱吗网络系统管理是做什么的
  • 枞阳做网站柳州学校网站建设
  • 济宁贵网站建设建设网站架构服务器需要多少钱
  • 南阳网站建设与管理佛山网站建设方案
  • 酒水销售网站中山做网站推广公司
  • 项城市建设规划局网站成都公司注册价格
  • 怎么弄一个网站网站备案的重要性
  • 网站建设项目开发书天坛整装公司地址在哪里
  • 图片站wordpress河北建设工程信息网下载时间
  • 查看网站开发语言商业性质网站建设步骤
  • 采集网站后台数据低代码开发技术
  • 做网站域名的公司南阳网站建设培训学校
  • 网站建设宝安国外网站搜索引擎优化方案
  • 前端案例的网站wordpress博客功能
  • h5网站做微信小程序做淘宝网站销售怎么样
  • 电子商务网站建设的心得体会男女做羞羞事的网站
  • 建站软件大全外贸流程询盘发盘
  • 如何查看网站域名信息html网站开发代码
  • wordpress主题图片修改seo入门视频
  • 国外做问卷赚购物券等的网站怎么判断网站的好坏
  • 西安 内部网站建设免费网页注册
  • 网站开发公司哪家最强网站权重如何做
  • 骨骼型的网站天津网站建设基本流程
  • 外包建设网站服务电子商务网站开发规划
  • o2o网站策划集团官网及站群网站建设
  • 17网站一起做网店揭阳网站建设编写代码出错