分布式锁

本文阐述了分布式锁在高并发场景下确保资源访问控制的重要性,分析了其必备条件,包括独占性、高可用性、高性能及锁失效机制。探讨了三种主要实现方式:基于数据库的唯一索引、基于Redis的非阻塞锁和基于Zookeeper的顺序节点,对比了各自的优缺点。
摘要由CSDN通过智能技术生成

随着业务的发展,需要一个应用部署到多个机器做负载均衡,为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,控制并发,就需要使用分布式锁控制做个资源的访问。

1、分布式锁应该具备哪些条件
1)在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;
2)高可用的获取锁与释放锁;
3)高性能的获取锁与释放锁;
4)具备可重入特性;
5)具备锁失效机制,防止死锁;
6)具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。
2、分布式锁实现方式
1)基于数据库实现分布式锁:创建唯一索引
2)基于缓存(Redis等)实现分布式锁:释放锁使用expire(设置超时时间),delete key
3)在Zookeeper当中创建一个持久节点ParentLock,当第一个客户端想要获得锁时,需要在ParentLock这个节点下面创建一个临时顺序节点 。Client查找ParentLock下面所有的临时顺序节点并根据创建时间排序,如果是顺序最靠前的一个的第一个节点,则成功获得锁。如果不是,则向排序仅比它靠前的节点Lock注册Watcher,用于监听Lock节点是否存在,此时此节点处与等待状态。
优点:具备高可用、可重入、阻塞锁特性,可解决失效死锁问题。
缺点:因为需要频繁的创建和删除节点,性能上不如Redis方式。

临时顺序节点等待状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值