什么是看门狗机制?它是如何给Redis的Key续约?

Redisson的看门狗机制 首先呢,本文参考了这篇文章https://www.cnblogs.com/keeya/p/14332131.htm,这个文章被抄袭了很多次,如果你搜一下【Redisson的看门狗机制】会出现很多个一样的内容,但是个人阅读源码后,发现里面有部分说的不是特别的准确,和我个人理解的对不上。那么在次之上,我就把我对redis实现分布式锁中看门狗这个机制,表达一下我的理解,为了保存逻辑的完整性,我索性也就搬运了这个文章的内容,但是文中,表达一下,我的个人理解:据Redisson官网的介绍,Redisson是一个Jav 阅读详情

Redisson 的看门狗机制是其分布式锁实现中的一个关键特性。看门狗主要用于自动管理锁的持有时间,确保在对共享资源进行操作时锁不会意外过期,从而避免潜在的并发问题。

1. 什么是看门狗

“看门狗”(Watchdog)是一个广泛应用于计算机科学和工程领域的术语,指的是一种监控机制,用于监督系统、应用程序或硬件的正常运行,并在检测到异常或故障时采取预定义的恢复措施。看门狗的主要目的是提高系统的可靠性和稳定性,防止系统挂起或出现长时间的无响应状态。

2. 看门狗的主要类型

从整体上看,看门狗的主要类型包含两种:硬件看门狗和软件看门狗。

2.1 硬件看门狗

  1. 定义:硬件看门狗(Hardware Watchdog)通常是集成在微处理器或独立的硬件模块中的定时器,用于监控系统的运行状态。
  2. 工作原理:系统需要定期“喂狗”(即重置定时器),以表明其正常运行。如果系统出现挂起或故障,无法按时喂狗,定时器便会超时,触发看门狗复位系统或执行其他预定义动作,如生成中断信号。
  3. 应用场景:广泛应用于嵌入式系统、工业控制系统、服务器等需要高可靠性的设备中。

2.2 软件看门狗

  1. 定义:软件看门狗(Software Watchdog) 是一种运行在操作系统或应用程序中的监控机制,负责监督软件的运行状态。
  2. 工作原理:软件看门狗通常以独立的线程或进程形式存在,定期检查被监控的任务或服务是否正常响应。如果检测到被监控任务无响应或出现异常,软件看门狗可以采取措施,如重启任务、发送警报或记录日志。
  3. 应用场景:适用于需要监控多个软件组件健康状态的应用,如服务器管理、分布式系统、微服务架构等。

3. 看门狗的工作原理

看门狗的工作原理主要包括以下 3个核心步骤:

1. 自动续期:

  • 当一个线程成功获取到分布式锁后,Redisson 会为该锁设置一个初始的有效期(例如 30 秒)。
  • 一旦锁被持有,Redisson 的看门狗机制会启动一个后台线程,定期(通常是锁有效期的一半时间)发送命令给 Redis,以自动延长锁的过期时间。
  • 这样,只要持有锁的线程仍在运行且未显式释放锁,锁的有效期将被持续延长,防止锁过期导致其他线程误以为锁已经释放。

2. 锁释放:

  • 当持有锁的线程完成其任务后,应该显式地调用 unlock 方法释放锁。
  • 释放锁后,看门狗将停止续期,不再对锁的有效期进行管理。

3. 异常情况处理:

  • 如果持有锁的线程因为异常或其他原因终止,看门狗不会再续期锁的有效期,锁将在其原始有效期到期后自动释放,避免死锁的发生。

为了更好地理解看门狗的工作原理,下面是一个使用 Redisson 分布式锁和看门狗机制的简单示例:

import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

publicclass RedissonWatchdogExample {
    public static void main(String[] args) {
        // 配置 Redisson
        Config config = new Config();
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");

        RedissonClient redisson = Redisson.create(config);

        // 获取锁对象
        RLock lock = redisson.getLock("myLock");

        // 获取锁并自动续期(默认锁时间 30 秒)
        lock.lock();

        try {
            // 执行需要锁保护的业务逻辑
            System.out.println("锁已获取,执行任务...");
            // 模拟任务执行时间
            Thread.sleep(60000); // 60 秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            // 显式释放锁
            lock.unlock();
            System.out.println("锁已释放");
        }

        // 关闭 Redisson 客户端
        redisson.shutdown();
    }
}

