首页 > 其他 > 详细

[redis读书笔记] 第二部分 集群

时间:2017-07-03 23:02:38      阅读:350      评论:0      收藏:0      [点我收藏+]

1. 一个集群会包含多个节点(一个节点就是一个reid是服务器),CLUST MEET <ip><port>可以添加一个node到集群,命令执行后,两个node之间就会进行握手,握手成功构成集群

2.节点(即redis服务器)启动时,将cluster-enable配置为YES,来决定是否开启服务器的集群模式,开启的node功能如下

技术分享

技术分享

 

3.集群数据结构

技术分享技术分享

技术分享

 

 技术分享

CLUSTER MEET的流程,在两个node进行了握手后,发起者NODE A会发送gossip协议消息给所有集群里的其他nodes,他们一一和NODE B进行握手,完成整个集群的配置。

技术分享

 

 4. 槽指派

所谓槽,就是对每次键值请求,对键进行散列,散列到一个槽,然后通过槽的指派,找到槽对应的那个node,就由这个node来负责处理这次请求。

REDIS有16384个槽,数据库中每个键都属于这个槽,而每个槽都要有node来处理,只有所有槽都被集群里的node处理了,集群才算上线。

下面命令是分配0-5000给指定的node

CLUSTER ADD SLOT <SLOT> [SLOT......]  :cluster add slot 0 1 2  3 4 ... 5000

 

clusterNode结构用来记录它负责哪些槽,其中slots是一个数组,数组的一个元素占用一个字节,储存8个槽位,即每个bit代表是否管理对应的槽(1为管理),

技术分享

技术分享

 

某个node配置了它所管理的槽位后,会通知集群的其他node,每个node的clusterState.node结构里会记录集群里其他的node(clusterNode结构),然后更新这个结构里的slots数组,这样在任何一个node,都能知道集群里整个slot是如何分配的,哪些node管理哪些槽位

 

[redis读书笔记] 第二部分 集群

原文:http://www.cnblogs.com/jiangz222/p/7113454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!