主从架构 搭建简单 单一 不稳定 不推荐使用
哨兵模式 访问瞬断 主节点只有一个 数据存放量小 选举机制 最少配置3台节点 自动启用新节点
Redis Cluster 同样会访问瞬断 但是其他节点不会瞬断,缓解了访问瞬断的问题
众多redis主从节点组成一个集群(可水平扩展1万个,但尽量不要超过1000个 ),和哨兵模式一样每个小集群具有选举机制,区别在于数据是分片存放,该主从节点并不是向下映射,而是每个主从节点直接交叉映射,保证安全性
主节点不易太多 使用多个Cluster集群解决
Cluster槽位机制
将整个集群分为16384个槽位,将16384槽位平均分配到每个主从节点并生成配置文件到每台主从节点上(有纠错机制),set数据时将key通过CRC16算法将16384取模 得到对应的槽位 再通过配置文件知道该数据应该存放到那个节点 最后将数据写入
网络抖动 cluster node timeout 推荐配置为5秒失联事件参数 不能太小 会出现脑裂问题
redis集群没有过半机制会有脑裂问题,网络分区导致脑裂后多个主节点对外提供写服务,一旦网络分区恢复, 会将其中一个主节点变为从节点,这时会有大量数据丢失。规避方法可以在redis配置里加上参数(这种方法不可能百分百避免数据丢失,参考集群leader选举机制):
参数
min‐replicas‐to‐write 1
写数据成功最少同步的slave数量,这个数量可以模仿大于半数机制配置,比如 集群总共三个节点可以配置1,加上leader就是2,超过了半数
注意:这个配置在一定程度上会影响集群的可用性,比如slave要是少于1个,这个集群就算leader正常也不能 提供服务了,需要具体场景权衡选择。
一个节点挂掉 其他节点是否可用配置:
集群是否完整才能对外提供服务 当redis.conf的配置cluster-require-full-coverage为no时,表示当负责一个插槽的主库下线且没有相应的从 库进行故障恢复时,集群仍然可用,如果为yes则集群不可用。
Redis集群为什么至少需要三个master节点,并且推荐节点数为奇数
因为新master的选举需要大于半数的集群master节点同意才能选举成功,如果只有两个master节点,当其中 一个挂了,是达不到选举新master的条件的。 奇数个master节点可以在满足选举该条件的基础上节省一个节点,比如三个master节点和四个master节点的 集群相比,大家如果都挂了一个master节点都能选举新master节点,如果都挂了两个master节点都没法选举 新master节点了,所以奇数的master节点更多的是从节省机器资源角度出发说的。
网友评论