分布式锁解读
文章平均质量分 94
一个风轻云淡
先搞钱,去养老,当保安,过日子(本人菜鸡一个,又菜又爱敲,希望能和您共同进步,当然如果您有问题,我会的,会尽量及时解答)
展开
-
基于zookeeper实现分布式锁
如果创建的是永久的节点,那么这个锁永远不会释放,导致死锁;例如子节点列表 为/lock/lock-0000000000、/lock/lock-0000000001、/lock/lock-0000000002,序号为1的客户端监听 序号为0的子节点删除消息,序号为2的监听序号为1的子节点删除消息。客户端获取/lock下的子节点列表,判断自己创建的子节点是否为当前子节点列表中序号最小的子 节点,如果是则认为获得锁,否则监听刚好在自己之前一位的子节点删除消息,获得子节点变更通 知后重复此步骤直至获得锁;原创 2023-05-04 07:43:47 · 2165 阅读 · 0 评论 -
Lua脚本语言快速上手(针对redis)
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。原创 2023-05-15 08:01:22 · 1014 阅读 · 1 评论 -
Curator中的分布式锁解读
Curator是netflix公司开源的一套zookeeper客户端,目前是Apache的顶级项目。与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。Curator解决了很多zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册wathcer和NodeExistsException 异常等。原创 2023-05-03 09:47:15 · 2838 阅读 · 0 评论 -
redisson中的分布式锁解读
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅 提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。原创 2023-05-10 07:45:49 · 1426 阅读 · 0 评论 -
基于redis实现分布式锁
特征:1.独占排他:setnx2.防死锁:redis客户端程序获取到锁之后,立马宕机。给锁添加过期时间不可重入:可重入3.防误删:先判断是否自己的锁才能删除4.原子性:加锁和过期时间之间判断和释放锁之间5.可重入性:hash + lua脚本6.自动续期:Timer定时器 + lua脚本锁操作:1.加锁:1.setnx:独占排他 死锁、不可重入、原子性2.set k v ex 30 nx:独占排他、死锁 不可重入。原创 2023-05-08 07:57:27 · 1241 阅读 · 2 评论 -
【五一创作】基于mysql关系型实现分布式锁
在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只能保证一个jvm内的线程安全。在分布式集群、微服务、云原生横行的当下,如何保证不同进程、不同服务、不同机器的线程安全问题,jdk并没有给我们提供既有的解决方案。此时,我们就必须借助于相关技术手动实现了。目前主流的实现有三种方式:1. 基于mysql关系型实现2. 基于redis非关系型数据实现3. 基于zookeeper实现。原创 2023-05-02 09:56:14 · 3338 阅读 · 4 评论