page contents

redisson惊群效应是怎么解决的

Pack 发布于 2020-02-22 19:00
阅读 1005
收藏 0
分类:nosql缓存

比如现在某个服务有200个节点,这200个节点同时收到请求要去拿分布式锁.
结果必然是只有一个节点可以拿到锁,其它节点全是无效请求.如此重复每次都有大量请求是无效的(拿不到锁,被其它节点先下手为强),但是这个访问压力是已经给到了redis上.
redisson是如何解决这个问题的?
前些日子面试被问到,我自己看源码的能力菜鸡,所以希望大佬能结合源码通俗讲一下,或者给一个资料(ps:我自己百度查不到相关博客)…

424
Pack
Pack

我没搞过,最近学习zookeeper给我了一个思路:首先zk里注册一个节点表示锁。然后客户端请求锁时,往zk上注册一个子节点(200个节点的服务器,最多又200个子节点,可以接受)。然后判断最小的节点获取锁,同时每个不是最小的节点,监听比它小1号的节点。当最小的节点删除时,触发第二小的节点的事件。这些工作做完后剩下的就简单了:
最小的节点使用完锁就删除他自己,然后会触发次小的节点获取锁,然后以此类推,大家轮流来,每次只会唤醒一个节点,不会导致千军万马过独木桥。

请先 登录 后评论