4. 注意事项

  1. 锁的初始有效期:-默认情况下,Redisson 的看门狗会为锁设置一个 30 秒的初始有效期。如果业务操作预计会超过这个时间,可以通过 lock(long leaseTime, TimeUnit unit) 方法显式设置更长的有效期,或者调整 Redisson 的配置参数。
  2. 避免死锁:确保在业务逻辑执行完成后,始终调用 unlock 方法释放锁,防止由于程序异常或其他原因导致锁无法及时释放。
  3. 性能和资源消耗:看门狗的自动续期需要额外的网络请求和资源,因此在高并发场景下,应合理评估其对系统性能的影响。
  4. 分布式环境:确保所有参与分布式锁管理的实例都正确配置了 Redisson,并且能够稳定连接到 Redis 服务器,以保证看门狗机制的正常运行。

5. 总结

本文,我们详细地分析了什么是看门狗以及Redisson 的看门狗机制,它通过自动续期锁的有效期,简化了分布式锁的管理,减少了开发人员手动处理锁续期的复杂性。然而,理解其工作原理和注意潜在的配置细节,对于确保系统的可靠性和性能至关重要。

看门狗的详细介绍(重点:喂狗操作应该在主循环或其他正常运行的代码段中执行,而不是在中断服务函数中进行) 但当系统死机时,将无法执行正常的喂狗操作,看门狗的计数值就会一直递减到0,使系统复位,程序正常工作。例如我们将分频系数的寄存器配置为8,将定时器重载值的寄存器配置为4095,rc振荡器的时钟位32kHZ,32kHZ八分频等于4kHZ,4kHZ的周期是0.25ms,然后0.25*(4095+1)=1024ms,1024ms就是看门狗的超时复位时间。如果系统发生死机了,即使喂狗操作在定时器中断服务函数中,依然无法正常喂狗,因为如果系统发生死机,整个程序的执行都会停止,包括中断的触发和执行。 阅读详情

相关推荐

Redisson看门狗机制你了解多少

这里也是对之前redisson锁的知识遗漏点的一个学习,结合实际的业务开发使用的案例,来分析锁的底层原理,从而来避免我在使用过程中遇到问题,能有更加清晰的解决思路,理解不对的地方也欢迎大家在评论区提出。

m0_71777195的博客 1085

【Redis进阶】一文搞懂Redisson的看门狗机制底层实现

看门狗机制是Redission提供的一种自动延期机制,这个机制使得Redission提供的分布式锁是可以自动续期的。看门狗机制提供的默认超时时间是30*1000毫秒,也就是30秒如果一个线程获取锁后,运行程序到释放锁所花费的时间大于锁自动释放时间(也就是看门狗机制提供的超时时间30s),那么Redission会自动给redis中的目标锁延长超时时间。在Redission中想要启动看门狗机制,那么我们就不用获取锁的时候自己定义leaseTime(锁自动释放时间)。如果自己定义了锁自动释放时间的话,无论是通过。

沉迷写代码的程序猿的博客 3万+

Redisson分布式锁的可重入、重试、续约机制原理

Redisson分布式锁的可重入、重试和看门狗机制的原理

Shadow_T的博客 6912

Redis的看门狗机制

Redis锁的延期机制,通常被称为“看门狗”机制,是为了处理持有锁的客户端在执行任务时发生崩溃或网络分区等异常情况,导致锁无法被释放,从而避免死锁的发生。

ksidgx的博客 5229

米哈游 AI产品经理面试题精选:10道高频考题+答案解析(附PDF)

米哈游是全球知名游戏开发商,以《原神》《崩坏》系列著称,专注二次元文化与AI技术创新。本文整理了10道AI产品经理面试题,涵盖Transformer架构、智能NPC设计、机器学习应用、AIGC产品规划等核心领域。题目既考察技术理解(如RAG原理、多模态模型),又关注产品落地(游戏平衡性优化、伦理安全),同时强调跨团队协作能力。参考答案均结合米哈游业务场景,体现技术驱动与玩家体验并重的产品思维,展现AI在游戏行业的创新应用前景。

ZHHHHH15的博客 683

士兰微SC7A20H三轴加速度计在智能穿戴设备中的运动检测实践

