分布式锁设计

一、基于redis分布式锁设计

1、实现方式:setnx  key  value  expire  time

2、存在问题:

    a、单实例:高可用不能满足

    b、主从:主加锁后,尚未同步到从,主宕机,锁不存在,会出现重复加锁问题

3、官方建议:使用redlock算法来保证,利用多数成功才算加锁成功,需要至少三个redis主从实例来实现,成本较高。

问题本质:分布式锁要求CP模型,redis集群是AP模型!

 

二、分布式锁要求

1、强一致性

2、服务高可用

3、宕机锁能自动释放,能够续约

4、可视化管理、监控

 

三、分布式锁方案对比

 rediszookeeperetcd
一致性算法paxosraft
CAPAPCPCP/AP
高可用主从超半数可用超半数可用
接口类型客户端客户端http/grpc
实现setnxcreateEphemeral临时节点restful API

1、redis无法保证数据一致性

2、zookeeper对锁实现采用:创建临时节点和watch机制,执行效率、扩展能力、社区活跃度低于etcd

3、建议选择etcd实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值