zookeeper应用实战之分布式锁

1. 什么是分布式锁?

我们先来看这样一个场景,如下图所示,两个用户同时去抢购秒杀商品,当秒杀服务同时收到秒杀请求时,都去进行库存扣减,此时在没有做任何处理的情况下,就会导致库存数量变成负数从而导致超卖现象。

这种情况下如果是单体项目,我们一般会选择加锁的方式来避免并发的问题。但是在分布式场景中,采用传统的锁并不能解决跨进程并发的问题,所以需要引入一个分布式锁,来解决多个节点之间的访问控制。

zookeeper应用实战之分布式锁_第1张图片

2. Zookeeper如何实现分布式锁

实现分布式的方式有很多种,本文主要讲述如何使用zookeeper实现分布式锁。我们可以基于zookeeper的两种特性来实现分布式锁,首先我们来看第一种:

2.1 唯一节点特性

我们可以基于唯一节点特性来实现分布式锁的操作,如下图所示。多个应用程序去抢占锁资源时,只需要在指定节点上创建一个 /Lock 节点,由于Zookeeper中节点的唯一性特性,使得只会有一个用户成功创建 /Lock 节点,剩下没有创建成功的用户表示竞争锁失败。

zookeeper应用实战之分布式锁_第2张图片

这种方法虽然能达到目的,但是会有一个问题,如下图所示&#x

你可能感兴趣的:(面试,学习路线,阿里巴巴,分布式,java-zookeeper,zookeeper,服务器,开发语言)