分布式锁

分布式锁

  • 资源
  • 互斥
  • 可用

墙上时间

有效租期

  • session的有效时间,client 一定比server小, 由client 主动发起续租,避免机器之间时间漂移 而无法严格对对齐的问题

切换时间

  • client 与server 的HB 间隔比较长,带来的问题是 client 因故障没有主动释放锁,那其它的锁竞争者(client) 只能等到 session 超时才会重新抢锁。在一些应用场景下对服务可用性有不小的不利影响。
  • 反之,虽然锁切换时间变短,但对于server 会产生较大的压力,也可能因网络短时间抖动导致锁的丢失。

多系统的协作

存在这种场景:

  • client a 持有锁,在时间T0因某种原因(如著名的JavaGC) hang,导致锁已丢失,且client a 业务层还没有感知,继续在T1时间对服务S进行写操作(W)。
  • client b 在T0.6时抢到锁,在T0.8执行W。
  • 这种情况下,a 在T1的W 其实是非法的(导致的问题如写坏数据)
    解决这种情况,分布式锁服务可以把session id 做成严格自增,或者生一个严格自增的token,client W时带入S,S拒绝掉小的id/token。 方案来自于Martin Kleppmann.
    在这里插入图片描述

ref

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值