本文详细介绍了士兰微SC7A20H三轴加速度计在智能穿戴设备中的运动检测实践,包括其工作原理、硬件设计避坑指南、运动检测算法优化、低功耗设计及校准测试技巧。SC7A20H凭借±16g超宽量程和0.004g高精度,成为智能穿戴设备的运动感知核心,适用于计步、6D方向检测等场景,显著提升用户体验。

weixin_29168153的博客 744

一文搞懂!什么是看门狗机制?它是如何给Redis的Key续约?

看门狗”(Watchdog)是一个广泛应用于计算机科学和工程领域的术语,指的是一种监控机制,用于监督系统、应用程序或硬件的正常运行,并在检测到异常或故障时采取预定义的恢复措施。看门狗的主要目的是提高系统的可靠性和稳定性,防止系统挂起或出现长时间的无响应状态。本文,我们详细地分析了什么是看门狗以及Redisson 的看门狗机制,它通过自动续期锁的有效期,简化了分布式锁的管理,减少了开发人员手动处理锁续期的复杂性。然而,理解其工作原理和注意潜在的配置细节,对于确保系统的可靠性和性能至关重要。

Java架构师之路的博客 3284

告别IMEI!手把手教你用UUID实现Android设备唯一标识(兼容Android 10-13)

本文详细探讨了在Android 10及以上版本中,如何构建合规且高可用的设备唯一标识方案以替代被限制访问的IMEI。文章深入分析了Android设备标识符的演变,并提供了基于UUID/GUID的完整实现策略,包括生成算法、多级持久化存储方案(如MediaStore)、权限处理以及版本兼容性实践,帮助开发者应对Android 10-13的隐私政策变化。

weixin_28339967的博客 576

redission的看门狗机制及应用

Redisson提供的分布式锁是支持锁自动续期的,也就是说,如果线程仍旧没有执行完,那么redisson会自动给redis中的目标key延长超时时间,这在Redisson中称之为 Watch Dog 机制。默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改来另行指定。// 拿锁失败时会不停的重试// 具有Watch Dog 自动延期机制 默认续30s 每隔30/3=10 秒续到30s// 尝试拿锁10s后,没有Watch Dog。

a3337779的博客 9410

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

我用两个月时间,终于把优快云付费资源项目玩明白了!

关于项目的定位,这是一个知识付费项目,根据市场研究机构的数据显示,到2023年,全球知识付费市场规模将达到2000亿美元,所以说知识付费的前景是十分广阔的,当下互联网时代信息大爆炸,80后、90后、00后群体对知识付费的认可度也大幅提升,同时这群作为知识付费的主流人群已经具备了更强的消费能力,而且对于知识付费的需求更高。目前整个知识付费领域仍然在发展起步的初期,尽快在知识付费领域布局可以帮助我们在这波红利中获得一份不错的收益。而且个人认为,

白话机器学习 2万+

Redisson、看门狗、时间轮、RedLock红锁算法、lua脚本

Redisson、看门狗、时间轮、红锁、lua脚本

qq_42352936的博客 926

基于ROS的室内移动机器人自主导航技术

随着机器人技术的发展,近些年来室内移动机器人的研究热度越来越高。本文主要利用ROS操作系统对室内移动机器人的建图定位与自主导航关键技术进行研究。 ROS是目前开发较为完整具有广阔应用前景的开源机器人操作系统,具有分布式、模块化、代码复用等优良特点。同时ROS还提供了许多开源库,在这些库的基础之上研究同时定位与地图构建和机器人自主导航技术可以节省大量时间。 ORB-SLAM2是比较优秀的视觉SLAM算法之一,它具有计算量比较小、能够实时运行等优点。在介绍ORB-SLAM2的框架之前,首先会介绍视觉SLAM的一

weixin_44553616的博客 1911

Redis缓存与Redission分布式锁

如果是"写操作",还是要老老实实写数据库,缓存并不能提高性能。缓存一般用于存储热点数据(被经常访问的数据),可以应对大部分请求。

2402_84411549的博客 1001

基于Transformers库的BERT模型:一个文本情感分类的实例解析

