思维导图
前言
经过《ZooKeeper入门》后,我们学会了ZooKeeper的基本用法。
实际上ZooKeeper的应用是非常广泛的,实现分布式锁只是其中一种。接下来我们就ZooKeeper实现分布式锁解决秒杀超卖问题进行展开。
一、什么是秒杀超卖问题
秒杀活动应该都不陌生,不用过多解释。
不难想象,在这种”秒杀”的场景中,实际上会出现多个用户争抢”资源”的情况,也就是多个线程同时并发,这种情况是很容易出现数据不准确,也就是超卖问题。
1.1 项目演示
下面使用程序演示,我使用了SpringBoot2.0、Mybatis、Mybatis-Plus、SpringMVC搭建了一个简单的项目,github地址:
创建一个商品信息表:
1 | CREATE TABLE `tb_commodity_info` ( |
添加一个商品[叉烧包]进去:
核心的代码逻辑是这样的:
1 |