
分布式锁
liangshitian
java开发工程师
展开
-
springboot整合redisson实现分布式锁
1、为什么要用分布式锁? 在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好,库存数量可能被减少到负数,出现超卖的情况,或者 产生唯一的一个递增ID,由于web应用部署在多个机器上,简单的同步加锁是无法实现的,给数据库加锁的话,对于高并发,1000/s的并发,数据库可能由行锁变成表锁,性能下降会厉害。这个时候就需要用分布式锁了实现分布式锁的方式很多,我们今天就用redis的分布式锁,redisson也是官方比较推荐的。当然我们其实也可以自己用redis的setn原创 2020-05-24 17:01:10 · 16555 阅读 · 1 评论 -
基于zookeeper实现分布式锁(springboot整合)
1、分布式锁的实现方式 大概有三种: 基于关系型数据库(基于mysql数据库的分布式锁) 基于缓存(基于redis的redisson实现分布式锁) 基于zookeeper(本文讲解了基于zookeeper的分布式锁) 2、安装zookeeper 安装教程请参考:linux下zookeeper集群安装,有集群和单机安装配置。 3、springboot集成实现 3.1、pom引入 <!-- zookeeper 客户端 --> <dependen原创 2020-06-04 17:27:55 · 12762 阅读 · 0 评论 -
基于mysql数据库的分布式锁
1、分布式锁的实现方式 大概有三种: 基于关系型数据库(本文讲解了基于mysql数据库的分布式锁) 基于缓存(基于redis的redisson实现分布式锁) 基于zookeeper 2、思路 利用主键唯一的特性,如果有多个请求同时提交到数据库的话,数据库会保证只有一个操作可以成功,那么我们就可以认为操作成功的那个线程获得了该方法的锁,当方法执行完毕之后,想要释放锁的话,删除这条数据库记录即可(性能上依赖数据库)。 3、创建表 CREATE TABLE `data_base_lock` (原创 2020-05-24 17:48:21 · 14866 阅读 · 2 评论