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

三级分销网站建设报价方案智能优化网站

三级分销网站建设报价方案,智能优化网站,52麻将官方网站做代理,乐都网站建设公司一、锁的作用 锁是为了解决多线程情况下,对于共享资源的访问安全问题。 但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。 分布式锁,是独立于系统的第一方…

一、锁的作用

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

二、分布式锁实现

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.mmbaike.com/news/96871.html

相关文章:

  • 广州网站建设50强名单上海网络推广平台
  • 深圳网站建设及推广室内设计师培训班学费多少
  • 嘉禾手机网站建设网络营销服务商
  • 线上网络推广怎么做整站多关键词优化
  • 做网站卖装备pc网站建设和推广
  • 物流wap网站模板网站推广排名服务
  • 更换网站需要备案吗河南郑州网站推广优化
  • 建站公司 深圳河南网站推广那家好
  • 网站开发管理课程设计说明seo工具包
  • 上海网站建设 上海网站制作免费的大数据分析平台
  • 设计网站建设方案百度知道网页版进入
  • 深圳网页制作推广排名seo是指
  • 昆明做网站开发维护的公司武汉seo优化排名公司
  • p2p网站建设需求思亿欧seo靠谱吗
  • 做旅行社业务的网站都有哪些百度推广app下载官方
  • 网站建设公司业务在哪里来上海谷歌seo公司
  • 百度做自己的网站做百度推广需要什么条件
  • 个人网站软件百度上如何发广告
  • 网站建设的网站指数
  • 自定义网站模块优化神马网站关键词排名价格
  • 企业sns网站需求销售外包
  • 3d建模素材南昌seo排名
  • 个人做的好的淘宝客网站站内优化怎么做
  • 网站开发方式有外包阳山网站seo
  • python代码网站百度广告联盟app
  • 网站产品说明书模板推广之家
  • 北京网站建设备案产品运营方案
  • 试述电子商务网站的建设流程做游戏推广一个月能拿多少钱
  • java程序员自己做网站排名优化公司哪家效果好
  • 租用阿里云做网站关键词搜索引擎排名查询