分布式锁实现思想

分布式锁用于多线程在不同服务器上的并发控制,确保同一时间只有一个线程执行特定操作。常见的实现方式包括基于数据库、缓存(如Redis)和Zookeeper。Redis实现中,可通过SETNX+EXPIRE保证原子性并设置锁超时,防止死锁,解锁时通过UUID判断并删除锁。
摘要由CSDN通过智能技术生成
什么时候需要用到分布式锁?

需要对一个共享变量进行多线程访问时,为了保证在高并发的情况下,一个方法或者变量在同一时间内只能被一个线程执行。若是单机部署,我们可以用并发控制来保证。若是多机部署,多线程分布在不同的机器上,简单的并发控制已经不能满足要求,这时就需要用到分布式锁。

分布式锁的目的:

系统部署在多个服务器上时,当有多个客户端同时对某个变量进行操作,要保证变量更新的有序性和操作唯一性。
即:不能多个客户端同时对变量进行操作。

分布式锁的三种实现方式

1. 基于数据库实现分布式锁;MySQL…
在数据库中创建一个表,表中包含方法名等字段,在方法名字段上创建一个唯一索引,要想执行某个方法时,需要使用这个方法名向表中插入数据,成功插入则获取锁,执行完再删除对应 的行数据释放锁。
步骤:
① 创建一个表 method_lock(id, method_name, desc, ip, update_time)
② 多个进程同时执行某个方法,那么需要同时在method_lock中插入数据,因为method_lock 的 method_name做了唯一性约束,所以最终只能有一个进程能执行此方法。
③ 成功插入则获取锁,执行完成后删除对应的行数据释放锁。

基于数据库实现分布式锁的缺点:
① 因为这是基于数据库实现的,数据库的可用性和性能将直接影响分布式锁的可用性及性能,所以,数据库需要双机部署、数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值