网站建设推广公司范围,wordpress 数据插件,网页制作技术有哪些,泰州网第17章 集群
17.1 节点
使用cluster meet命令将其他节点添加到当前节点集群中
17.1.1 启动节点
通过cluster-enabled设置来决定是否启用集群
17.1.2 集群数据结构
每个节点都保存了自己及其他节点的IP端口号等信息
17.1.3 cluster meet命令的实现
是收到命令的节点和新…第17章 集群
17.1 节点
使用cluster meet命令将其他节点添加到当前节点集群中
17.1.1 启动节点
通过cluster-enabled设置来决定是否启用集群
17.1.2 集群数据结构
每个节点都保存了自己及其他节点的IP端口号等信息
17.1.3 cluster meet命令的实现
是收到命令的节点和新节点握手建立连接并传播这个节点给其他集群节点握手认识
17.2 槽指派
整个数据库为16384个槽(即常说的桶)每个节点处理0-16384个槽当有槽未被指派时整个集群处于下线状态
17.2.1 记录节点的槽指派信息
一个二进制的数组如果相对位置上值为1则代表需要处理该槽
17.2.2 传播节点的槽指派信息
节点会将自己处理的槽信息发给其他节点
17.2.3 记录集群所有槽的指派信息
每一个节点都记录了每个槽是由哪个节点来处理
17.2.4 Cluster addslot命令的实现
1检查指派的槽是否是未指派状态 2分配并记录在clusterNode中
17.3 在集群中执行命令
17.3.1 计算键属于哪个槽
通过Key计算出一个0-16383的值来决定键属于哪个槽
17.3.2 判断槽是否由当前节点负责处理
查看键的槽计算值是否有自己处理否则的话引导向负责该槽处理的节点
17.3.3 Moved错误
如果访问的节点不负责处理这个槽会返回Moved错误引导客户端访问正确的节点在集群模式下的客户端会屏蔽掉这个错误
17.3.4 节点数据库的实现
与单机相比差别不大键与槽的关系使用跳表保存
17.4 重新分片
1通知源节点与目标节点 2将源节点数据分批复制到目标节点
17.5 ASK错误
在重新分片期间被重分配的槽同时由源节点与目标节点操作取决于键的被转移情况。PS所以此时会出现两个节点同时处理一个槽的状况
17.5.1 Cluster Setslot importing 命令的实现
使用一个数组来记录正在被导入的槽
17.5.2 Cluster Setslot mingrating命令的实现
使用一个数组来记录正在被迁移的槽
17.5.3 ASK错误
如果键属于当前节点负责处理的槽但没有找到会到正在被迁移的槽中寻找并返回给客户端ASK错误并返回该键被迁移到的节点与Moved错误相似
17.5.4 ASKING命令
使用该命令可以让节点破例操作正在被导入的槽中的键
17.5.5 ASK与Moved错误的区别
主要可以理解为中间态与稳定态的区别
17.6 复制与故障转移
从节点接替主节点负责的槽继续进行工作
17.7 消息
redis通过发送与接收消息来进行通信消息有其自己的格式