微服务
文章平均质量分 79
微服务
柠檬夕桐
这个作者很懒,什么都没留下…
展开
-
微服务-分布式锁(三)-Zookeeper方案
1 Apache-Curator 如上借助于临时顺序节点,可以避免同时多个节点的并发竞争锁,缓解了服务端压力。这种实现方式所有加锁请求都进行排队加锁,是公平锁的具体实现。Apache-Curator中提供的常见锁有如下: InterProcessMutex:就是公平锁的实现。可重入、独占锁 InterProcessSemaphoreMutex:不可重入、独占锁 InterProcessReadWriteLock:读写锁 InterProcessSemaphoreV2:共享信号量 InterProcess原创 2021-07-26 09:17:48 · 119 阅读 · 0 评论 -
微服务-分布式锁(二)-Redis方案
1 LUA+SETNX+EXPIRE 先用setnx来抢锁,如果抢到之后,再用expire给锁设置一个过期时间,防止锁忘记了释放。 setnx(key, value) setnx 的含义就是 SET if Not Exists,该方法是原子的。如果 key 不存在,则设置当前 key 为 value 成功,返回 1;如果当前 key 已经存在,则设置当前 key 失败,返回 0。 expire(key, seconds) expire 设置过期时间,要注意的是 setnx 命令不能设置 key 的超原创 2021-07-26 09:15:27 · 243 阅读 · 0 评论 -
微服务-分布式锁(一)-MySQL方案
1 基于唯一索引(insert)实现 记录锁的乐观锁方案。基于数据库的实现方式的核心思想是:在数据库中创建一个表,表中包含方法名等字段,并在方法名字段上创建唯一索引,想要执行某个方法,就使用这个方法名向表中插入数据,成功插入则获取锁,执行完成后删除对应的行数据释放锁。 1.1 优缺点 优点 实现简单、易于理解 缺点 没有线程唤醒,获取失败就被丢掉了 没有超时保护,一旦解锁操作失败,就会导致锁记录一直在数据库中,其他线程无法再获得到锁 这把锁强依赖数据库的可用性,数据库是一个单点,一旦数据库挂掉,会导致原创 2021-07-26 09:09:33 · 325 阅读 · 0 评论