Redission分布式锁

实现过程:

只要线程一加锁成功,就会启动一个 watch dog 看门狗,它一个后台线程, 会每隔 10 秒检查一下,如果线程 1 还持有锁,那么就会不断延长锁 key 生存时间。因此,Redisson 解决了锁过期释放,业务没执行完问题。 

Redlock 算法:

 假设有N个Redis master节点,这些节点都是完全独立的。

1、.获取当前时间,以毫秒为单位。

2、轮流用相同的key和随机值在N个节点上请求锁,在这一步里,客户端在每个master上请求锁时,会有一个和总的锁释放时间相比小的多的超时时间。比如如果锁自动释放时间是10秒钟,那每个节点锁请求的超时时间可能是5-50毫秒的范围,这个可以防止一个客户端在某个宕掉的master节点上阻塞过长时间,如果一个master节点不可用了,我们应该尽快尝试下一个master节点。

3、客户端计算第二步中获取锁所花的时间,只有当客户端在大多数master节点(超过一半master)上成功获取了锁,而且总共消耗的时间不超过锁释放时间,这个锁就认为是获取成功了。

4、如果锁获取成功了,那现在锁自动释放时间就是最初的锁释放时间减去之前获取锁所消耗的时间

5、如果锁获取失败了,不管是因为获取成功的锁不超过一半(N/2+1)还是因为总消耗时间超过了锁释放时间,客户端都会到每个master节点上释放锁,即便是那些他认为没有获取成功的锁。

建议:

redlock最好和切片集群搭配使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT常用prompts汇总

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

springboot感受优化06

01.健康检查 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>如何查看项目的健康程度 http://localhost/actuator/health 假如希望查看更多actuator选项…

基于SpringBoot+Vue的家政平台

基于SpringBootVue的家政平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&…

命名空间和程序集

目录 一、什么是命名空间 1. 命名空间的作用 2. 命名空间跨文件伸展 3.嵌套命名空间 二、using指令 1. using命名空间指令 2. using别名指令 三、程序集的结构 1. 程序集标识符 2.强命名程序集 一、什么是命名空间 1. 命名空间的作用 命名空间是共享命名空间名的一组…

160. 相交链表 ——【Leetcode每日一题】

160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c…

CSS基础知识,必须掌握!!!

CSS基础知识Background&#xff08;背景&#xff09;CSS文本格式文本颜色文本对齐格式文本修饰文本缩进CSS中的字体字体样式字体大小CSS链接&#xff08;link&#xff09;CSS列表不同列表标项CSS列表项用图片作为标记CSS列表标记项位置CSS中表格&#xff08;table&#xff09;表…

Android:启动流程

Android启动流程 第一步&#xff1a;启动电源以及系统启动 当电源按下&#xff0c;引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序到RAM&#xff0c;然后 执行 第二步&#xff1a;引导程序 引导程序是在Android操作系统开始运行前的一个小程序。引导程序…

城乡供水一体化管控平台-农村供水监管平台-乡村振兴

建设方案 城乡供水一体化管控系统是运用云计算、大数据等信息化手段&#xff0c;借助在线监测设备&#xff0c;并依托“供水信息化平台”&#xff0c;实时感知供水系统的运行状态&#xff0c;实现对农村供水工程远程监控、在线监测、实时预警、智慧监管。 系统功能 水源地监测&…

聚类问题的算法总结

目录 一、K-means算法 1、算法原理 2、如何确定K值 3、算法优缺点 二、DBScan聚类 1、算法原理 2、处理步骤 3、算法优缺点 聚类代码实现 聚类算法属于无监督学习&#xff0c;与分类算法这种有监督学习不同的是&#xff0c;聚类算法事先并不需要知道数据的类别标签&am…

Nuxt中使用vuex管理组件信息通讯

首先 你手上要有一个Nuxt项目 然后 我们先来引入依赖 npm install vuex3 --save要指定一下版本 这样 我们的vuex就进来了 然后 Nuxt项目的根目录下一般就有一个 store 目录 是专门用来让我们建vuex环境的 在下面创建一个index.js 参考代码如下 import Vue from vue import V…

