![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式锁
zglx123
这个作者很懒,什么都没留下…
展开
-
分布式锁实战(五)典型应用场景之书籍抢购
书籍抢购整体业务流程分析数据库设计在实际的生产环境中,也确实可以看到分布式锁的身影,本节将以实际项目中典型业务场景“书籍抢购模块”为案例,巩固之前的知识整体业务流程分析上图中,不难发现,核心流程有三个1.判读用户是否抢购过该商品2.商品库存是否充足3.更新书籍的库存并插入用户的抢购记录中因此,又可以分成以下两大块数据库设计CREATE TABLE `book_stock` ( `id` int(11) NOT NULL, `book_no` int(11) DEFAULT NU原创 2020-09-14 14:11:57 · 173 阅读 · 0 评论 -
分布式锁实战(四)基于ZooKeeper实现分布式锁
基于ZooKeeper实现分布式锁Zookeeper的简洁与作用Zookeeper分布式锁的实现流程和原理Springboot整合Zookeeper本章基于ZooKeeper的临时节点和Watcher机制实现分布式锁,包括其实现流程与底层的执行原理,并以前文所用的的用户重复提交注册信息 为案例,配以实际的代码进行实战Zookeeper的简洁与作用Zookeeper是雅虎设计的用于开发一个通用的,无单点问题的分布式协调框架,采用统一的协调管理方式更好管理各个子系统,从而让开发者将更多的精力集中在业务管理原创 2020-09-12 22:53:11 · 156 阅读 · 0 评论 -
分布式锁实战(三)基于Redis的分布式锁
基于Redis的分布式锁Redis复习分布式锁的实现流程和原理基于Redis实战实现分布式锁数据库设计除了之前我们数据层面的锁,业界上还包括基于Redis的原子操作实现分布式锁。以及Zoopkeeper的临时节点,和Watcher机制实现分布式锁。本章将讲述Redis的原子性操作实现分布式锁Redis复习在之前抢红包的模块中,其实setnx就是原子性操作,并且它是以key-value存储的数据结构,具有丰富的数据类型,并且应用场景非常适合高并发分布式锁的实现流程和原理上述得出结论3个核心1原创 2020-09-12 00:08:11 · 186 阅读 · 0 评论 -
分布式锁实战(二)基于数据库实现分布式锁
基于数据库实现分布式锁乐观锁乐观锁实战数据库设计悲观锁实战乐观锁乐观锁是一种佛系(乐观的)锁,在操作数据的时候永远数据不会被其他线程共享,但是在数据持久化的时候,检查数据是否正常通常采用一个版本号version的机制实现1.取出数据的时候,顺便取出版本号version2.数据持久化的时候,将version作为存储条件,更新成功后version+13.而其他线程如果获取同样的数据进行操作,在持久化的时候由于version已经不是之前获取的那个值了,所以更新失败。sql语法如下update ta原创 2020-09-11 15:00:18 · 313 阅读 · 0 评论 -
分布式锁实战(一)概述
分布式锁实战分布式锁的概念锁机制分布式锁登场基于数据库级别的乐观锁基于数据库级别的悲观锁基于Redis的原子操作基于Zookeeper的互斥排它锁如今的企业级互联网大都存在“集群”,将一个子系统多实例化,经过负载均衡分摊用户的请求,这种集群式的部署,给企业级应用带来性能和效率上的提升,但是也带来了不少问题,如高并发场景下多个线程同时访问、操作共享资源的时候,出现了数据不一致的现象,比如商品入库,出现了超卖,针对这种情况,业界普遍采用的是分布式锁加以解决本章开始将将探索分布式锁的相关要点。分布式锁的概念原创 2020-09-08 17:41:03 · 150 阅读 · 0 评论