乐趣区

关于java:Redis哨兵复制集群的设计原理以及区别

谈到 Redis 服务器的高可用,如何保障备份的机器是原始服务器的残缺备份呢?这时候就须要哨兵和复制。

哨兵 (Sentinel):能够治理多个 Redis 服务器,它提供了监控,揭示以及主动的故障转移的性能。
复制(Replication):则是负责让一个 Redis 服务器能够装备多个备份的服务器。
Redis 正是利用这两个性能来保障 Redis 的高可用。

file

哨兵(sentinal)
java 培训中哨兵是 Redis 集群架构中十分重要的一个组件,哨兵的呈现次要是解决了主从复制呈现故障时须要人为干涉的问题。

1.Redis 哨兵次要性能
(1)集群监控:负责监控 Redis master 和 slave 过程是否失常工作

(2)音讯告诉:如果某个 Redis 实例有故障,那么哨兵负责发送音讯作为报警告诉给管理员

(3)故障转移:如果 master node 挂掉了,会主动转移到 slave node 上

(4)配置核心:如果故障转移产生了,告诉 client 客户端新的 master 地址

2.Redis 哨兵的高可用
原理:当主节点呈现故障时,由 Redis Sentinel 主动实现故障发现和转移,并告诉利用方,实现高可用性。

file

哨兵机制建设了多个哨兵节点(过程),独特监控数据节点的运行状况。

同时哨兵节点之间也相互通信,替换对主从节点的监控情况。

每隔 1 秒每个哨兵会向整个集群:Master 主服务器 +Slave 从服务器 + 其余 Sentinel(哨兵)过程,发送一次 ping 命令做一次心跳检测。

这个就是哨兵用来判断节点是否失常的重要依据,波及两个新的概念:主观下线和主观下线。

  1. 主观下线:一个哨兵节点断定主节点 down 掉是主观下线。

2. 主观下线:只有半数哨兵节点都主观断定主节点 down 掉,此时多个哨兵节点替换主观断定后果,才会断定主节点主观下线。

3. 原理:基本上哪个哨兵节点最先判断出这个主节点主观下线,就会在各个哨兵节点中发动投票机制 Raft 算法(选举算法),最终被投为领导者的哨兵节点实现主从自动化切换的过程。

Redis 复制(Replication)
Redis 为了解决单点数据库问题,会把数据复制多个正本部署到其余节点上,通过复制,实现 Redis 的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。

1. 数据复制原理(执行步骤)
file

①从数据库向主数据库发送 sync(数据同步)命令。

②主数据库接管同步命令后,会保留快照,创立一个 RDB 文件。

③当主数据库执行完放弃快照后,会向从数据库发送 RDB 文件,而从数据库会接管并载入该文件。

④主数据库将缓冲区的所有写命令发给从服务器执行。

⑤以上解决完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库。

留神:在 Redis2.8 之后,主从断开重连后会依据断开之前最新的命令偏移量进行增量复制。

file

Redis 主从复制、哨兵和集群这三个有什么区别
1. 主从模式:读写拆散,备份,一个 Master 能够有多个 Slaves。

2. 哨兵 sentinel:监控,主动转移,哨兵发现主服务器挂了后,就会从 slave 中从新选举一个主服务器。

3. 集群:为了解决单机 Redis 容量无限的问题,将数据按肯定的规定调配到多台机器,内存 /QPS 不受限于单机,可受害于分布式集群高扩展性。

退出移动版