在分布式系统中,多个线程访问共享数据就会出现数据安全性的问题。而由于jdk中的锁要求多个线程在同一个jvm中,因此在分布式系统中无法使用jdk中的锁保证数据的安全性,那么此时就需要
使用分布式锁。
作用:可以保证在分布式系统中多个线程访问共享数据时数据的安全性
举例:
在电商系统中,用户在进行下单操作的时候需要扣减库存。为了提高下单操作的执行效率,此时需要将库存的数据存储到Redis中。订单服务每一次生成订单之前需要查询一下库存数据,如果存在则生成
订单同时扣减库存。在高并发场景下会存在多个订单服务操作Redis,此时就会出现线程安全问题。
演示:导入基础工程(distributed-locks),演示分布式系统中的线程安全问题。
分布式锁的工作原理:
分布式锁应该具备哪些条件:
1、在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行
2、高可用的获取锁与释放锁
3、高性能的获取锁与释放锁
4、具备可重入特性
5、具备锁失效机制,防止死锁
可重入特性:获取到锁的线程再次调用需要锁的方法的时候,不需要再次获取锁对象。
使用场景:遍历树形菜单的时候的递归调用。
精品推荐
发布者:admin,如若转载,请注明出处:https://ai1024.vip/43270.html