1.什么是redis分片,为什么需要redis分片,怎么设置redis分片
2.什么是哨兵,为什么需要设置哨兵,怎么设置哨兵

1 redis分片

当并发量大,超出一个redis的访问上限时,我们可以通过将多个redis联合起来当做一个redis给客户端使用。
redis分片和设置主从机 - 图1

1.1 快速入门

设置多个redis服务,通过下面API整合到一起

  1. List<JedisShardInfo> jedisShardInfos = new ArrayList<>();
  2. jedisShardInfos.add(new JedisShardInfo("192.168.126.129",6379));
  3. jedisShardInfos.add(new JedisShardInfo("192.168.126.129",6380));
  4. jedisShardInfos.add(new JedisShardInfo("192.168.126.129",6381));
  5. ShardedJedis shardedJedis = new ShardedJedis(jedisShardInfos);
  6. //shardedJedis就是一个整合了三个redis的redis,他的API和Jedis的API差不多,这就是redis分片机制
  7. //当然spring支持将该类导入容器,可以通过配置文件读取ip和端口等等操作

1.2 一致性hash算法

1.2.0 常识说明

常识1: 一般的hash是8位16进制数. 0-9 A-F (28 = 2^32
常识2: 如果对相同的数据进行hash运算 结果必然相同的.
常识3: 一个数据1M 与数据1G的hash运算的速度一致.

1.2.1 一致性hash算法介绍

一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。 [1] 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题 [2] 。
redis分片和设置主从机 - 图2

1.2.2 特性1-平衡性

概念:平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题 [4] 。(大致平均)
问题描述: 由于节点都是通过hash方式进行算计.所以可能出现如图中的现象.,导致负载严重不平衡
redis分片和设置主从机 - 图3
解决方法: 引入虚拟节点
redis分片和设置主从机 - 图4

1.2.3 特性2-单调性

特点: 单调性是指在新增或者删减节点时,不影响系统正常运行 [4] 。
redis分片和设置主从机 - 图5

1.2.4 特性3-分散性

谚语: 鸡蛋不要放到一个篮子里.
③分散性是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数据 [4]

2.哨兵机制

上诉redis分片机制的问题在于,当其中一个redis因为各种原因无法正常工作时,整个redis集群就无法使用,所以我们需要这个哨兵机制来完成redis集群的高可用性

2.1 配置redis主从的结构

策略划分: 1主2从 6379主 6380/6381从
1.将分片的目录复制 改名位sentinel
redis分片和设置主从机 - 图6

  1. 重启三台redis服务器
    redis分片和设置主从机 - 图7
    3.检查redis节点的主从的状态
    redis分片和设置主从机 - 图8
    4.实现主从挂载
    redis分片和设置主从机 - 图9
    5.检查主机的状态
    redis分片和设置主从机 - 图10

2.2 哨兵的工作原理

redis分片和设置主从机 - 图11
原理说明:
1.配置redis主从的结构.
2.哨兵服务启动时,会监控当前的主机. 同时获取主机的详情信息(主从的结构)
3.当哨兵利用心跳检测机制(PING-PONG) 连续3次都没有收到主机的反馈信息则断定主机宕机.
4.当哨兵发现主机宕机之后,则开启选举机制,在当前的从机中挑选一台Redis当做主机.
5.将其他的redis节点设置为新主机的从.

2.3 编辑哨兵配置文件

1).复制配置文件
cp sentinel.conf sentinel/
2).修改保护模式
redis分片和设置主从机 - 图12
3).开启后台运行
redis分片和设置主从机 - 图13
4).设定哨兵的监控
其中的1 表示投票生效的票数 当前只有一个哨兵所以写1
redis分片和设置主从机 - 图14
5).修改宕机的时间
redis分片和设置主从机 - 图15
6).选举失败的时间
说明:如果选举超过指定的时间没有结束,则重新选举.
redis分片和设置主从机 - 图16
7).启动哨兵服务
redis分片和设置主从机 - 图17

2.4 Redis哨兵高可用实现

测试步骤:
1.检查主机的状态
2.将redis主服务器宕机 等待10秒 之后检查从机是否当选新的主机
redis分片和设置主从机 - 图18
3.重启6379服务器., 检查是否成为了新主机的从.
redis分片和设置主从机 - 图19