作者:忧伤的嫖客 | 来源:互联网 | 2023-05-24 17:35
1,问题描述随着业务发展的需要,原单体单机部署的系统被演变化为集群系统后,由于分布式系统多线程、多进程并且分布在不同的机器上,这将使原单机部署情况下的并发控制锁策略失效
1,问题描述
随着业务发展的需要,原单体单机部署的系统被演变化为集群系统后,由于分布式系统多线程、多进程并且分布在不同的机器上,这将使原单机部署情况下的并发控制锁策略失效,
单纯的JAVA API并不能提供分布式锁的功能,为了解决这个问题就需要一种跨 JVM 的互斥机制共享资源的问题,这就是分布式锁要解决的问题。
分布式锁的主流解决方案:
1)基于数据库实现分布式锁
2)基于缓存(redis 等)
3)基于 Zookeeper
每一种解决方案都有各自的优缺点:
1)性能:redis最高
2)可靠性:zookeeper最可靠
2,基于redis实现分布式锁
1)用setnx设置锁,用del删除key释放锁