我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

redis-再谈分布式锁(十九)

发表于 2021-06-04 | 0 | 阅读次数 224

拾遗补漏——再谈分布式锁

在集群环境下,直接使用指令加锁是不安全的。当主节点挂掉后,从节点开始取而代之,当第一个客户端在主节点成功申请一把锁,但这把锁还没同步到从节点,这样系统同样一把锁被两个客户端持久。

不过这种不安全也仅在主从发生failover的情况下才产生,而且持续时间极短,业务系统大多情况可以容忍

Readlock算法

加锁时,它会向过半节点发送set(key,value,nx=True,ex=xxx)指令,只要过半set成功,就认为加锁成功。释放锁时,需要向所有节点发送del指令。不过Redlock算法还需要考虑出错重试、时钟漂移等很多细节问题,同时因为Redlock需要向多个节点进行读写,性能会下降一些

Redlock使用场景

如果很在乎高可用性,希望即使挂了一台Redis也完全不受影响,就应该考虑Redlock。不过代价也是有的,需要更多的Redis实例,性能也下降了,代码上还需要引入额外的library,运维也要特殊对待,都是需要考虑的成本

  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/redis-readlock
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
redis-Stream(十八)
redis-cluster(二十)
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号