Redis集群消息

280 阅读2分钟

「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战

Redis集群消息

  redis群集的消息有五种。   

  1. PING消息

  此消息用于检测节点是否在线。 群集中的每个节点从列表中随机选择五个节点并发送PING消息

  2. MEET消息

  MEET消息是客户端发送CLUSTER MEET ip port命令,接收该命令的节点向命令中的ip主机和port主机发送MEET消息,以使该主机加入群集

  3. PONG消息

  PONG消息是指在收到MEET或PING消息后,向发件人发送PONG消息以确认收到了发件人的消息。 当一个节点从从节点成为主节点时,该节点可以通过PONG消息更新其它节点对节点的感知。

  这是cluster.h上的clusterMsgData,这是消息的主体

union clusterMsgData {
    /* PING, MEET and PONG */
    struct {
        /* Array of N clusterMsgDataGossip structures */
        clusterMsgDataGossip gossip[1];
    } ping;

    /* FAIL */
    struct {
        clusterMsgDataFail about;
    } fail;

    /* PUBLISH */
    struct {
        clusterMsgDataPublish msg;
    } publish;

    /* UPDATE */
    struct {
        clusterMsgDataUpdate nodecfg;
    } update;
};

从结构体可以看到这三个消息是由clusterMsgDataGossip构成的

  

  4.发布消息

  当节点接收到PUBLISH命令时,节点在运行该命令的同时向集群广播PUBLISH消息,从而使其他节点也运行该命令。

  clusterMsgDataPublish的结构体

typedef struct {
    // 频道名长度
    uint32_t channel_len;
    // 消息长度
    uint32_t message_len;
    /* We can't reclare bulk_data as bulk_data[] since this structure is
     * nested. The 8 bytes are removed from the count during the message
     * length computation. */
    // 消息内容
    unsigned char bulk_data[8];
} clusterMsgDataPublish;

5.故障消息

  当一个主节点确定另一个主节点处于脱机状态时,故障消息会向群集广播故障消息,以通知另一个节点该节点已脱机。

 

  clusterMsgDataFail结构体

typedef struct {
    // 故障节点的名字
    char nodename[CLUSTER_NAMELEN];
} clusterMsgDataFail;

这就是redis常用的5个消息,我们总结一下就是PING消消息、PONG消息、MEET消息、发布消息和故障消息,PING消息是用来检测节点是否在线的,PONG消息是对收到PING消息或者MEET消息作出的反馈消息,表名消息已经接收到,MEET消息是用来让主机加入到集群中,发布消息是用来广播,故障消息是是在节点处于脱机状态的时候进行发布,表示该主机已发生故障。

好了这就是今天的内容了,喜欢的朋友们欢迎给我点赞,嘿嘿