redis的分片机制和哨兵机制

redis分片机制

redis在整个处理流程中通常是用作数据库或者缓存的,当redis宕机的后,会影响整个流程的执行,因此我们将redis分片,所谓分片其实就是多部署几台redis,将数据尽可能的保存到不同的redis中,当一台redis宕机后只会影响一部分数据,redis分片的优点是可以实现内存的动态扩容,从而解决海量数据存储的问题,但是redis不能够实现高可用
在这里插入图片描述

那么当有多个redis的时候,传进来的数据如何决定存储在哪个redis中呢?在redis底层有一套算法叫做Hash一致性算法:

  1. 一般的hash由8位16进制数组成的. 共有2^32种可能性!!!
  2. hash算法对相同的数据进行hash运算时 结果必然相同.

00000000-FFFFFFFF 0-F=(24)8 = 2^32
进制:
1).二进制 取值 : 0-1 规则满2进1
2).八进制 取值 : 0-7 规则满8进1 2^3=8 每三位二进制数就是一个8进制数
3).十六进制 取值 : 0-9 A-F 规则满16进一 2^4=16 每四位二进制数就是一个16进制数
在这里插入图片描述

1.均衡性:

尽可能的让信息数据均匀的落入不同的节点中,如果根据hash计算,获取的数据量不是均匀分片的则采用虚拟节点重新进行划分,直到数据达到均衡性的要求,虚拟节点的个数不唯一。
在这里插入图片描述
2.单调性
如果节点发生了变化,那么数据可以实现动态的数据迁移,如果节点是新增操作,则数据可以动态的迁移,但是如果节点发生了减少,那么数据也会减少。

规则:如果新增节点后,尽可能的保证原有节点不发生变化,避免全部的key重新进行哈希运算导致负载过高。
在这里插入图片描述
3.分散性

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

redis分片机制存在的问题
说明:Redis分片机制可以实现内存数据的扩容.但是如果Redis服务器发生了宕机的现象,则会影响整个分片使用.
问题:Redis分片机制没有实现高可用. 当主机宕机之后.由从机自动的实现故障迁移.用户访问不受任何影响.

Redis哨兵机制

哨兵:哨兵模式是通过配置哨兵来管理redis集群,已解决redis分片后不能实现高可用缺点。
在这里插入图片描述
1.首先启动Redis哨兵.由哨兵监控整个Redis主从状态. 主要监控M主机. 同时获取其从机的信息.
2.哨兵利用心跳检测机制(PING-PONG)的方式监控主机是否宕机. 如果连续3次主机没有响应.则哨兵判断主机宕机.
之后开始进行选举.
3.根据从主机中获取的从机信息.之后利用 选举机制算法.挑选新的主机.
4.之后将剩余的redis修改为当前主机的的从.并且修改配置文件.

Redis分片/Redis哨兵总结
1).分片可以实现Redis内存数据的扩容.可以存储海量的内存数据. Redis分片机制没有实现高可用.如果分片中一个节点宕机,则直接影响整个服务的运行.
2).哨兵可以实现Redis节点的高可用.但是Redis中的数据不能实现内存的扩容.
哨兵服务本身没有实现高可用.如果哨兵发生了异常则直接影响用户使用.

想法: 能否有一种机制既可用满足海量数据的存储要求(扩容),同时可以实现redis高可用,并且还不会依赖第三方.

Redis集群

Redis分区说明
Redis分区只负责 数据应该存储到哪里的问题.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值