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

专注吴中网站建设推广百度指数如何提升

专注吴中网站建设推广,百度指数如何提升,成人网永久免费观看在线观看,中国河北网站一、锁的作用 锁是为了解决多线程情况下,对于共享资源的访问安全问题。 但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。 分布式锁,是独立于系统的第一方…

一、锁的作用

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

二、分布式锁实现

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.ysxn.cn/news/2563.html

相关文章:

  • 上海网站开发技术最好公司小学生摘抄新闻2024
  • 透明水印logo在线制作seo搜索优化软件
  • 中小企业的网站建设论文网页设计制作网站素材
  • 能用二级域名做网站吗竞价什么意思
  • 建工教育网校官方网站三只松鼠口碑营销案例
  • 网站建设合同服务事项搜索推广
  • 淄博周村网站建设公司优秀网站设计案例
  • 免费手机网页网站老王搜索引擎入口
  • 用自己的电脑做网站服务器seo营销策略
  • 三级域名网站公司主页网站设计
  • 常德做网站公司班级优化大师免费下载电脑版
  • 厦门网站制作全程服务长春网站建设技术托管
  • 怎么创立网站 优帮云seo网络推广招聘
  • 做网站找哪家好百度快照搜索
  • 徐州网站公司seod的中文意思
  • 手机网站设计占工程比重互联网行业都有哪些工作
  • 福州建设网站效果公司网站怎么优化
  • python做的网站哪些搜狐财经峰会直播
  • 郑州网站建设zhuotop一般网站推广要多少钱
  • 学做衣服的网站成都百度推广开户公司
  • 网站开发公司有资质吗十大暗网搜索引擎
  • 建设银行官方网站个人系统板块修改百度seo搜搜
  • wordpress小标签佛山做seo推广公司
  • 网站建设没有业务怎么办武汉seo排名优化
  • 网站搭建文案seo公司推荐
  • 网站建设來超速云建站营销方法有哪几种
  • 云主机做网站域名打不开东莞网站seo优化托管
  • 汽修网站怎么做公司网站如何推广
  • 目前网站开发语言做网站的公司哪家好
  • 网站建设合同的要素及签订注意事项攀枝花网站seo