• redis集群 相关


    redis集群中如果有3对主从节点,其中有一对挂掉 集群还能正常工作吗?(不能)

    1.正常启动3对主从节点的集群,查看集群节点信息

    2.kill掉当前的一个主节点6379

    发现,与6379对应的从节6389点变为主节点,仍能正常从集群查询数据

    3.关闭6389主节点,并进行数据查询

    发现获取数据异常!

    分析:

    消息机制

    redis cluster集群中通过消息来进行通信。消息共有以下5种。

    meet消息:发送者会向接受者发送cluster meet命令,请求接受者将发送者加入到集群中。上文提到的无中心网络结构就是使用meet命令构建的。

    ping消息:集群中的每个节点每秒钟都会从已知节点列表选举出5个节点,然后从这5个节点中选中一个最长时间没有发送ping消息的节点作为目标节点来发送ping消息,来检测目标节点是否处于在线状态。

    pong消息:接受者接受到发送者发送的meet消息或者ping消息后,会回复pong消息,用于确认消息已经到达。另外,pong消息也可以用于刷新接收者对发送者的信息,例如故障转移后,从节点会向集群中发送pong消息,用于告知从节点已经升级为主节点。

    fail消息:fail消息用于通知将某个节点置为下线状态。例如节点A认为节点B已下线,节点A会向集群中发送一条fail消息,接受到这条消息的节点会将节点B标记为已 下线。

    publish消息:当某个节点收到publish命令后,会向集群中发送一条publish消息。

    1.redis-cluster架构图

    架构细节:

    (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

    (2)节点的fail是通过集群中超过半数的master节点检测失效时才生效.

    (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

    (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->key

    2. redis-cluster选举:容错

     

    (1)领着选举过程是集群中所有master参与,如果半数以上master节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作.

    (2):什么时候整个集群不可用(cluster_state:fail)

        a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

        b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

     当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

     参考:https://hot66hot.iteye.com/blog/2050676

  • 相关阅读:
    年轻人如何去有效的学习(很好的鸡汤,一语惊醒梦中人)
    python基础07 函数
    python基础06 循环
    python基础05 缩进与选择
    python基础04 运算
    python基础03 序列
    python基础02 基本数据类型
    python基础01 Hello World
    CSS3(三)BFC、定位、浮动、7种垂直居中方法
    CSS3(二)Box Model、边距折叠、内联与块标签、CSSReset
  • 原文地址:https://www.cnblogs.com/cangshublogs/p/10923553.html
Copyright © 2020-2023  润新知