Redis集群消息
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消息是用来让主机加入到集群中,发布消息是用来广播,故障消息是是在节点处于脱机状态的时候进行发布,表示该主机已发生故障。
好了这就是今天的内容了,喜欢的朋友们欢迎给我点赞,嘿嘿
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。 - 有不当之处欢迎批评指正。
- 点赞
- 收藏
- 关注作者
评论(0)