码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-07-03 23:52:37      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:更新   http   个数   一个   数组   开启   部分   命令执行   oss   

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   个数   一个   数组   开启   部分   命令执行   oss   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!