简介 本文来讲述BERT应用的一个例子,采用预训练好的BERT模型来进行演示。BERT的库来源于Transformers,这是一个由PyTorch编写的库,其集成了多个NLP领域SOTA的模型,比如bert、gpt-2、transformer xl等,并且可以自由选择已经预训练好的模型参数,我们可以基于这些参数进行进一步的训练调试。 Part 1: 利用BERT基于特征的方式进行建模 1、任务与数...

蓝天白云梦的csdn博客 2万+

一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文)

学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。

Tongzhou_Li的博客 2645

Redis中什么是看门狗机制

问题回答Redis 原生支持看门狗吗?否,Redis 原生命令不支持看门狗机制。需要由客户端实现。谁实现了看门狗机制?如 Redisson、Lettuce(手动续约)、Spring RedisTemplate(需配合手动实现)有什么作用?自动续锁,防止锁因时间不足失效,增强可靠性如果你在使用 Redis 进行分布式锁控制,建议使用支持看门狗机制的客户端,或者你也可以自定义一个心跳续约线程模拟“看门狗”。需要我提供一个 Java 看门狗续锁机制的示例代码吗?

error_log7的博客 994

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

详解Redis锁误删、原子性难题及Redisson加锁底层原理、WatchDog续约机制

本文探讨了Redis分布式锁的实现及其潜在问题。首先分析了基本的SETNX加锁命令可能存在的误删问题(线程A超时释放锁后被线程B获取,而线程A后续操作误删线程B的锁)。解决方案是通过为每个锁添加唯一标识(UUID+线程ID组合),并在删除时进行验证。针对原子性问题,文章提出使用Lua脚本保证判断锁标识和释放锁的原子性操作。 重点介绍了Redisson的分布式锁实现机制: 通过Lua脚本执行原子性加锁/释放操作 采用"看门狗"机制自动续约(默认每10秒续期30秒) 支持可重入锁和不同租期设

先做到 再看见 1479

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Redisson分布式锁的看门狗机制与续约策略深度解析

本文深度解析了Redisson分布式锁的看门狗机制与续约策略。该机制通过后台守护线程自动为持有锁的业务进行续约,有效解决了因业务执行时间不确定或GC停顿导致的锁意外过期问题,保障了分布式场景下的数据一致性。文章详细阐述了其触发条件、核心原理、性能考量及与可重入锁的协同工作方式。

kubernetes8ctl的博客 162

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

redission 看门狗机制

Redis 的“看门狗”是 ​Redisson 框架为解决分布式锁业务执行超时问题而设计的自动续期机制。它通过后台线程定期刷新锁的过期时间,确保只要客户端进程存活且未主动释放,锁就不会过期,从而保障了分布式锁在长耗时业务场景下的安全性。这是 Redisson 相比原生 Redis 命令或简单客户端实现分布式锁的一个重要优势。使用时需理解其默认行为和配置选项。看门狗怎么知道线程有没有执行完任务?Redisson 的看门狗机制并不直接监控业务线程的执行状态,而是通过一种巧妙的 ​。

只为成功找方法 不为失败找借口 956

Redis典型应用 - 分布式锁,引入过期时间,Lua脚本原子解锁操作,看门狗机制实现过期时间动态续约,Redlock算法

本文主要介绍了Redis是如何用来被当做分布式锁的,以及分布式锁的实现,使用Redis作为分布式锁的注意点:如何设置锁的过期时间?如何对锁的身份进行校验?如何使用Lua脚本实现原子解锁?看门狗机制是如何完成锁过期时间续约的?Redlock算法的引入

Steadfast_GG的博客 1495

Redis分布式锁续约机制详解(面向秋招重点)

摘要:分布式锁业务未完成但锁已过期的问题,可通过三种方案解决:(1)根据业务类型合理设置超时时间(建议为平均执行时间的3倍);(2)实现WatchDog自动续约机制,定时检查业务线程存活状态并续期;(3)采用Redisson官方方案,内置看门狗线程每TTL/3时间自动续约。关键实现要点包括:锁信息存储结构设计、续约时机计算(TTL/3)、异常处理机制,以及确保释放锁的原子性。生产环境推荐使用Redisson方案,因其具有自动续约、可重入等特性。

m0_73884648的博客 518
上一篇: 并发编程中的 ABA问题是什么?如何解决?
下一篇: MySQL面试(三)
程序员职业指南
博客等级 码龄4年 2138粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值