分布式锁简记

分布式锁:跨进程跨物理节点需要一把公共的锁,单机锁并不能应对这种场景。通过分布式锁把分布式场景下并发混乱的操作退化成串行有序的操作

  • 主动轮询型分布式锁,redis,mysql(不推荐使用易单点故障破坏对称性)
    • 通常以setnx命令(弃用)现推荐set xx xx nx保障互斥性,ex保障安全性,nx保障对称性,引入lua保障原子性,主从保障可靠性
    • 多机部署redlock更可靠(获取超过一半节点的锁才加锁成功),但npc(网络延迟、GC暂停、时钟漂移)下仍不可靠。
    • redisson在获取锁之后,会维护一个看门狗线程保障健壮性,当锁即将过期还没有释放时,不断的延长锁key的生存时间
  • 监听回调型分布式锁
    • etcd:租约保证健壮性,超时可续约。根据revision全局唯一递增键大小获取锁,实现公平锁。watch机制返回最接近的最小锁监听事件,可以感知到锁被释放
    • zookeeper:临时节点用心跳机制保障健壮性,最小顺序节点保障公平锁,监听上一个事件通知客户端锁被释放
    • 追求性能使用redis分布式锁,此基础上增加可靠性使用redlock。追求高可靠高安全性不追求性能使用etcd或者zookeeper。
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值