奶奶常说主从复制、哨兵、集群

一、RDB和AOF

1、RDB

内存数据包保存到磁盘中实现持久化(中间会进行压缩)
1.1、持久化的方式:基于结果,有手动、自动、被动触发方式
①手打触发:直接使用bgsave(时间把握不好的话,GG的快速命令之一,当要执行bgsave的时候,是需要提交邮件申请的)

②自动触发:save m n 900秒 至少1次操作(配置文件)

③被动1)执行shutdown之后,会触发bgsave 2)正常渠道关闭redis的时候(不包括暴力关闭,例如:rm -rf /var/lib/redis.pid)

1.2、RDB:类似于快照,“周期性”的进行保存,个人偏向于触发式的快照这个说法 save m n
2、AOF

内存数据,先append追加到缓冲区中,再从缓冲区中根据同步写入的策略,写入到磁盘中.

2.1、持久化的方式,基于执行语句,主要分为手动、自动方式
①手动:bgrewriteaof②自动:1)基于定期时间执行;2)基于AOF文件和缓存数的差异值进行AOF(默认64M);③同步写入策略 1)everysecond 2)always 3)no

2.2、压缩功能:针对于AOF文件进行的压缩处理,主要体现在rewrite重写机制。
①过期的key
②无效的key
③多条合并
以此,节省磁盘资源
3、RDB和AOF的对比

①RDB持久化速度相较于AOF更快(基于结果保存,并且直接将内存中的数据,写入到磁盘中)
②从redis重启后的数据恢复角度看,AOF会比RDB更为安全
③优先级:仅当AOF功能关闭时,才会基于RDB进行恢复
④RDB和AOF持久化的文件对比而言,AOF的文件体积天然会比RDB大,并且在首次全量备份后,会进行增量备份后,毕竟容易造成一个redis自身的磁盘空间问题,例如1)共享存储2)定时归档3)类似于find /etc/-name ‘*.log’-mtime +30 | xargs scp

二、redis集群模式

1、主从复制

主从复制时高可用redis的基础,哨兵和集群都是在主从复制基础上实现高可用的,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单等的故障恢复。①缺陷:故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制
2、哨兵

在主从复制的基础上,哨兵实现了自动化的故障恢复
①缺陷:写操作无法负载均衡,存储能力受到单机的限制
3、集群

通过集群,redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

三。哨兵模式

在主从复制的基础上起到主节点自动故障转移的作用
1、作用及原理
(1)哨兵模式的作用
①监控:哨兵会不断地检查主节点和从节点是否运行正常
②自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
③通知:哨兵可以将故障转移的结果发送给客户端

2、哨兵模式的原理它是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选出新的MASTER并将所有slave连接到新的master.整个运行哨兵的集群的数量不得少于3个节点。

3、结构哨兵结构由两部分组成,哨兵节点和数据节点
3.1、哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据。
3.2、数据节点:主节点和从节点都是数据节点

4、工作过程哨兵的启动依赖于主从模式,所以需要把主从模式安装好的情况下再去做哨兵模式,所以节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常。当master出现问题的时候,因为其他节点于主节点失去联系,因此会投票,投票过半就认为这个master的确出现问题,然后会通知哨兵间会推选出一个哨兵来进行故障转移工作。(由该哨兵来指定哪个SLAVE来做新的master),然后从slaves中选取一个作为新的master.

4.1、筛选方式:哨兵互相发送消息,并且参与投票,票多者当选,需要特别注意的是:客观下线是主节点才有的概念,即如果从节点和哨兵节点发生故障,被哨兵主观下线后,将不会再有后续的客观下线和故障转移操作(及哨兵模式只负责MASTER的方面。而不管slave)。当某个哨兵发现主服务器挂掉了,会将master中的sentinelreadistance中的master改为SRI_S_DOWN(主观下线),并通知其他哨兵,告诉他们发现master挂掉了,其他哨兵在接收到该哨兵发送的信息后,也会尝试去连接MASTER,如果超过半数确认MASTER挂掉后,会将MATSER中的sentinelredistance中的master改为SRI_O_DOWN(客观下线)

四。CLUSTER集群

主节点负责读写请求和集群信息的维护,从节点只进行主节点数据和状态信息的复制。
1、作用
(1)数据分区数据分区(数据分片)是集群最核心的功能,集群将数据分散到多个节点,一方面突破了redis单机内存大小的限制,存储容量大大增加,另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。Redis单机内存大小受限问题,AOF/RDB中,如果单机内存太大,bgsave和bgrewriteof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

(2) 高可用
集群支持主从复制和主节点的自动故障转移,当任意节点发送故障时,集群仍然可以对外提供服务

(2) 数据分片
Redis集群引入了哈希槽的概念,有16384(2*14)个哈希槽(0-16383)。集群的每个节点负责一部分哈希槽,每个key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作以上3个节点组成的集群。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值