黑马点评06分布式锁 2Redisson

实战篇-17.分布式锁-Redisson功能介绍_哔哩哔哩_bilibili

1.还存在的问题

直接实现很麻烦,借鉴已有的框架。

2.Redisson用法

3.Redisson可重入原理

        在获取锁的时候,看看申请的线程和拿锁的线程是否一致,然后计算该线程获取锁的次数。一个方法完成计数减一,计数为0才能解锁。

        利用hash结构进行计数,但是hash不能像string一样一条set同时设置互斥锁和过期时间,所以必须分开设置。

        为了避免宕机导致的死锁问题,必须用lua脚本去保证获取锁和释放锁几个步骤的原子性。

实战篇-20.分布式锁-Redisson的锁重试和WatchDog机制_哔哩哔哩_bilibili

4.Redisson重试机制原理

利用redis的发布订阅,在释放锁的时候发布消息。

而尝试获取锁失败之后会订阅消息,那么别人释放锁就知道。

等待时间最大等待时间减去获取锁消耗的时间,如果时间到了还没有消息,就不等了。

有消息就重复尝试获取锁。

实战篇-20.分布式锁-Redisson的锁重试和WatchDog机制_哔哩哔哩_bilibili

5.锁时间的超时刷新(看门狗)

ExpirationEntry里存放着一个线程的id以及它对应的递归锁刷新函数renewExpiration()

renewExpiration()每隔10s会自动把时间重新初始化到30s保证锁永不过期,然后递归调用自己继续续期。

加过期时间是为了保证服务宕机的时候锁有自动过期的能力,此时java代码(服务)不会继续续期;而服务没有宕机的时候,能够不断刷新过期时间,保证不会因为业务时间过长而导致锁过期。

总之,一切都为了保证锁是业务执行完成之后事务释放的,而不是锁过期释放的。

一直到unlock函数调用的时候,锁释放,不再续期
 

6.redisson可重入,重试,超时续约 的流程总结

实战篇-21.分布式锁-Redisson的multiLock原理_哔哩哔哩_bilibili

7.multilock连锁保证主从一致性

只有所有主节点获取锁成功才算锁成功,所以不怕一个节点宕机导致其他线程乘虚而入

8思路流程

实战篇-22.秒杀优化-异步秒杀思路_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫chrome浏览器抓包说明

chrome浏览器抓包说明 目标:掌握chrome在爬虫中的使用 1. 新建隐身窗口(无痕窗口) 作用:在打开无痕窗口的时候,第一次请求某个网站是没有携带cookie的,和代码请求一个网站一样,这样就能够尽可…

堆与二叉树(上)

本篇主要讲的是一些概念,推论和堆的实现(核心在堆的实现这一块) 涉及到的一些结论,证明放到最后,可以选择跳过,知识点过多,当复习一用差不多,如果是刚学这一块的,建议打…

爬虫练习-获取imooc课程目录

代码: from bs4 import BeautifulSoup import requests headers{ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0, }id371 #课程id htmlrequests.get(https://coding.imooc.com/class/chapter/id.html#Anchor,head…

实验三 MapReduce编程

实验目的: 1.掌握MapReduce的基本编程流程; 2.掌握MapReduce序列化的使用; 实验内容: 一、在本地创建名为MapReduceTest的Maven工程,在pom.xml中引入相关依赖包,配置log4j.properties文件,搭…

软信天成:产品信息管理(PIM)对零售行业有何意义?

产品信息管理(PIM),通过快速收集、管理和共享横跨整个企业、合作伙伴和供应商的产品信息,整合分散在不同系统或部门的数据信息,创建实时、可信的产品数据源,及时获取整个企业详细、准确和一致的产品信息&am…

前端做表格导出

下面来介绍一下方法 在vue页面里写调用方法 //表头数据格式 column: [{ key: Photo, width: 70, height: 50, colWidth: 100, title: 图片, type: image },{ key: Name, colWidth: , title: 名称, type: text },{ key: Phone, colWidth: , title: 手机号, type: text },{key:…

使用Log4j与log4j2配置mybatisplus打印sql日志

环境:项目非完全spring项目,没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改,过程比较坎坷,记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置…

【✅如何针对大Excel做文件读取?】

