redis的clustermeet命令
Posted 周杰伦本人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的clustermeet命令相关的知识,希望对你有一定的参考价值。
@[TOC]
redis的clustermeet命令
今天给大家介绍一下reids的集群形成用到的命令clustermeet命令。
Redis 集群的形成是通过CLUSTERMEET 命令完成的。
CLUSTER MEET ip port 允许节点与ip和port指定的节点握手。如果握手成功,则两个节点组成一个集群。
要了解CLUSTER MEET命令的原理,需要知道集群模式下使用的数据结构,cluster.h中的clusterNode clusterLink clusterState。
clusterState
clusterState记录了当前节点所考虑的集群的当前状态,clusterState有一个属性节点字典,记录了集群节点,字典的key为节点名,value为对应的集群节点。单词。
clusterNode
clusterNode 结构存储节点的当前状态。每个节点都使用clusterNode来记录自己的信息,clusterNode的链接属性是clusterLink结构
clusterLink
clusterLink结构中存放的是连接节点的信息。
typedef struct clusterLink
// 连接创建的时间
mstime_t ctime; /* Link creation time */
// TCP连接的文件描述符
int fd; /* TCP socket file descriptor */
// 输出(发送)缓冲区
sds sndbuf; /* Packet send buffer */
// 输入(接收)缓冲区
sds rcvbuf; /* Packet reception buffer */
// 关联该连接的节点
struct clusterNode *node; /* Node related to this link if any, or NULL */
clusterLink;
CLUSTER MEET的流程
知道了这一点,当客户端发送IP CLUSTER MEET 端口命令时,接收命令的节点与指定节点进行通信。具体来说
当前节点为指定节点创建一个clusterNode,并将创建的clusterNode添加到节点字典中。
当前节点根据自己的IP和端口向指定节点发送MEET消息。
指定节点收到命令后,创建集群节点,加入节点字典,返回PONG消息。
当前节点收到PONG消息后,就知道指定节点收到了消息,发送PING消息。
指定节点收到PING消息后,指定节点知道当前节点也收到了PONG消息,说明双方已经完成握手。
当前节点完成与指定节点的握手后,集群中的其他节点可以通过gossip协议与指定节点建立握手。
这就是CLUSTERMEET命令的大体内容了,redis的集群大概就是使用这个命令来完成的。
总结
今天从它涉及的数据结构出发讲解了一下CLUSTER MEET的命令实现,希望对你有帮助
以上是关于redis的clustermeet命令的主要内容,如果未能解决你的问题,请参考以下文章