【原】编程界的小学生
什么都要会一点,这样装起逼来不会尴尬。
展开
-
【目录】从0到1玩转分布式锁底层原理
分布式锁是什么?为什么需要分布式锁?如何用MySQL实现一把分布式锁?Redis实现分布式锁的核心原理以及利弊分布式锁核心类库Redisson初识Redisson加锁的核心底层源码Redisson锁是如何做到可重入和互斥性的?Redisson的看门狗watchDog机制是怎么实现的?Redisson释放锁的核心底层源码Redisson分布式公平锁的核心架构和核心源码剖析Redisson分布式读写锁的核心架构和核心源码剖析Redisson的RedLock红锁实现原理是什么zk分布式锁原理原创 2021-09-19 13:04:01 · 473 阅读 · 0 评论 -
Zookeeper实现分布式锁的核心原理
文章目录INFO一、回顾二、实现思路三、安全性INFO作者: 编程界的小学生日期: 2021/09/20修订: 初版,未修订。2021/09/20版权: 内部资料,切勿泄漏,违者必究。一、回顾之前我们花了十几个篇幅来讲解分布式锁是什么以及Redis实现分布式锁的各种方式的底层源码剖析。实现分布式锁的方式不仅有Redis,还有Zookeeper,那Zookeeper如何实现分布式锁呢?相当于Redis来讲,Zookeeper实现分布式锁太简单了!也相对更可靠。二、实现思路Zookeeper实原创 2021-09-20 14:52:54 · 504 阅读 · 0 评论 -
分布式锁是什么?为什么需要分布式锁?
文章目录INFO一、为什么需要分布式锁?1、为什么需要锁?2、JVM锁二、什么是分布式锁?三、分布式锁必须具备的东西四、实现分布式锁的常用方式1、mysql2、redis3、zookeeper4、etcd五、常见的分布式锁应用场景六、总结INFO作者: 编程界的小学生日期: 2021/09/03修订: 初版,未修订。2021/09/05版权: 内部资料,切勿泄漏,违者必究。一、为什么需要分布式锁?1、为什么需要锁?假设现在就做个同时在线人数的功能,那我们怎么做?小菜鸡想到了:public原创 2021-09-18 23:16:40 · 449 阅读 · 2 评论 -
如何用MySQL实现一把分布式锁?
文章目录INFO一、原理二、代码实现1、SQL2、锁工具类3、使用INFO作者: 编程界的小学生日期: 2021/09/05修订: 初版,未修订。2021/09/05版权: 内部资料,切勿泄漏,违者必究。一、原理mysql分布式锁主要实现核心就是利用唯一索引插入重复数据会报错来实现。插入冲突后就代表并发了,然后就休息一段时间继续重试,或者不休息直接CAS进行重试,插入成功后就代表抢锁成功,执行完后需要释放锁。(如果没看明白的话不要紧,下一篇会介绍mysql实现分布式锁的核心伪代码以及原理)不原创 2021-09-18 23:17:55 · 1023 阅读 · 0 评论 -
Redis实现分布式锁的核心原理以及利弊
文章目录INFO一、关键点1、原子性2、过期时间3、锁续期4、释放锁二、Redis实现分布式锁的几种方式1、单机2、哨兵3、集群4、红锁三、Redis实现分布式锁的利弊1、优点2、缺点四、总结INFO作者: 编程界的小学生日期: 2021/09/06修订: 初版,未修订。2021/09/06版权: 内部资料,切勿泄漏,违者必究。一、关键点原子性过期时间释放锁锁续期1、原子性比如如下就不具有原子性,就是错误的代码:boolean lockStatus = stringRedisT原创 2021-09-18 23:19:56 · 1486 阅读 · 0 评论 -
分布式锁核心类库Redisson初识
文章目录INFO一、文档二、核心功能三、整合SpringBoot1、pom2、Java3、最简单的lock四、总结INFO作者: 编程界的小学生日期: 2021/09/07修订: 初版,未修订。2021/09/07版权: 内部资料,切勿泄漏,违者必究。一、文档源码地址:https://github.com/redisson/redisson中文文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95英文文档:https:原创 2021-09-18 23:21:53 · 323 阅读 · 0 评论 -
Redisson加锁的核心底层源码
文章目录INFO一、Demo1、pom2、Java3、最简单的lock二、源码剖析1、create(config)2、getLock("myLock")3、小结4、lock()5、给哪台机器加锁?三、总结1、图解2、核心2.1、加锁lua2.2、重入lua2.3、阻塞lua3、补充INFO作者: 编程界的小学生日期: 2021/09/08修订: 初版,未修订。2021/09/08版权: 内部资料,切勿泄漏,违者必究。一、Demo1、pom<dependency> <g原创 2021-09-18 23:24:04 · 307 阅读 · 0 评论 -
Redisson锁是如何做到可重入和互斥性的?
文章目录INFO一、回顾二、可重入三、互斥性四、总结INFO作者: 编程界的小学生日期: 2021/09/08修订: 初版,未修订。2021/09/08版权: 内部资料,切勿泄漏,违者必究。一、回顾上一篇讲解了加锁的核心流程,稍微提到了一点如何做到可重入的,如何做到互斥的。这篇就来详细分析下可重入和互斥的源码细节。二、可重入可重入就在于一段lua脚本:"if (redis.call('hexists', KEYS[1], ARGV[2]) == 1) then " + "redi原创 2021-09-18 23:26:27 · 385 阅读 · 0 评论 -
Redisson的看门狗watchDog机制是怎么实现的?
文章目录INFO一、回顾二、WatchDog1、啥意思2、原理三、总结INFO作者: 编程界的小学生日期: 2021/09/09修订: 初版,未修订。2021/09/09版权: 内部资料,切勿泄漏,违者必究。一、回顾上一篇讲解了加锁的核心流程、可重入是怎么做的以及互斥性是怎么实现的,但是如果业务代码没执行完锁却过期了,这时候怎么办?这不就线程不安全了吗?别急,Redssion内部有个看门狗机制,WatchDog!二、WatchDog1、啥意思如果业务代码没执行完,锁却过期了,这时候其他线原创 2021-09-18 23:28:40 · 7675 阅读 · 5 评论 -
Redisson释放锁的核心底层源码
文章目录INFO一、回顾二、原理三、总结INFO作者: 编程界的小学生日期: 2021/09/09修订: 初版,未修订。2021/09/09版权: 内部资料,切勿泄漏,违者必究。一、回顾前面讲解了一把锁的基本功能和基本原理,比如加锁流程、watchDog、锁重入以及锁的互斥性实现原理,既然锁加成功了,那今天这篇该知道是如何释放的呢?二、原理@Overridepublic void unlock() { try { // 核心在unlockAsync方法原创 2021-09-18 23:30:16 · 405 阅读 · 0 评论 -
Redisson分布式公平锁的核心架构和核心源码剖析
文章目录INFO一、什么是公平锁和非公平锁?1、公平锁2、非公平锁二、公平锁和非公平锁的核心原理1、公平锁2、非公平锁三、Redisson的公平锁1、加锁2、重入3、排队4、超出等待时长四、总结INFO作者: 编程界的小学生日期: 2021/09/13修订: 初版,未修订。2021/09/13版权: 内部资料,切勿泄漏,违者必究。一、什么是公平锁和非公平锁?1、公平锁比如A、B、C三个线程,A先抢到锁了,后来C比B先到一步,那么,A执行完会释放锁,释放锁后C会继续持有锁,而不是B,这就是公平原创 2021-09-18 23:32:00 · 323 阅读 · 0 评论 -
Redisson分布式读写锁的核心架构和核心源码剖析
文章目录INFO一、什么是读写锁?二、读写锁的核心原理1、读写锁具备哪些特点?2、写锁如何加锁?3、读锁如何加锁?4、watchDog怎么工作?1、写锁2、读锁5、读锁怎么释放?6、写锁怎么释放?三、RedissonReadWriteLock的实现1、如何加读锁?2、如何加写锁?3、读读怎么共享的?4、读写怎么互斥的?5、写写怎么互斥的?6、watchDog怎么工作的?1、写锁2、读锁7、可重入锁是怎么做的?1、写锁2、读锁8、读锁怎么释放的?1、安全检查2、删除锁3、续期/删除9、写锁怎么释放的?1、安全原创 2021-09-19 12:46:23 · 303 阅读 · 0 评论 -
Redisson的MultiLock联锁实现原理是什么
文章目录INFO一、Demo二、RedissonMultiLock是什么三、核心原理四、核心源码1、构造器2、lock()3、unlock()五、总结INFO作者: 编程界的小学生日期: 2021/09/11修订: 初版,未修订。2021/09/11版权: 内部资料,切勿泄漏,违者必究。一、Demo直接照着官方抄来的Demo,官方地址附属到下面了。RLock lock1 = redissonInstance1.getLock("lock1");RLock lock2 = redissonI原创 2021-09-19 12:46:36 · 891 阅读 · 0 评论 -
Redisson的RedLock红锁实现原理是什么
文章目录INFO一、Demo二、RedLock设计思想三、RedissonRedLock源码1、加锁2、解锁四、总结INFO作者: 编程界的小学生日期: 2021/09/11修订: 初版,未修订。2021/09/11版权: 内部资料,切勿泄漏,违者必究。一、Demo直接照着官方抄来的Demo,官方地址附属到下面了。RLock lock1 = redissonInstance1.getLock("lock1");RLock lock2 = redissonInstance2.getLock(原创 2021-09-19 12:46:47 · 1432 阅读 · 0 评论 -
Redisson信号量Semaphore底层剖析
文章目录INFO一、回顾二、什么是Semaphore三、源码剖析1、getSemaphore2、trySetPermits(n)3、acquire(n)4、release(n)四、总结五、可过期性信号量六、应用场景INFO作者: 编程界的小学生日期: 2021/09/12修订: 初版,未修订。2021/09/12版权: 内部资料,切勿泄漏,违者必究。一、回顾我们前面花了大量篇幅详细讲解了Redisson的各种锁的实现原理和源码分析,比如非公平锁可重入锁、公平可重入锁、联锁、红锁以及最复杂的读写原创 2021-09-19 12:46:57 · 1370 阅读 · 3 评论 -
Redisson闭锁CountDownLatch底层剖析
文章目录INFO一、回顾二、什么是闭锁三、源码剖析1、getCountDownLatch2、trySetCount3、await4、countDown四、总结五、和信号量区别INFO作者: 编程界的小学生日期: 2021/09/12修订: 初版,未修订。2021/09/12版权: 内部资料,切勿泄漏,违者必究。一、回顾再看看这个图,我们距离成功还差一步之遥,闭锁!今天的重点。二、什么是闭锁设置一个锁数量,然后必须达到这么多数量之后才能进行下面的执行,否则一直阻塞。和JDK下的CountD原创 2021-09-19 12:47:07 · 320 阅读 · 0 评论 -
Redisson分布式锁总结
文章目录INFO阶段性小结1、可重入锁2、公平锁3、联锁/红锁4、读写锁5、信号量/可过期性信号量/闭锁6、总结INFO作者: 编程界的小学生日期: 2021/09/09修订: 初版,未修订。2021/09/17版权: 内部资料,切勿泄漏,违者必究。阶段性小结至此,我们讲解完了Redisson里面各种锁以及各种锁加锁和解锁的核心底层源码,也就是下面这些:1、可重入锁第一个被官方称之为可重入锁,我觉得不如叫非公平锁,因为他确实是非公平的,而且他很简单,只是基础的加锁和解锁流程,但是他确是核原创 2021-09-19 12:47:16 · 378 阅读 · 0 评论