Redis深入学习

Redis集群-消息

2020-09-21  本文已影响0人  于情于你

    集群中的各个节点通过发送和接收消息(message)来进行通信,我们称发送消息的节点为发送者(sender),接收消息的节点为接收者(receiver).

节点发送的消息主要有5种:
    MEET消息∶当发送者接到客户端发送的CLUSTER MEET命令时,发送者会向接收者发送MEET消息,请求接收者加入到发送者当前所处的集群里面。
    PING 消息∶集群里的每个节点默认每隔一秒钟就会从已知节点列表中随机选出五个节点,然后对这五个节点中最长时间没有发送过PING 消息的节点发送PING消息,以此来检测被选中的节点是否在线。除此之外,如果节点A最后一次收到节点B发送的PONG消息的时间,距离当前时间已经超过了节点A的cluster-node-timeout选项设置时长的一半,那么节点A也会向节点B发送PING消息,这可以防止节点A因为长时间没有随机选中节点B作为PING消息的发送对象而导致对节点B的信息更新滞后。
    PONG消息∶当接收者收到发送者发来的MEET消息或者PING消息时,为了向发送者确认这条 MEET消息或者PING消息已到达,接收者会向发送者返回一条 PONG 消息。另外,一个节点也可以通过向集群广播自己的PONG消息来让集群中的其他节点立即刷新关于这个节点的认识,例如当一次故障转移操作成功执行之后,新的主节点会向集群广播一条 PONG 消息,以此来让集群中的其他节点立即知道这个节点已经变成了主节点,并且接管了已下线节点负责的槽。
    FAIL消息∶当一个主节点A判断另一个主节点B已经进人FAIL状态时,节点A 会向集群广播一条关于节点B的FAIL消息,所有收到这条消息的节点都会立即将节点B标记为已下线。
    PUBLISH消息∶当节点接收到一个PUBLISH命令时,节点会执行这个命令,并向集群广播一条 PUBLISH消息,所有接收到这条 PUBLISH消息的节点都会执行相同的PUBLISH命令。

上一篇 下一篇

猜你喜欢

热点阅读