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

分布式锁;Redlock

文章目录

    • 普通单 Redis 锁
    • 多节点 Redlock
      • Raft
    • redis分布式锁宕机被破坏怎么恢复(答红锁觉得效率太低……)
      • Zookeeper

普通单 Redis 锁

SET key value NX PX ttl

持锁客户端宕机,锁会在 ttl 过期后自动释放。
但是过期时间太长影响别人获取;太短业务还没处理完也不行。也要避免释放别人锁。

多节点 Redlock

官方解读: https://redis.io/docs/latest/develop/clients/patterns/distributed-locks/

在 N 个独立 Redis 节点上加锁,保证大多数节点(过半)同意加锁才成功。

理论上防止单节点故障导致锁失效。
但是效率低,需要多次网络交互,容易受时钟漂移影响。(多个独立节点,机器的时钟可能不同 而导致问题)

Raft

Raft 是一个分布式共识协议,保证多个节点之间的一致性。

  • 锁的状态写入 Raft 集群的日志
  • 只有写入日志且被多数节点确认,锁才算加成功。
  • 即使某些节点宕机,只要多数节点存活,锁状态就不会丢失。

redis分布式锁宕机被破坏怎么恢复(答红锁觉得效率太低……)

  • 心跳续租:
    单节点定时续租
  • Redis Stream / 队列 + 唯一标识:
    改为从消息队列中取消息执行
  • 外部协调服务:
    etcd / Zookeeper / Consul 提供分布式一致性锁。

Zookeeper

Zookeeper 是一个分布式协调服务,核心提供 一致性、高可用、顺序性、原子性 的特性。

常用于:分布式锁、配置管理、集群管理、命名服务
ZK 不是高吞吐量服务,锁竞争频繁时可能成为瓶颈

分布式锁:

  • 每个客户端在某个目录下创建一个 临时顺序节点。

  • 节点的序号天然表示了申请锁的顺序。

  • 拿到最小序号的客户端获得锁。

  • 当锁释放(客户端删除节点或会话断开)时,其他客户端通过监听前一个节点,继续竞争锁。

操作流程:

假设锁路径是 /locks/my_lock。 (ZK的目录)

  1. 客户端在 /locks/my_lock 下创建临时顺序节点
    /locks/my_lock/lock-000000001
    /locks/my_lock/lock-000000002
    /locks/my_lock/lock-000000003
  2. 客户端获取自己节点的序号,并查看是否是最小序号
    最小序号 → 获得锁
    不是 → 监听比自己小的前一个节点的删除事件(WATCH)
  3. 当前一个节点被删除 → 收到事件 → 再次检查自己是否最小 → 如果是则获得锁
  4. 客户端完成任务后删除自己的节点,释放锁
http://www.dtcms.com/a/352462.html

相关文章:

  • 【世纪龙科技】职业院校汽车职业体验中心建设方案
  • imx6ull-驱动开发篇43——I.MX6U 的 I2C 驱动分析
  • 如何在ubuntu下制作linux镜像
  • 深度学习之卷积神经网络原理(cnn)
  • AT_abc401_f [ABC401F] Add One Edge 3
  • Rocky9配置完VMware桥接模式后没有自动获取IP
  • 系统架构设计师-【2025上半年论文题目分享】
  • 六足机器人系统设计与实现cad+设计说明书+电路原图模式+装配图+电路图
  • Java设计模式之《状态模式》
  • 从根源解决 VMware 每次重启 Windows 系统后无法进行复制文件等操作的问题
  • 矩阵的秩几何含义
  • openssh 版本回退
  • Spring Ai (Function Calling / Tool Calling) 工具调用
  • 78-dify案例分享-零基础上手 Dify TTS 插件!从开发到部署免费文本转语音,测试 + 打包教程全有
  • 使用【阿里云百炼】搭建自己的大模型
  • Linux网络设备分析
  • 构建绿色园区新方案:能源监测+用电安全的综合能源管理系统
  • LeetCode - 227. 基本计算器 II
  • C++ `std::map` 解析:`find`, `end`, `insert` 和 `operator[]`
  • redis 在 nodejs 中如何应用?
  • 常用 Kubernetes (K8s) 命令指南
  • DevSecOps 集成 CI/CD Pipeline:实用指南
  • 【RAGFlow代码详解-30】构建系统和 CI/CD
  • 【智能化解决方案】大模型智能推荐选型系统方案设计
  • 简明 | ResNet特点、残差模块、残差映射理解摘要
  • VGVLP思路探索和讨论
  • C++ 并发编程中的锁:总结与实践
  • 绝命毒师模拟器2|单机+联机+绝命毒师模拟器1 全DLC(Drug Dealer Simulator 2+1)免安装中文版
  • 事件驱动架构详解
  • AI Agent安全的“阿喀琉斯之踵”:深度解析MCP核心风险与纵深防御架构