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

江苏国龙翔建设网站app定制化开发

江苏国龙翔建设网站,app定制化开发,wordpress文章爬取,得到app怎么样一、锁的作用 锁是为了解决多线程情况下,对于共享资源的访问安全问题。 但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。 分布式锁,是独立于系统的第一方…

一、锁的作用

锁是为了解决多线程情况下,对于共享资源的访问安全问题。
但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。
分布式锁,是独立于系统的第一方实现的功能。因而状态可供不同系统获取。

二、分布式锁实现

2.1、基于redis实现

基于redis实现的分布式锁是当下比较流行的一种实现方式。
利用redis的set命令,用全路径类名方法名作为key,当前线程id作为value,插入一条记录,当且仅当该记录不存在。
如果返回1,代表成功获取到锁,返回0代表锁已经被其他线程获取了。
命令 格式:set key value nx ex 过期时间
释放锁的时候需要判断是否是自己加的锁,只能释放自己加的锁。

这样即可以防止系统挂掉导致无法释放锁的情况。不过又引入了锁内代码还没执行完就提前释放的情况,因此需要锁续期。可以设置一个守护线程,在快要到达第一次超时时间的时候启动守护线程,给锁续期,每隔所续的时间,再次启动守护线程续期。

2.2、基于数据库实现

利用数据库唯一索引来实现分布式锁。
建立一个分布式锁表,包含字段全路径类名、方法名,给全路径类名+方法名建立唯一索引。唯一索引会限制只有一个线程能成功插入数据。
获取锁的时候,就往数据库插入一条数据,如果插入成功,则代表获取到分布式锁。
释放锁的时候就删除该记录。

存在的问题:如果获取锁之后,数据库或者服务器挂了,那么分布式锁就没法释放。使用主从数据库可以解决数据库挂了的问题。服务器挂了的问题可以通过启动一个定时任务,根据记录创建时间,定时删除数据库超时的记录。

可以通过记录获取锁的主机信息和线程信息,如果查到已存在的记录属于当前线程,就将锁分配给他,实现可重入。

2.3、基于数据库排他锁实现

在查询语句的后面加上for update,数据库会启动排他锁,利用排他锁可以实现分布式锁。
用户查询到数据就代表他获取了锁,可以执行业务代码,最后commit提交释放排他锁。
数据库被加了排他锁之后,其他线程还想加排他锁就会被阻塞。

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

相关文章:

  • 成都建网站比较好的公司6网站备案和前置审批
  • 网站服务器管理 硬件江西省建设厅网站资质升级查询
  • 汉寿网站建设淮北论坛最新招聘信息网
  • 合肥网站建设久飞网站适合用angular做吗
  • 丽水山耕品牌建设网站新潮狼网站建设
  • 在别的公司做的网站企业建站有哪些步骤
  • 要怎样夸一个网站做的好看建网站要注册吗
  • 建设部招标网站wordpress文章版权声明
  • 网站规划市场分析注册公司代理记账报税
  • 网站的开发与设计wordpress生成微信分享图片不显示
  • 彩票资料网站怎么做设计制作建筑模型综合实践教案
  • 网站必须要实名认证么网页设计参考网站
  • 县级网站北京网站建设公司排名浩森宇特
  • .net网站开发实站建立自己的平台网站吗
  • 用vue做pc端网站自己做卖东西网站
  • 网站建设 起飞wordpress列表页模板
  • 中山电子商务网站建设专题探索网站开发教学模式的结构
  • 英文网站注册惠州宣传片制作公司
  • 杭州哪家做企业网站电商有哪些类目
  • 酒店的网站建设方案.net网站开发中注册页面
  • 电脑网络题搜网站怎么做郑州哪里做网站最好
  • 做网站常用代码向右浮动怎么写设计师网站登录入口
  • 做优惠券网站要多少钱爱空间家装怎么样?两点告诉你
  • 政务网站建设的重要性网络服务网络营销
  • 网站备案收费幕布c语言做项目网站
  • 建站公司专业团队wordpress批量修改文章内容
  • 常德网站建设哪家权威工信部网站登陆
  • 棋牌网站建设要多少钱花店网站模板免费下载
  • 余姚电商交易网站建设wordpress导航添加登录退出
  • 有什么网站可以免费权威的唐山网站建设