图像分割技术及经典实例分割网络Mask R-CNN(含基于Keras Python源码定义)

图像分割技术及经典实例分割网络Mask R-CNN&#xff08;含Python源码定义&#xff09; 文章目录图像分割技术及经典实例分割网络Mask R-CNN&#xff08;含Python源码定义&#xff09;1. 图像分割技术概述2. FCN与语义分割2.1 FCN简介2.2 反卷积2.2 FCN与语义分割的关系3. Mask …

一文看懂多模态大型语言模型GPT-4

文章目录前言什么是GPT-4GPT-4 VS GPT-3.5GPT-4与其他模型对比GPT-4视觉输入GPT-4局限性写在最后前言 近日&#xff0c;OpenAI发布了最新版的生成预训练模型GPT-4。据官方介绍&#xff0c;最新一代的模型是一个大模型&#xff0c;性能比CPT-3.5强悍很多&#xff0c;不仅仅是接…

设计模式之监听模式

本文将会介绍设计模式中的监听模式。   监听模式是一种一对多的关系&#xff0c;可以有任意个&#xff08;一个或多个&#xff09;观察者对象同时监听某一个对象。监听的对象叫观察者&#xff08;Observer&#xff09;&#xff0c;被监听的对象叫作被观察者&#xff08;Obser…

签订合同Signing a Contract

前言 加油 原文 签订合同常用会话 ❶ Do you have any comments on this clause? 你对这项条款有什么意见吗? ❷ We agree with the terms and conditions. 我们同意这些条款及条件。 ❸ Please check the draft of the contract. 请您好好检查合约内容。 ❹ Two origin…

TenserRT(一)模型部署简介

第一章&#xff1a;模型部署简介 — mmdeploy 0.12.0 文档 pytorch.onnx.export方法参数详解&#xff0c;以及onnxruntime-gpu推理性能测试_胖胖大海的博客-CSDN博客 我们来谈谈ONNX的日常 - Oldpan的个人博客 初识模型部署 训练&#xff1a;网络结构&#xff08;深度学习框…

人人都能看懂的Spring源码解析,Spring如何解决循环依赖

人人都能看懂的Spring源码解析&#xff0c;Spring如何解决循环依赖原理解析什么是循环依赖循环依赖会有什么问题&#xff1f;如何解决循环依赖问题的根本原因如何解决为什么需要三级缓存&#xff1f;Spring的三级缓存源码走读Spring的三级缓存提前暴露getSingleton方法总结往期…

Leetcode653. 两数之和 IV - 输入二叉搜索树

题目链接 Leetcode653. 两数之和 IV - 输入二叉搜索树 easy 题目描述 给定一个二叉搜索树 root和一个目标结果 k&#xff0c;如果二叉搜索树中存在两个元素且它们的和等于给定的目标结果&#xff0c;则返回 true。 示例 1&#xff1a; 输入: root [5,3,6,2,4,null,7], k 9 …

JavaScript 解析Json字符串的性能比较分析代码

我们在使用AJAX来做服务器端和客户端交互的时候&#xff0c;一般的做法是让服务器端返回一段JSON字符串&#xff0c;然后在客户端把它解析成JavaScript对象。 解析时用到的方法一般是eval或者new function&#xff0c;而目前IE8和Firefox3.1又内置了原生的JSON对象&#xff08…

WeakTr阅读笔记

WeakTr: Exploring Plain Vision Transformer for Weakly-supervised Semantic Segmentation 论文链接 代码链接 本文研究了用于弱监督语义分割(WSSS)的普通ViT的特性。观察到不同的ViT注意头对不同的图像区域的关注&#xff1a;提出了一种基于权重的端到端估计注意头重要性的…

Spring销毁的几种实现

有这3种方法&#xff0c;但是程序执行完成并没有打印出来。一定要手动close.手动执行后会调用如下逻辑&#xff1a;org.springframework.context.support.AbstractApplicationContext#doCloseorg.springframework.context.support.AbstractApplicationContext#destroyBeansorg.…
最新文章