✅如何针对大Excel做文件读取? 🟩如何针对大Excel做文件读取🟩XSSFWorkbook文件读取🟩EasyExcel文件读取 ✅扩展知识🟩 EasyExcel简介🟩EasyExcel 为什么内存占用小? 🟩如何针对大Ex…

欧盟健身单车出口BS EN ISO 20957安全报告测试

固定的训练器材.第10部分:带固定轮或无自由飞轮的训练自行车.附加特定安全要求和试验方法 作为欧洲固定式健身器材(儿童用固定式健身器材不在此范围)通用安全要求和测试方法的标准,涉及固定式健身器材精度、使用场所分类定义、稳定性、安全间…

Amazon CodeWhisperer 体验

文章作者:jiangbei 1. CodeWhisperer 安装 1.1 先安装 IDEA,如下图,IDEA2022 安装为例: 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者…

我的创作纪念日-IT从业者张某某

机缘 勿忘初心,牢记使命,我成为创作者的初心是什么呢?时间有些久了,回头看下自己的第一篇博客,还是略显青涩的,有种不忍直视的感觉。 我的第一篇博客,应该是想记录下工作中的一个演示项目&…

[Bond的杂货铺] CERTIFIED KUBERNETES ADMINISTRATOR 到货咯

Its been a long time. Mr. K8s. 既然接触了这么多年,2018年在1.11版就认识了,如今都到了1.28,拖到连与docker都分手了。所以,考一个,很合理吧。 分数是88,隐约感觉是因为有几处因为实在不想把光标移来移…

挑战内网安全难题,迅软DSE如何以管控之力助您一臂之力?

随着信息化程度的提高,政企单位面临更加复杂和不可控的内网安全问题。由于缺乏有效技术手段和完善的管理机制,企业内网管理长期处于被动状态,而在发生数据安全事件后的快速处置能力也相对薄弱。 迅软DSE桌面管理系统成为解决方案&#xff0c…

【Java】基于fabric8io库操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service(含Deployment)2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

HBuilder X将Vue打包APP返回上一页退出问题、清除缓存页面历史防止返回登录页(上一页)、以及状态栏颜色切换

目录 一、返回上一页退出问题 二、清除缓存页面历史防止返回上一页 三、状态栏颜色切换 一、返回上一页退出问题 1.首先重新认识一下vue的页面跳转,这里我只说常用到的两个 goSkip(){//直接跳转this.$router.push(/test);this.$router.replace(/test);//带参数跳…

『 Linux 』重新理解挂起状态

文章目录 🦄 前言新建状态 🐋挂起状态 🐋唤入唤出 🐋进程与操作系统间的联系 🐋 🦄 前言 『 Linux 』使用fork函数创建进程与进程状态的查看中提到了对挂起状态的一个理解; ​ 挂起状态相比于其…

LearnDash LMS ProPanel在线学习系统课程创作者的分析工具

点击阅读LearnDash LMS ProPanel在线学习系统课程创作者的分析工具原文 LearnDash LMS ProPanel在线学习系统课程创作者的分析工具通过整合报告和作业管理来增强您的 LearnDash 管理体验,使您能够发送特定于课程的通信,并显示课程的实时活动&#xff01…

Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入

场景 Windows中通过bat定时执行命令和mysqldump实现数据库备份: Windows中通过bat定时执行命令和mysqldump实现数据库备份_mysqldump bat-CSDN博客 Windows上通过bat实现不同数据库之间同步部分表的部分字段数据: Windows上通过bat实现不同数据库之间…

YOLOv5改进 | SPPF | 将RT-DETR模型AIFI模块和Conv模块结合替换SPPF(全网独家改进)

一、本文介绍 本文给大家带来是用最新的RT-DETR模型中的AIFI模块来替换YOLOv5中的SPPF。RT-DETR号称是打败YOLO的检测模型,其作为一种基于Transformer的检测方法,相较于传统的基于卷积的检测方法,提供了更为全面和深入的特征理解&#xff0c…

【Hadoop面试】HDFS读写流程

HDFS(Hadoop Distributed File System)是GFS的开源实现。 HDFS架构 HDFS是一个典型的主/备(Master/Slave)架构的分布式系统,由一个名字节点Namenode(Master) 多个数据节点Datanode(Slave)组成。其中Namenode提供元数…