上一篇 <<<Seata与Lcn的区别
下一篇 >>>基于数据库实现分布式锁
实现思路 | 优点 | 缺点 | |
---|---|---|---|
利用mysql实现方案 | 利用数据库自身提供的锁机制,要求数据库支持行级锁 | 实现简单,稳定可靠 | 性能差,无法适应高并发场景;容易出现死锁的情况;无法优雅的实现阻塞式锁 |
利用redis的实现方案 | 使用setnx和lua脚本机制实现,保证对缓存操作序列的原子性 | 性能好 | 实现相对较复杂,有出现死锁的可能性,无法优雅的实现阻塞式锁 |
利用zookeeper的实现方案 | 基于zk的节点特性以及watch机制实现 | 性能好,稳定可靠性高,能较好的实现阻塞式锁 | 实现相对复杂 |
从理解的难易程度角度(从低到高)
数据库 > 缓存 > Zookeeper
从实现的复杂性角度(从低到高)
Zookeeper >= 缓存 > 数据库
从性能角度(从高到低)
缓存 > Zookeeper >= 数据库
从可靠性角度(从高到低)
Zookeeper > 缓存 > 数据库
推荐阅读:
<<<Redis实现分布式锁的原理分析
<<<Redis分布式锁的实现代码示例
<<<使用Redisson工具实现分布式锁
<<<Redis官方提出的redlock分布式锁
<<<Zookeeper示例之分布式锁
<<<基于数据库实现分布式锁
<<<基于数据库排他锁实现分布式锁
<<<基于数据库或排他锁实现分布式锁总结
网友评论