Redis实现

优点:性能好

缺点:

对某个 redismaster 实例,写入了 myLock 这种锁 key 的 value,此时会异步复制给对应的 masterslave 实例。
但是这个过程中一旦发生 redismaster 宕机,主备切换,redisslave 变为了 redismaster。
接着就会导致,客户端 2 来尝试加锁的时候,在新的 redismaster 上完成了加锁,而客户端 1 也以为自己成功加了锁。
此时就会导致多个客户端对一个分布式锁完成了加锁。
这时系统在业务语义上一定会出现问题,导致各种脏数据的产生。
所以这个就是 rediscluster,或者是 redismaster-slave 架构的主从异步复制导致的 redis 分布式锁的最大缺陷:在 redismaster 实例宕机的时候,可能导致多个客户端同时完成加锁。

ZK实现

优点:高可靠 zk本身通过leader+quorum机制保障高可靠。

缺点:ZooKeeper实现的分布式锁,性能并不太高。为啥呢?
因为每次在创建锁和释放锁的过程中,都要动态创建、销毁瞬时节点来实现锁功能。大家知道,ZK中创建和删除节点只能通过Leader服务器来执行,然后Leader服务器还需要将数据同步到所有的Follower机器上,这样频繁的网络通信,性能的短板是非常突出的。

redis和zk实现分布式锁的优缺点相关推荐

  1. 浅析redis与zookeeper构建分布式锁的异同

    作者:架构小菜 链接:https://www.jianshu.com/p/508620a76e00 进程请求分布式锁时一般包含三个阶段:1. 进程请求获取锁:2. 获取到锁的进程持有锁并执行业务逻辑: ...

  2. Redis与Zookeeper实现分布式锁的区别

    Redis与Zookeeper实现分布式锁的区别 1.分布式锁解决方案 1.采用数据库 不建议 性能不好 jdbc 2.基于Redis实现分布式锁(setnx)setnx也可以存入key,如果存入ke ...

  3. redisson redlock(基于redisson框架和redis集群使用分布式锁)

    一.关于分布式锁的两篇文章 文章1 文章2 二.redis分布式锁存在的问题 redis实现分布式锁有很多种方案,比较完善的方案应该是用setNx + lua进行实现.简单实现如下: java代码-加 ...

  4. 在 Redis 上实现的分布式锁

    由于近排很忙,忙各种事情,还有工作上的项目,已经超过一个月没写博客了,确实有点惭愧啊,没能每天或者至少每周坚持写一篇博客.这一个月里面接触到很多新知识,同时也遇到很多技术上的难点,在这我将对每一个有用 ...

  5. redis set 超时_redis分布式锁3种实现方式对比分析总结

    我在这篇文章提到了分布式锁,但没有展开来讲,抛砖引玉,今天就来说说高并发服务编程中的redis分布式锁. 这里罗列出3种redis实现的分布式锁,并分别对比说明各自特点. Redis单实例分布式锁 实 ...

  6. Redis应用学习——Redis事务与实现分布式锁

    2019独角兽企业重金招聘Python工程师标准>>> 1. Redis事务机制 1. 与MySQL等关系数据库相同,Redis中也有事务机制,Redis的事务实质上是命令的集合,但 ...

  7. Redis使用setnx实现分布式锁及其问题、优化

    最近在工作中用到了分布式锁,然后查了很多分布式锁的实现方式.比较熟悉redis或者说,redis的用法比较简单,所以查了一下redis使用setnx实现分布式锁的方式.其中有一篇文章搜索到的次数最多, ...

  8. Day137-139.尚品汇:制作SKU、商品详情、项目优化:Redis缓存、redssion分布式锁

    目录 Day5  制作SKU 1. 制作SKU 2. 多表查询如何写? 3. 制作SKU 4. Thymeleaf Day06 商品详情 1. 获取分类信息 2. 获取最新价格信息 3. 获取销售信息 ...

  9. ZK实现分布式锁的记录

    实现分布式锁有很多种方式: 1:数据库方式: 谁先插入数据库值成功, 谁就获取锁. 2: 缓存方式 3: zookeeper 实现分布式锁, 推荐这种方式 zk实现分布式锁的原理及流程: 临时节点 + ...

最新文章

  1. 2004-10-26+ 用户输入的安全问题
  2. 对象必须实现 iconvertible_Java I/O 流之数据流_对象流
  3. 《中国人工智能学会通讯》——2.31 跨环境抽象(Abstracting Across Environments)
  4. 【学习笔记】SAP FI 业务范围的概念
  5. int main(argc,*argv)中argc,argv的相关说明
  6. GoldenGate的ADD SCHEMATRANDATA命令研究
  7. MySQL千万数据量深分页优化
  8. 【Python】模块学习之ConfigParser读写配置信息
  9. 如何使用Caddy部署Vue项目
  10. cv mat 灰度值和_c++ 访问OpenCV中灰度图像的像素值
  11. pssh Oracle,服务器批量执行工具 PSSH
  12. python 文件名随自变量变化_Python 求解自行车前后轮轨迹问题
  13. python删除链表_基于Python和C++实现删除链表的节点
  14. hexo之Volantis主题美化
  15. 金融期货具体的开户条件
  16. APQ:联合搜索网络架构、剪枝和量化
  17. [OpenAirInterface实战-17] :OAI 软件无线电USRP N300/N310硬件详解
  18. 网络中的IP地址(包括私网地址)
  19. Apache Log4j 2.0-rc1 发布
  20. 自己封装的poi操作Excel工具类

热门文章

  1. 最长的指定瑕疵度的元音字串
  2. SDCC 2017·深圳站八大不容错过的理由
  3. C51单片机教程之工程建立
  4. c语言将一个四位正整数倒排,输入一个四位正整数,将其逆序输出.如:输入1234,输出4321...
  5. 【Python】唯品会购买商品
  6. java选填_java-选择填空题库
  7. 1688-cat_get - 获得1688商品分类
  8. 第八届蓝桥杯Java A组决赛第一题
  9. 读《470个建筑设计创意发想》
  10. 使用Poi-tl 生成word文档 处理word特殊符号方框带勾选 解决方法