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

Redisson 看门狗机制

何为看门狗

看门狗机制的主要作用是自动续期锁,确保在节点完成任务之前,锁不会过期。具体来说,当一个节点获取到锁后,看门狗会定期检查该锁的过期时间,并在必要时延长锁的过期时间,确保节点可以顺利完成任务。

步骤

  1. 在获取锁的时候,不能指定leaseTime或者只能将leaseTime设置为-1,这样才能开启看门狗机制。
  2. 在tryLockInnerAsync方法里尝试获取锁,如果获取锁成功调用scheduleExpirationRenewal执行看门狗机制
  3. 在scheduleExpirationRenewal中比较重要的方法就是renewExpiration,当线程第一次获取到锁(也就是不是重入的情况),那么就会调用renewExpiration方法开启看门狗机制。
  4. 在renewExpiration会为当前锁添加一个延迟任务task,这个延迟任务会在10s后执行,执行的任务就是将锁的有效期刷新为30s(这是看门狗机制的默认锁释放时间)
  5. 并且在任务最后还会继续递归调用renewExpiration。

首先获取到锁(这个锁30s后自动释放),然后对锁设置一个延迟任务(10s后执行),延迟任务给锁的释放时间刷新为30s,并且还为锁再设置一个相同的延迟任务(10s后执行),这样就达到了如果一直不释放锁(程序没有执行完)的话,看门狗机制会每10s将锁的自动释放时间刷新为30s。

startWatchdog方法启动了一个定时任务,每隔10秒检查一次当前持有的锁,并调用checkAndExtendLocks方法延长锁的过期时间。extendLeaseTime方法通过执行Redis脚本来更新锁的过期时间,确保锁在任务完成之前不会过期。

看门狗机制的优缺点

优点:
自动续期:看门狗机制可以自动续期锁,确保任务在完成之前锁不会过期。
可靠性高:通过定期检查锁的状态,看门狗机制可以确保锁的持有状态,从而提高系统的可靠性。

缺点:
资源消耗:看门狗机制需要后台线程定期检查锁的状态,这会消耗一定的系统资源。
复杂性增加:看门狗机制的引入增加了系统的复杂性,可能需要额外的调试和维护工作。

优化

合理设置检查频率:根据任务的执行时间和系统的负载情况,合理设置看门狗线程的检查频率,既保证锁的持有状态,又减少系统资源的消耗。 优化Redis脚本:使用高效的Redis脚本来更新锁的过期时间,减少Redis服务器的负载。 监控和报警:建立完善的监控和报警机制,及时发现和处理看门狗机制中的异常情况,确保系统的稳定性。

相关文章:

  • 【大数据技术-HBase-关于Hmaster、RegionServer、Region等组件功能和读写流程总结】
  • 第五天 车载系统安全(入侵检测、OTA安全) 数据加密(TLS/SSL、国密算法)
  • Taccel:一个高性能的GPU加速视触觉机器人模拟平台
  • 用纯HTML和CSS仿写知乎登录页面
  • 图像卷积初识
  • 操作系统实验习题解析 上篇
  • 中国古代史1
  • 关于ffmpeg的简介和使用总结
  • django的权限角色管理(RBAC)
  • 单片机-STM32部分:10-1、485
  • TIME - MoE 模型代码 3.4——Time-MoE-main/time_moe/models/modeling_time_moe.py
  • 【并发编程】基于 Redis 手写分布式锁
  • 鸿蒙系统使用ArkTS开发语言支持身份证阅读器、社保卡读卡器等调用二次开发SDK
  • VBA将PDF文档内容逐行写入Excel
  • OpenLayers根据任意数量控制点绘制贝塞尔曲线
  • Lua—元表(Metatable)
  • c++——二叉树进阶
  • vue 中的ref
  • 多线程 2 - 死锁问题
  • c#建筑行业财务流水账系统软件可上传记账凭证财务管理系统签核功能
  • “行人相撞案”现场视频公布,法院:表述不当造成误导
  • 梅花奖在上海|朱洁静:穿越了人生暴风雨,舞台是最好良药
  • 长期对组织隐瞒真实年龄,广元市城发集团原董事韩治成被双开
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 上海如何为街镇营商环境赋能?送政策、配资源、解难题、强活力
  • 著名国际关系理论家、“软实力”概念提出者约瑟夫•奈逝世