• Redis-Cluster集群原理


    一、redis-cluster

    官方推荐的 redis 集群解决方案,优点在于去中心化, 去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。理论上最大可以有 16384 个节点,性能随着节点的增加而增加。后续可自行增加或者删除节点,移动槽( slot 一共16384 个槽 )等等。

    需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

    二、redis-cluster 架构图

    1、所有 redis 集群彼此互联,通过 ping-pong 命令确定彼此的健康状态,内部使用二进制协议优化传输速度和带宽。

    2、客户端与 redis 集群连接,不需要中间 proxy 层,客户端不需要连接集群所有节点,连接集群中任何一个节点即可。

    三、redis-cluster 投票容错机制

    当黄色节点通过 ping-pong 命令,发现红色节点挂了,就会向其他节点广播。其他节点通过 ping-pong 命令去检测红色节点。当多数节点都 ping 不通红色节点的时候,该集群系统就会认为红色节点挂了。红色节点的备份节点就会自动顶上来。如果没有备份节点,或者备份节点也都挂了,该集群就挂了。

    1、节点的 fail 状态是通过集群集群中超过半数的节点检测失效时才生效的。

    2、redis-cluster 把所有的物理节点映射到槽( slot )上。

    redis 集群中内置了 16384 个哈希槽,当需要在 redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的 hash 槽上,redis 会根据节点的数量大致均等的将 hash 槽映射到不同的节点上

     

  • 相关阅读:
    Oracle通过最小分区增加分区的SQL
    Oracle获取时间段内的各月底日期
    GET_MAPPING_DQL based on columns
    Oracle 分析问题sql的历史执行情况
    Oracle v$sql,v$sqlarea,v$sqltext区别
    Oracle修改表及分区表的表空间
    Oracle tablespace size sql
    ORACLE alter table storage
    Emmet的HTML语法(快速生成代码)
    Js中replace替换所有.
  • 原文地址:https://www.cnblogs.com/fangwu/p/8608543.html
Copyright © 2020-2023  润新知