美文网首页
redis-高可用

redis-高可用

作者: 水流不流 | 来源:发表于2019-04-23 19:32 被阅读0次

主从复制

完全是在从节点配置的,有3种方式
(1)配置文件
在从服务器的配置文件中加入:slaveof <masterip> <masterport>
(2)启动命令
redis-server启动命令后加入 --slaveof <masterip> <masterport>
(3)客户端命令
Redis服务器启动后,直接通过客户端执行命令:slaveof <masterip> <masterport>,则该Redis实例成为从节点。

想要断开复制可以用slaveof no one,此时从节点不再接受主节点新的变化。

实现原理

经过上面的slaveof之后,异步开始主从复制。
1.从节点创建socket连接,主节点接受连接。
2.从节点发送ping命令,如果主节点返回pong,则继续。
3.连接建立好后,从节点向主节点发送psync命令,开始同步。这个阶段,主从节点开始互为客户端,主节点也需要主动向从节点发送请求(如推送缓冲区中的写命令)。
4.主从节点维持着心跳机制

复制策略

全量复制

无法进行部分复制时,步骤如下:
1.主节点执行bgsave,生成RDB文件,并在复制缓冲区记录从现在开始执行的所有命令。
2.将RDB文件发送给从节点,从节点首先清楚自己的旧数据,然后载入文件。
3.主节点继续将复制缓冲区的写命令发给从节点。

部分复制

有三个关键点:复制偏移量、复制缓冲区、服务器运行ID。
1.redis启动时会生成一个随机runId,主从复制时,从节点会将它之前保存的runId发给主节点,主节点看是否是自己的,不是则全量复制。
2.主从节点都会保存一个复制偏移量offset,发送数据的时候,发送偏移量相差的部分。
3.主节点有一个复制缓冲区,这是一个队列,保存这主节点最近执行的写命令,如果主从节点offset相差的数据,已经不全在缓冲区里了,则执行全量复制。

这里不管是几个从节点,主节点都只有一个复制缓冲区。

哨兵

由哨兵节点和数据节点组成

哨兵架构图,来源https://www.cnblogs.com/kismetv/p/9609938.html

每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。
最好是基数个,便于投票抉择
哨兵领导者选举流程:
主节点下线时,开始选取哨兵领导者,监视该主节点的所有哨兵都有可能被选为领导者,策略是先到先得,谁先申请就是谁。

故障转移新主节点选举流程
1.首先过滤调不健康的从节点
2.若指定了优先级,选择优先级最高的
3.若没有选择复制偏移量最大的
4.若仍无法选择,选择runId最小的

集群

Redis 3.0后开始引入的分布式存储方案。
集群搭建
1.启动节点
2.节点握手
3.分配槽
4.指定主从关系,此时用cluster replicate命令;参数使用节点id

槽的概念-来源于带虚拟节点的一致性哈希分区思想
在Redis集群中,槽的数量为16384

那么redis数据映射过程是:
1.对key计算hash
2.根据hash值计算数据属于哪个槽
3.根据槽与节点的映射关系,找到对应的节点

集群的故障转移跟哨兵类似,但它是由主节点投票选出哪个从节点成为新的主节点。

参考:
深入学习Redis(3):主从复制
深入学习Redis(4):哨兵
深入学习Redis(5):集群

相关文章

  • Redis-高可用

    主从复制 通过slaveof ip port 设置主从关系。 通过psync命令发送已经同步的信息(源id:run...

  • redis-高可用

    主从复制 完全是在从节点配置的,有3种方式(1)配置文件在从服务器的配置文件中加入:slaveof

  • Redis-集群与高可用

    1- 水平分区 VS 垂直分区 分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。...

  • Redis-如何持久化保证高可用

    RDB--备份数据库状态 Redis通过RDB(快照)完成持久化,即保存某个时间点的全量数据快照save:阻塞Re...

  • 基于 Docker 的 Redis 高可用集群搭建(redis-

    前言 之前介绍了用docker来搭建redis主从环境,但这只是对数据添加了从库备份(主从复制),当主库down掉...

  • 基于 Docker 的 Redis 高可用集群搭建(redis-

    前言 之前介绍了用docker来搭建redis主从环境,但这只是对数据添加了从库备份(主从复制),当主库down掉...

  • 基于 Docker 的 Redis 高可用集群搭建(redis-

    前言 之前介绍了用docker来搭建redis主从环境,但这只是对数据添加了从库备份(主从复制),当主库down掉...

  • redis-主从同步

    Redis-主从同步 CAP 在分布式环境下(网络分区),一致性和可用性是互斥的. 一致性和可用性是互斥的 主从同...

  • 架构(4),高可用

    高可用包括:存储高可用,计算高可用,业务高可用。 一、存储高可用 存储的高可用,主要是通过数据冗余的方式来实现高可...

  • day46 高可用(keepalived)

    高可用的基本概述vrrp的原理高可用核心概念总结keepalived高可用安装与配置keepalived高可用抢占...

网友评论

      本文标题:redis-高可用

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