精华内容
下载资源
问答
  • Redis架构模式

    2021-04-16 16:00:47
    Redis架构模式 前言 reids在工作中经常会被用到,它的存储效率要明显高于关系数据库(因为它的数据是存储在内存中的),除此之外还可以用来验证一些操作,分布式锁等。 那么有没有想过有一天所在的redis突然崩溃了,...

    Redis架构模式

    前言
    reids在工作中经常会被用到,它的存储效率要明显高于关系数据库(因为它的数据是存储在内存中的),除此之外还可以用来验证一些操作,分布式锁等。
    那么有没有想过有一天所在的redis突然崩溃了,那该怎么办呢?

    当然首先我们要尽量避免这种情况,但是什么事情都有万一 万一发生呢?
    如果是只有一台redis服务器,那就等死 或者跑路吧,

    如果不想这样的结果,就告知你的老板多备用几台服务器,否则会有这样的风险。
    忽悠到几台服务器后,(口误,是拥有后),我们怎么来用多台redis服务器来解决这种问题呢。
    好了闲话不多说直接上正题,只讲步骤具体配置文件就不发出来了。
    有需要的点赞关注收藏联系作者。

    主从模式:

    两台以上的redis 服务器,一台为主节点master 另外几台台为从节点slave,
    项目连接上主节点,当主节点有数据更新时,更新完成的同时主节点会向从节点发送一条命令,从节点的数据就会更新
    从节点默认是只读的,当主节点master宕机后,从节点不能连接项目用来更新存储数据。
    

    优点:
    1,配置简单
    2, 解决了数据的冗余备份,是哨兵模式的基础
    缺点:
    不能解决高可用的问题

    Sentinel 哨兵模式:

    在主从模式的基础上加上多个哨兵服务,每个哨兵都是一个单独的服务,具体配置在sentinel.conf里,配置完直接启动即可
    每个哨兵都会监控主节点master和从节点slave的服务
    当一个哨兵认为master宕机了,此时mater状态为主观下线,
    当到一定数量的(这个是通过参数quorum配置的)哨兵认为master宕机了,此时master状态为客观下线
    当master状态为客观下线时 Sentinel哨兵 内部会进行选举leader,每个哨兵都会进行投票,当获得一半以上的投票的哨兵会成为哨兵leader
    哨兵leader进行slave选举,选择新的从节点为主节点
    宕掉的主节点恢复后成为新的从节点
    发现任意一台节点出现问题  Sentinel 可以通过 API 向管理员或者其他应用程序发送通知;
    哨兵服务最好配置大于等于3个 并且建议单数
    项目连接的是哨兵服务。
    

    slave选举:

    首先排除不在线响应慢的slave
    选择优先级高的salve
    优先级一样的选择复制数据比较多的salve
    复制数据一样的选择run id小的(每个run id都不一样)
    

    哨兵模式脑裂问题:
    当master与所有哨兵、slave发生通信中断,但是实际上master是存活的,且哨兵与slave是正常连接的,哨兵就会选举出一个新的master,这时候就会有两个master,发生脑裂
    解决:

    修改 redis 配置 redis.conf,检查 master 节点与其它副本的联系。
    当 master 与其它副本在一定时间内失去联系,那么禁止 master 进行写数据
    

    优点:
    1,可以实现故障转移,高可用
    2,哨兵Sentinel 会实时监控所有的主从节点,通过API 向管理员或者其他应用程序发送通知。
    缺点:
    1,主从切换时间会丢失数据
    2,单master主节点性能压力问题

    分片集群模式:

    多个master主节点,每个主节点拥有自己的从节点slave
    创建集群时每个master主节点通过平均分配获取哈希槽范围,
    哈希槽范围为0-16383,例如如果有三个 则范围大致为(1-5000,5000-10000,10000-16383) 注意是 大致平均分配
    因为哈希槽范围 0-16383 所以redis集群中master最大节点数不能超过16384
    项目可以连接任意一个主master节点
     client客户端通过CRC16算法算出要连接的主节点。
    CRC16算法算出的节点永远小于16383
    对同一个key CRC16算法多次运算算出的结果一致
     对不同的一个key CRC16算法结果可能一致。
    

    划重点
    从节点选举步骤:
    当从节点发现自己复制的主节点已下线了,会向集群里面广播一条消息,要求所有有投票权的节点给自己投票(所有负责处理槽的主节点都有投票权)
    主节点会向第一个给他发选举消息的从节点回复支持
    当支持数量超过N/2+1的情况下,该从节点当选新的主节点

    集群模式和哨兵模式的区别:
    哨兵模式监控权交给了哨兵系统,集群模式中是工作节点自己做监控
    哨兵模式发起选举是选举一个leader哨兵节点来处理故障转移,集群模式是由其他的master主节点投票来来处理故障转移

    欢迎大家一起讨论,一起进步,我在这里风里雨里等你

    展开全文
  • Redis 架构模式

    2019-08-01 15:05:24
    一、Redis哨兵(Sentinel)模式 1.1 哨兵模式概述 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而...

    一、Redis单机模式

    特点:简单,直接运行redis-server redis.conf即可(注意自己的redis-server文件和redis.conf文件的位置)。
    缺点:1、内存容量有限 2、处理能力有限 3、无法高可用。
    在这里插入图片描述

    二、Redis主从复制模式

    Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。
    特点:

    • 1、master/slave 角色
    • 2、master/slave 数据相同
    • 3、降低 master 读压力在转交从库

    缺点:

    • 1、无法保证高可用
    • 2、没有解决 master 写的压力
      在这里插入图片描述

    配置Redis的主从服务器
    修改redis.conf文件
    slaveofmasterauth 只在从服务器上配置

    # 使得Redis服务器可以跨网络访问
    bind 0.0.0.0
    # 设置密码
    requirepass "123456"
    # 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
    slaveof 192.168.11.128 6379
    # 主服务器密码,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
    masterauth 123456
    

    启动redis服务
    注意启动的顺序。首先是主机(192.168.11.128)的Redis服务进程,然后启动从机的服务进程。

    # 启动Redis服务器进程
    ./redis-server ../redis.conf
    

    三、Redis哨兵(Sentinel)模式

    3.1 哨兵模式概述

    Redis sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移。
    其中三个特性:

    • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
    • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
    • 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作。

    特点:

    • 1、保证高可用
    • 2、监控各个节点
    • 3、自动故障迁移

    缺点:

    • 主从模式,切换需要时间丢数据
    • 没有解决 master 写的压力
      在这里插入图片描述

    这里的哨兵有两个作用

    • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
    • 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

    然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。

    在这里插入图片描述
    用文字描述一下故障切换(failover)的过程:

    • 假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。

    3.2 配置哨兵模式

    配置3个哨兵和1主2从的Redis服务器来演示这个过程。
    在这里插入图片描述

    在这里插入图片描述

    3.2.1 配置Redis的主从服务器

    修改redis.conf文件
    slaveofmasterauth 只在从服务器上配置

    # 使得Redis服务器可以跨网络访问
    bind 0.0.0.0
    # 设置密码
    requirepass "123456"
    # 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
    slaveof 192.168.11.128 6379
    # 主服务器密码,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
    masterauth 123456
    

    3.2.2 配置哨兵

    修改sentinel.conf文件

    # 禁止保护模式
    protected-mode no
    # 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,
    # 192.168.11.128代表监控的主服务器,
    # 6379代表端口,
    # 2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
    sentinel monitor mymaster 192.168.11.128 6379 2
    # sentinel auth-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
    # sentinel auth-pass <master-name> <password>
    sentinel auth-pass mymaster 123456
    

    3.2.3 启动服务器

    注意启动的顺序。首先是主机(192.168.11.128)的Redis服务进程,然后启动从机的服务进程,最后启动3个哨兵的服务进程。

    # 启动Redis服务器进程
    ./redis-server ../redis.conf
    # 启动哨兵进程
    ./redis-sentinel ../sentinel.conf
    

    3.3 哨兵模式的其他配置项

    配置项 参数类型 作用
    port 整数 启动哨兵进程端口
    dir 文件夹目录 哨兵进程服务临时文件夹,默认为/tmp,要保证有可写入的权限
    sentinel down-after-milliseconds <服务名称><毫秒数(整数)> 指定哨兵在监控Redis服务时,当Redis服务在一个默认毫秒数内都无法回答时,单个哨兵认为的主观下线时间,默认为30000(30秒)
    sentinel parallel-syncs <服务名称><服务器数(整数)> 指定可以有多少个Redis服务同步新的主机,一般而言,这个数字越小同步时间越长,而越大,则对网络资源要求越高
    sentinel failover-timeout <服务名称><毫秒数(整数)> 指定故障切换允许的毫秒数,超过这个时间,就认为故障切换失败,默认为3分钟
    sentinel notification-script <服务名称><脚本路径> 指定sentinel检测到该监控的redis实例指向的实例异常时,调用的报警脚本。该配置项可选,比较常用

    sentinel down-after-milliseconds配置项只是一个哨兵在超过规定时间依旧没有得到响应后,会自己认为主机不可用。对于其他哨兵而言,并不是这样认为。哨兵会记录这个消息,当拥有认为主观下线的哨兵达到sentinel monitor所配置的数量时,就会发起一次投票,进行failover,此时哨兵会重写Redis的哨兵配置文件,以适应新场景的需要。

    四、集群(proxy 型)模式

    Twemproxy 是一个 Twitter 开源的一个 redis 和 memcache 快速/轻量级代理服务器; Twemproxy 是一个快速的单线程代理程>序,支持 Memcached ASCII 协议和 redis 协议。
    特点:

    • 1、多种 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins
    • 2、支持失败节点自动删除
    • 3、后端 Sharding 分片逻辑对业务透明,业务方的读写方式和操作单个 Redis 一致

    缺点:

    • 1、增加了新的 proxy,需要维护其高可用
    • 2、failover 逻辑需要自己实现,其本身不能支持故障的自动转移可扩展性差,进行扩缩容都需要手动干预
      在这里插入图片描述

    五、集群(直连型)模式

    从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和
    其他所有节点连接。
    特点:

    • 1、无中心架构(不存在哪个节点影响性能瓶颈),少了 proxy 层。
    • 2、数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。
    • 3、可扩展性,可线性扩展到 1000 个节点,节点可动态添加或删除。
    • 4、高可用性,部分节点不可用时,集群仍可用。通过增加 Slave 做备份数据副本
    • 5、实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave到 Master 的角色提升。

    缺点:

    • 1、资源隔离性较差,容易出现相互影响的情况。
    • 2、数据通过异步复制,不保证数据的强一致性
      在这里插入图片描述
    展开全文
  • Redis架构模式详解

    2019-03-12 11:47:29
    文章目录一、 单机版1、优缺点二、主从复制1、优缺点三、哨兵模式1、优缺点四、集群模式1、Redis哈希槽的概念2、优缺点 一、 单机版 1、优缺点 【优点】: 简单。 【缺点】: 内存容量有限; 处理能力有限; ...

    一、 单机版

    在这里插入图片描述

    1、优缺点

    【优点】:

    • 简单。

    【缺点】:

    • 内存容量有限;

    • 处理能力有限;

    • 无法高可用。

    二、主从复制

    在这里插入图片描述
      Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步给从服务器,从而一直保证主从服务器的数据相同。

    1、优缺点

    【优点】:

    • master/slave 数据相同;

    • 降低 master 读压力。

    【缺点】:

    • 没有降低 master 写压力;

    • 无法高可用。

    三、哨兵模式

    在这里插入图片描述
      Redis sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移。其中三个特性:

    • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。

    • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

    • 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作

    1、优缺点

    【优点】:

    • 保证高可用;

    • 监控各个节点,自动故障迁移。

    【缺点】:

    • 没有降低 master 写压力;

    四、集群模式

    在这里插入图片描述
      Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

    1、Redis哈希槽的概念

      一个 Redis Cluster包含16384(0~16383)个哈希槽,存储在Redis Cluster中的所有键都会被映射到这些slot中,集群中的每个键都属于这16384个哈希槽中的一个,集群使用公式slot=CRC16(key)/16384来计算key属于哪个槽,其中CRC16(key)语句用于计算key的CRC16 校验和。一个hash slot中会有很多key和valueinsert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key
    在这里插入图片描述
    当前集群有3个节点,槽默认是平均分的:

    • 节点 A (6381)包含 0 到 5499号哈希槽;
    • 节点 B (6382)包含5500 到 10999 号哈希槽;
    • 节点 C (6383)包含11000 到 16383号哈希槽。

    这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态

    • 当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了。

    • 当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了。

    2、优缺点

    【优点】:

    • 无中心架构(不存在哪个节点影响性能瓶颈)

    • 数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。

    • Redis 集群的键空间被分割为 16384 hash个槽(slot), 集群的最大节点数量也是 16384 个。

    • 高可用性,部分节点不可用时,集群仍可用。通过增加 Slave 做备份数据副本。

    • 实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave到 Master 的角色提升。

    【缺点】:

    • 资源隔离性较差,容易出现相互影响的情况。

    • 数据通过异步复制,不保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。

    展开全文
  • a、架构简单,只要一个redis实例。 b、内存容量有限 c、处理能力有限 d、无法高可用(单机存在单点故障) 2、主从复制 Redis 的主从复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多...

    1、单机版

    (1)架构图

    (2)特点

                a、架构简单,只要一个redis实例。

                b、内存容量有限

                c、处理能力有限

                d、无法高可用(单机存在单点故障) 

     

    2、主从复制

          Redis 的主从复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步(注意:只能是单方向同步,master向slave同步)给从服务器,从而一直保证主从服务器的数据相同。此架构模式中,客户端可以直接与slave交互,直接向slave获取数据,降低了master的读压力。

     

    (2)特点

                a、无法保证高可用(master仍然是单击,仍然存在单点故障)

                b、没有降低master写压力,仅仅降低了master的读压力

     

    3、哨兵模式(主从复制模式的升级版,加入了哨兵监控,保证了高可用)

          Redis sentinel 是一个分布式系统,它可以监控 redis 主从服务器,并在主服务器下线时自动进行故障转移。其中三个特性

                监控(Monitoring):Sentinel  会不断地检查你的主服务器和从服务器是否运作正常。

                提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

                自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作。

    (1)架构图

    (2)特点

                a、主从切换需要时间,可能会造成数据丢失

                b、仍然没有降低master的读压力,仅仅降低了master的读压力

     

    4、集群(直连型)

          从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

    (1)架构图

    (2)特点

                a、无中心架构(不存在哪个节点影响性能瓶颈)。

                b、数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。

                c、可扩展性,可线性扩展到 1000 个节点,节点可动态添加或删除。

                d、高可用性,部分节点不可用时,集群仍可用。通过增加 Slave 做备份数据副本

                e、实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave到 Master 的角色提升。

    参考:https://www.cnblogs.com/jasontec/p/9699242.html

    展开全文
  • 最通俗易懂的 Redis 架构模式详解

    千次阅读 2020-09-04 08:51:47
    前言 话说有一名意大利程序员,在 2004 年到 2006 年间主要做嵌入式工作,之后接触了 Web,2007 年和朋友共同创建了...Redis 技术越来越火爆,其超高的性能,简洁轻量的设计,易上手,分布式架构的支持,在缓存等领域.
  • 先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 ...
  • 前言  话说有一名意大利程序员,在 2004 年到 2006 年间主要做嵌入式工作,之后接触了 Web,2007 年和朋友共同创建了一... Redis 技术越来越火爆,其超高的性能,简洁轻量的设计,易上手,分布式架构的支持,在缓存
  • 什么是主从复制 ...主服务器master可以进行读写操作,当主服务器的数据发生变化,master会发出命令流来保持对salve的更新,而从服务器slave通常是只读的(可以通过slave-read-only指定),在主从复制模式下,即
  • 前言  话说有一名意大利程序员,...这个意大利程序员就是 Salvatore Sanfilippo 江湖人称 Redis 之父,大家更习惯称呼他 Antirez。  Redis 技术越来越火爆,其超高的性能,简洁轻量的设计,易上手,分布式架...
  • 这道面试题主要考Redis常用的架构模式的理解,常用几种架构模式有:1.单机模式Redis单机版架构图特点:简单问题:内存有限有单点故障风险,无法高可用处理能力有限2.主从模式Redis主从模式架构图Redis 的复制...
  • redis架构~哨兵模式

    2019-01-14 16:10:00
    一 哨兵模式稳定版本 redis哨兵模式redis自带的高可用框架,稳定版本为redis2.8以上二 哨兵模式建立 1 避免单点故障,建立启动多个哨兵进程 2 哨兵模式启动命令 redis-sentinel三 哨兵模式通信 1 sentinel中各个...
  • Redis架构模式

    2020-03-24 19:15:15
    Redis架构模式 以下redis是本人重要点缀 单机版: 特点:简单 问题:内存容量有限, 处理能力有限 无法高可用 主从复制 特点: master/slave 角色 master/slave 数据相同 降低 master 读压力在转交从库 问题: 无法...
  • Redis架构之哨兵模式

    2018-09-29 17:34:48
    哨兵(Sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master主服务器是否下线的信息,并使用投票协议(Agreement Protocols)来决定...
  • redis架构模式

    2020-06-17 18:01:28
    http://www.redis.cn/topics/sentinel.html 哨兵模式与简介 集群教程:http://www.redis.cn/topics/sentinel.html
  • Redis-cluster是近年来Redis架构不断改进中的相对较好的 Redis高可用方案。本文涉及到近年来Redis多实例架构的演变过程,包括普通主从架构(Master、slave 可进行写读分离)、哨兵模式下的主从架构、Redis-cluster高...
  • 常用的Redis架构设计

    千次阅读 2020-07-15 17:07:10
    Redis架构设计目前流行的四种模式一、一致性Hash二、Redis哨兵模式三、Codis四、Redis_cluster五、Codis集群和Redis_cluster的优劣对比 目前流行的四种模式 读者们,你们好!目前流行的Redis架构主要有四种,分别为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,876
精华内容 750
关键字:

redis架构模式

redis 订阅