redis基础篇~redis-cluster基础

1 集群成员
    一般的集群大概由3台服务器组成,分成6个redis-server 每2个redis-server组成一组master-slave,分别分布在三台机器上,一般三台主master分布在三台不同的服务器上,端口一致 一共的hash solt是16383个
2 服务proxy
    访问串 master1:port1,master2:port2,master3:port3,由于cluster本身自带proxy功能,访问其中一个master:port即可
3 慢日志
   cluster对外提供N个master,所以慢日志的获取必须要去每个master通过slowlog get单独获取,日志查看同理,在这里需要三个master都去查看
4 原理性
   1 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽
   2 节点的fail是通过集群中超过半数的节点检测失效时才生效,比如3个master成员,有2个检测这个master成员判断出问题时,这个master才会被对应的slave进行切换
   3 redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉
   4 集群每个节点会自动维护cluster-conf文件,保证集群元数据的最新
   5 集群每个master查询到的info都是各自占有的并非集群的,集群信息通过cluster获取
5 常见命令
   1 cluster info 查看集群基本信息
      cluster_state: ok 表示集群可以正常接受查询请求
      cluster_slots_fail:0 表示失败的slot数量,如果不为0,代表集群状态有问题,将无法提供查询服务,除非cluster-require-full-coverage被设置为no
      cluster_known_nodes N 已知的所有集群成员
  2 cluster nodes 查看集群成员和角色
    1 member_id(成员标识,用来进行在集群内操作) 2 host:port 3 role(master 0/slave-master_id) 4 健康检测时间戳 5 成员客户端的连接数 6 master slot的分配范围
  3 cluster slots  查看具体的槽分配信息
    1 槽的分配信息  2 主从端口 IP地址和唯一 标识
6  redis-cluster的hash-slot算法
   0 常用的数据分片的方法有:范围分片,哈希分片,一致性哈希算法和虚拟哈希槽等.redis-cluster采用的是虚拟哈希槽
   1  redis cluster有固定的16384个hash slot,对每个key计算CRC16值,然后对16384取模,可以获取key对应的hash slot

    2   hash slot让node的增加和移除很简单,增加一个master,就将其他master的hash slot移动部分过去,减少一个master,就将它的hash slot移动到其他master上去

移动hash slot的成本是非常低的

   3 在集群模式下,Redis 节点接收任何键相关命令时首先计算键对应的槽,在根据槽找出所对应的节点,如果节点是自身,则处理键命令;否则回复 MOVED 重定向错误,通知客户端请求正确的节点。这个过程称为 MOVED 重定向

  4  具体计算方式 HASH_SLOT=CRC16(key) mod 16384

原文地址:https://www.cnblogs.com/danhuangpai/p/13863167.html