美文网首页Cache
Redis-主从用服务冗余避免单点

Redis-主从用服务冗余避免单点

作者: 夜阑人儿未静 | 来源:发表于2019-04-04 23:21 被阅读0次

在说到Redis主从同步之前先说说同步过程中会用到的Pipeline

Redis客户端与Redis服务器之间使用TCP协议进行连接,一个客户端可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常会阻塞并等待redis服务器处理,redis处理完请求命令后会将结果通过响应报文返回给client,因此当执行多条命令的时候都需要等待上一条命令执行完毕才能执行。
简单的说普通模式单线程的,而Pipelin模式是类似于并发的

Pipeline

  • Plpeline和Linux的管道类似
  • Redis基于请求/响应模型,单个请求处理需要一一应答
  • Pipeline批量执行指令,节省多次IO往返的时间
  • 有顺序依赖的指令可以分批发送

一句话:pipeline是通过减少客户端与redis的通信次数来实现降低往返延时时间,而且Pipeline 实现的原理是队列,而队列的原理是时先进先出,这样就保证数据的顺序性。

Pipelin性能虽好但不使用与线上使用,因为线上的操作大都需要及时返还操作结果,但是用在主从的增量同步刚好啊!

Redis主从同步可分为两种:全量同步和增量同步

主从全量同步:一般发生在Slave初始化阶段

  1. Slave发送sync命令道Master
  2. Master启动一个后台进程,将Redis中的数据快照保存到文件中(BGSAVE)
  3. Master将保存数据快照期间指令收集到写指令缓存起来
  4. Master完成写文件操作后,将该文件发送给Slave,并在发送期间继续记录被执行的写命令
  5. Slave丢弃所有旧数据,载入新的快照
  6. Slave完成快照载入,开始接受命令请求,并执行Master发送的缓存指令


    image.png

主从增量同步:Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程

  1. Master接收到用户的操作指令,判断是否需要传播到Slave
  2. 将操作记录追加到AOF文件
  3. 将操作传播到其他Slave:a对齐主从库;b往相应缓存写入指令
  4. 将缓存数据发送给Slave
  5. Slave执行Master发送的缓存指令

Redis主从可以用来读写分离,Master用来处理写操作,Slave处理读操作(可能会有延迟),但毕竟是单点,万一Master宕机了怎么办?那么就有了哨兵机制的出现,通过自动完成故障发现和转移保证服务的高可用。

Redis Sentinel:解决主从同步Master宕机后主从切换问题

监控:检查主从服务器是否正常运行
* 每个哨兵节点每10秒会向主节点和从节点发送info命令获取最拓扑结构图,哨兵配置时只要配置对主节点的监控即可,通过向主节点发送info,获取从节点的信息,并当有新的从节点加入时可以马上感知到;
* 每个哨兵节点每隔2秒会向redis数据节点的指定频道上发送该哨兵节点对于主节点的判断以及当前哨兵节点的信息,同时每个哨兵节点也会订阅该频道,来了解其它哨兵节点的信息及对主节点的判断,其实就是通过消息publish和subscribe来完成的
* 每隔1秒每个哨兵会向主节点、从节点及其余哨兵节点发送一次ping命令做一次心跳检测,这个也是哨兵用来判断节点是否正常的重要依据
提醒:通过API向管理员或其他应用程序发送故障通知
自动故障迁移:主从切换
* 选出一个Slave脱离原从节点升级为主节点
* 将其他Slave指向新的主节点
* 通知客户端主节点已更换
* 将原Master变成从节点,指向新的Master

image.png

流言协议Goddip--在杂乱无章中需求一致

  • 每个节点都随机与对方通信,最终所有节点的状态达成一致
  • 种子节点定期随机向其他节点发送节点列表以及需要传播的消息
  • 不保证信息一定会传递到所有节点,但保证最终的一致性

相关文章

  • Redis-主从用服务冗余避免单点

    在说到Redis主从同步之前先说说同步过程中会用到的Pipeline Redis客户端与Redis服务器之间使用T...

  • D-50高可用冗余服务(keepalived)

    一、高可用冗余服务介绍 作用说明: 避免单点故障1). 负载均衡服务2). 数据库服务 高可用(MHA)3)...

  • STP、RSTP

    一、背景 为了提高网络可靠性,避免单点故障而导致网络中断,常常需要在网络中部署冗余链路或冗余设备,但是部署了冗余链...

  • Redis集群、主从、哨兵

    集群是多个服务器运行单个服务,向Redis这样的。集群和主从复制不同的是,主从复制通常是冗余,A主机的数据完全备份...

  • Redis集群

    主从模式 主服务器实时同步数据到从服务器中。防止主服务器出现单点事故,导致数据丢失。参考Redis主从复制原理[h...

  • 高可用Redis系统的搭建

    工程部门同事问起,为了避免单点redis出现故障,我们提供的程序是否支持redis主从。 mark 下

  • 分布式架构设计之逻辑层

    逻辑层: 可扩展:(注①): 水平扩展(冗余部署,防单点) 垂直扩展(提升处理能力,增加内存磁盘等) 隔离:避免单...

  • 如何保证高可用?搞定三种集群模式,Redis还不是手到擒来?

    一、主从模式 1、需求 为了避免单点故障,通常的做法是将数据库复制多个副本部署在不同的服务器上。这样,即使有一台服...

  • redis的master-slave

    redis的主从(master-slave) 单点redis服务器的弊端单个服务器的情况下,如果这个服务器发生故障...

  • mysql高可用性之主从复制

    1.主从原理 2.主从用途mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业...

网友评论

    本文标题:Redis-主从用服务冗余避免单点

    本文链接:https://www.haomeiwen.com/subject/bcvciqtx.html