zoukankan      html  css  js  c++  java
  • Redis 主从复制、哨兵和集群原理与区别

    简介

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

    哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。
    复制(Replication):则是负责让一个Redis服务器可以配备多个备份的服务器。

    Redis正是利用这两个功能来保证Redis的高可用

    哨兵

    哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。

    Redis哨兵主要功能

    (1)集群监控:负责监控Redis master和slave进程是否正常工作
    (2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
    (3)故障转移:如果master node挂掉了,会自动转移到slave node上
    (4)配置中心:如果故障转移发生了,通知client客户端新的master地址

    Redis哨兵的高可用

    原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。

    1. 哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。
    2. 同时哨兵节点之间也互相通信,交换对主从节点的监控状况。
    3. 每隔1秒每个哨兵会向整个集群:Master主服务器+Slave从服务器+其他Sentinel(哨兵)进程,发送一次ping命令做一次心跳检测。

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

    主观下线:一个哨兵节点判定主节点down掉是主观下线。
    客观下线:只有半数哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。

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

    Redis 复制(Replication)

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

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

    ②主数据库接收同步命令后,会保存快照,创建一个RDB文件。

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

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

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

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

    Redis 主从复制、哨兵和集群三者区别

    主从复制是为了数据备份哨兵是为了高可用,Redis主服务器挂了哨兵可以切换,集群则是因为单实例能力有限,搞多个分散压力,简短总结如下:

    主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。

    sentinel发现master挂了后,就会从slave中重新选举一个master。

    cluster是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器。

    sentinel着眼于高可用,Cluster提高并发量。

    1. 主从模式:读写分离,备份,一个Master可以有多个Slaves。

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

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

  • 相关阅读:
    BestCoder17 1001.Chessboard(hdu 5100) 解题报告
    codeforces 485A.Factory 解题报告
    codeforces 485B Valuable Resources 解题报告
    BestCoder16 1002.Revenge of LIS II(hdu 5087) 解题报告
    codeforces 374A Inna and Pink Pony 解题报告
    codeforces 483B Friends and Presents 解题报告
    BestCoder15 1002.Instruction(hdu 5083) 解题报告
    codeforces 483C.Diverse Permutation 解题报告
    codeforces 483A. Counterexample 解题报告
    NSArray中地内存管理 理解
  • 原文地址:https://www.cnblogs.com/chenwenyin/p/13549492.html
Copyright © 2011-2022 走看看