Redis缓存服务器的 分片机制 和 哨兵机制 的配置与详解

Redis的分片机制说明
如果需要Redis存储海量的内存数据,使用单台redis不能满足用户的需求,所以可以采用Redis分片机制实现数据存储.
注意:当使用分片机制时,多台redis服务器中缓存的数据都是不一样的 。
Redis分片中的一致性HASH算法 算法介绍
一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题 。在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系 。一致性哈希解决了简单哈希算法在分布式哈希表(Hash Table,DHT) 中存在的动态伸缩等问题 。
上面的句子翻译成大白话就是:当我们使用Redis分片时,由于缓存数据时我们只能选择其中的一台redis进行缓存,那么如何进行选择呢?怎样的选择方案在当有一台Redis服务器发生故障时,对其他redis服务器影响最小呢?
原理说明
1.首先求出redis服务器(节点)的哈希值,并将其配置到0~232的圆()上 。
2.然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上 。
3.然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上 。如果超过232仍然找不到服务器,就会保存到第一台redis服务器上 。
一致性Hash性质
考虑到分布式系统每个节点都有可能失效,并且新的节点很可能动态的增加进来,如何保证当系统的节点数目发生变化时仍然能够对外提供良好的服务,这是值得考虑的,尤其实在设计分布式缓存系统时,如果某台服务器失效,对于整个系统来说如果不采用合适的算法来保证一致性,那么缓存于系统中的所有数据都可能会失效(即由于系统节点数目变少,客户端在请求某一对象时需要重新计算其hash值(通常与系统中的节点数目有关),由于hash值已经改变,所以很可能找不到保存该对象的服务器节点),因此一致性hash就显得至关重要,良好的分布式cahce系统中的一致性hash算法应该满足以下几个方面:
1.平衡性
平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题.
实现平衡性的方案: 引入虚拟节点
比如,当node2缓存服务器与node1缓存服务器之间的距离过小,node2与node3之间的距离过大,此时就在node2和node3中间点的右侧随机设一个node2的虚拟节点,当服务器的hash值计算到虚拟的node2之后时,此时也存于node2缓存服务器
2.单调性
单调性是指在新增或者删减节点时,不影响系统正常运行。

Redis缓存服务器的 分片机制 和 哨兵机制 的配置与详解

文章插图
特点:在进行数据迁移时,要求尽可能小的改变数据.
3.分散性
分散性是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数据。
Redis哨兵机制
分片机制存在的问题
redis分片主要的作用是实现内存数据的扩容.但是如果redis分片中有一个节点宕机,则直接影响所有节点的运行. 能否优化?
实现策略: 采用Redis哨兵机制实现Redis节点高可用.
Redis节点主从配置
命令:
info replication 检查redis节点的状态信息slaveof host port从与目标host和端口
1.检查节点状态信息:
2.将192.168.126.129:6380和192.168.126.129:6381分别作为192.168.126.129:6379的从机
注意:当形成主从配置后,只有主机能修改数据,从机只能查询数据 。
哨兵机制工作原理
1).当哨兵启动时,会链接redis主节点,同时获取所有节点的状态信息