-
Notifications
You must be signed in to change notification settings - Fork 45.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RedLock实现分布式锁 #567
Comments
你好 这篇文章是读者投稿的,对于 RedLock实现分布式锁 这部分我的了解不多,可能需要自己详细学习一遍才能为你解答。 |
如果有错误请指正。 先说答案:
之前研究过一段时间,用的是 Redisson 框架,这里是 Redission 实现 Redlock 的官方文档 。以下为个人见解,可能有误 背景
重点如下:
以下用图加深理解 两主两从的集群与 Redlock红框代表的是一个标准的 Redis 集群:它是有六个 Redis 节点间共享数据的程序集。 对于 Redlock 来说,这个集群中的两个 Master 不是互相独立的,而且是有集群协调机制的。因此它们不符合使用 Redlock 的场景。你会想,那我只连接一个 Master 可以吧,是可以的,但是也不是标准的 Redlock 的,因为不符合 N 个 Redis master 要求。 综上:如果你只有一个标准的集群,无论里面有多少个 Master,都是不符合 Redlock 的使用场景的,主要在于一个集群内的 Master 间它们不是互相独立的。 两个独立集群下的 Redlock红框和蓝框分别代表两个独立的标准的 Redis 集群,它们分别是有三个 Redis 节点间共享数据的程序集。 对于 Redlock 来说,一共有两个符合要求的 Master,因此是符合 Redlock 的使用场景。这两个 Master 的同步只在自己的集群内和 Slave 同步。但是不允许这两个 Master 跨集群间同步,因为如果跨集群同步了,那么就不符合 Master 互相独立的要求了。 复杂的两个独立集群下的 Redlock这里每个集群内部有两个 Master,此时对于 Redlock 来说,它只认为有一组 Master(Master1-Master2、Master1-Master22、Master11-Master2、Master11-Master22) 是互相独立的。(前提在于这两个集群之间并不同步)
总结
备注关于图的连线,是直接连接 Master 还是连接集群,其实这里要说一下 Redis-cluster,客户端连接集群时,选择集群的任意一个节点连接,在集群中会自动转发到对应的 Master 做操作。 发现仓库里关于 Redis 的文章基本都是 Copy 的,感觉可以再细化成一篇做为原创文章 PR~:shit: 如果有错误请指正。
|
先说说我的见解:
|
刚学习到这,有几处问题实在理解不了,希望博主不吝赐教一下:
1、redlock 中的多个节点跟平时理解的redis的集群模式 是不是一回事呢?
2、各个节点之间是如何同步数据的呢?
The text was updated successfully, but these errors were encountered: