java技术-- Redis主从复制、哨兵和集群这三者原理和区别

1.Redis服务器的高可用,这时候就需要哨兵和复制

(1)哨兵(Sentinel)<1>可以管理多个Redis服务器,提供了监控,提醒以及自动的故障转移的功能
      <2>哨兵是Redis集群架构中非常重要的一个组件
      <3>哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题
(2) 复制(Replication)<1>是负责让一个Redis服务器可以配备多个备份的服务器 
(3)Redis正是利用这两个功能来保证Redis的高可用          

2.Redis哨兵

(1)Redis哨兵主要功能:
     <1>集群监控:负责监控Redis master和slave进程是否正常工作
     <2>消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
     <3>故障转移:如果master node挂掉了,会自动转移到slave node上
     <4>配置中心:如果故障转移发生了,通知client客户端新的master地址
(2)Redis哨兵的高可用原理:
     <1>当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性
     <2>哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况
     <3> 同时哨兵节点之间也互相通信,交换对主从节点的监控状况
     <4>每隔1秒每个哨兵会向整个集群:发送一次ping命令做一次心跳检测
        4.1.Master主服务器+Slave从服务器+其他Sentinel(哨兵)进程
        4.2.心跳检测就是哨兵用来判断节点是否正常的重要依据
        4.3.涉及两个新的概念:主观下线和客观下线
(3)主观下线和客观下线
     <1>主观下线:一个哨兵节点判定主节点down掉是主观下线
     <2>客观下线:只有半数哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线
     <3>原理:
       3.1.基本上哪个哨兵节点最先判断出这个主节点客观下线
       3.2.就会在各个哨兵节点中发起投票机制Raft算法(选举算法)
       3.3.最终被投为领导者的哨兵节点完成主从自动化切换的过程

3.Redis主从复制(Replication)

(1)Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上
(2)通过复制,实现Redis的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性
(3)数据复制原理(执行步骤):
   <1>从数据库向主数据库发送sync(数据同步)命令
   <2>主数据库接收同步命令后,会保存快照,创建一个RDB文件
   <3>当主数据库执行完保持快照后,会向从数据库发送RDB文件,而从数据库会接收并载入该文件
   <4>主数据库将缓冲区的所有写命令发给从服务器执行
   <5>以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库

4.Redis 主从复制、哨兵和集群这三个有什么区别

(1)主从模式:
    <1>读写分离,备份,一个Master可以有多个Slaves
(2)哨兵sentinel:
   <1>监控,自动转移,哨兵发现主服务器挂了后,就会从slave中重新选举一个主服务器
(3)集群:
   <1>为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器
   <2>内存/QPS不受限于单机,可受益于分布式集群高扩展性
(4)哨兵作用于高可用,集群提高并发量   

5.Redis 主从复制、哨兵和集群的实现
(1)哨兵模式的实现:https://www.cnblogs.com/enjoyitlife/p/12051945.html
(2)集群的实现:https://www.cnblogs.com/enjoyitlife/p/12057404.html
(3)主从复制实现:https://www.cnblogs.com/HendSame-JMZ/p/7722104.html

你可能感兴趣的:(java技术-- Redis主从复制、哨兵和集群这三者原理和区别)