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