一、Redis高可用集群结构
Redis高可用集群有两种,分别是主从哨兵模式和集群模式
1.主从哨兵模式
其中一台服务器作为master服务器,提供读写服务,配置多台从服务器,从服务器只提供只读服务,同时配置多台sentinel,也即是哨兵,哨兵的作用是可以监控master节点,如果master宕机,可以从从服务器中选举出一台作为master服务器。
哨兵模式,客户端连接哨兵集群,即可获得master服务器的信息。此时客户端并不会做读写分离,也就是所有读写都由master服务器处理,这里相当于从服务器只作为主服务器的数据备份。如果master发生故障,切换到其他从服务器,哨兵会把新的master服务器地址告知客户端。
jedis和RedisTemplate都没有实现读写分离。如果需要可以分别建立master服务器连接池和slave服务器连接池,并严格区分读写操作,路由到需要使用的连接池。需要注意的是,Redis主从复制是异步的,可能存在小概率数据不一致的问题。
参考
https://blog.csdn.net/weixin_38650898/article/details/123866858

2.Cluster集群模式
在主从哨兵模式,所有的写操作都是由master处理,这在性能上可能会出现瓶颈。Redis3.0后推出了集群模式,可以实现水平扩展,配置多台的master服务器处理读写请求。
集群模式下,看似于将一个大的主从架构拆分成多个主从架构的服务器群,具有复制,高可用和分片的特性。不需要哨兵,也可以实现节点故障移除和master选举功能。性能和高可用性均优于哨兵模式,但需要更多的服务器。可以从公司业务的并发量和成本等角度考量选择哪种模式。
Redis Cluster集群模式默认将所有的数据划分为16384个slot槽,每个master节点均匀负责一部的槽位。
通常,会对key值使用crc16算法进行hash得到一个整数值,然后使用这个整数值对16384进行取模,来得到具体的槽位。
Cluster集群模式下,Redis默认从服务是不分担读请求,只作为备注和故障转移。但有读请求到达从服务器,会重定向到主服务器处理。

二、主从数据同步
Redis主从数据同步大致分为两种,全量复制和增量复制
全量复制

增量复制

一般情况下,主从断开连接后会进行全量复制,但Redis2.8后开始支持部分数据的复制。master和从服务器第一次连接时会进行全量复制,同时master和所有的slave都会维护一个复制数据的偏移量offset和master的进程id。如果从服务器断开重连后,会比较偏移量是否太旧或者master进程id是否变更了,如果这样则会进行一次全量复制,否则会进行部分复制,把offset之后的数据同步给从服务器。

三、选举
1.主从哨兵模式
这种模式下,是有哨兵监控master服务器状态,并实现故障转移。一旦master服务器宕机,则哨兵会从剩下的从服务器中选举一条作为新的master节点。这里有几个概念:
主观下线:
哨兵会定期向主服务器发送心跳包检测是否正常,如果超过配置文件中sentinel down-after-milliseconds mymaster 配置的时间没有收到主服务器的回复,则这个哨兵认为主服务下线。
客观下线:
一个哨兵把master记为主观下线,并不代表master就一定下线了,此时要向其他哨兵确认master是否真的下线,如果超过sentinel monitor mymaster 配置的数量(一般为哨兵数量/2 + 1)哨兵认为master下线,则记为客观下线。
哨兵选举master服务器过程:

  1. 先从哨兵中选举出一个leader,并由这个leader选举出新的master
  2. 过滤故障节点,从剩余的节点中按照下列规则选出master
  3. 优先选择slave-priority最大的从节点作为主节点
  4. 其次选择数据偏移量最大的节点
  5. 选择runid最小的从节点

2.集群模式

  1. slave发现自己的master下线后,会广播故障转移信息到其他master节点
  2. master接收到slave故障转移请求后,首先会检测请求的合法性,然后发送响应ack给slave,每轮投票,master只会响应一次
  3. 一旦一个slave接收超过半数master的ack后,则被选中成为新的master,否则会进行下一轮的投票

四、过期内存淘汰策略

  1. 被动删除,客户端get 请求某个key时,会判断是否过期,如果过期了,则会清楚
  2. 主动删除,redis定期扫描一批key,检查是否过期,如果过期,则清楚
  3. 内存淘汰策略,当redis内存不足以容纳更多的key时,则会触发内存淘汰策略,可以在配置文件配置。常用有lru(最久没访问),lfu(访问频率最低) random(随机),同时可以配置针对所有的key,还是设置了过期时间的key执行淘汰。

Redis集群数据同步与选举相关推荐

  1. redis集群数据迁移方式、宕机

    数据迁移方式 转载:https://blog.csdn.net/tianpeng341204/article/details/78963850 Redis Cluster数据分片机制 基础概念 集群: ...

  2. 清空Redis集群数据工具

    FLUSHALL和FLUSHDB是单机命令,所以清空集群需要在所有Master节点上均执行一次.下载:https://github.com/eyjian/redis-tools/blob/master ...

  3. Nacos集群数据同步

    引言 在Nacos属于集群时,当服务器收到服务注册请求后,发生了ClientEvent.ClientChangedEvent事件,就会触发将注册的服务信息同步给集群中的其他Nacos-server节点 ...

  4. mongodb集群数据同步及故障演练

    在上一篇我们简单搭建了mongodb的副本集模式的集群,这一篇我们来模拟一下数如何在集群实现同步的,并简单演示一下集群故障及自动恢复的场景, 1.启动集群,三个节点做同样的操作 2.启动成功后,进入某 ...

  5. RabbitMQ镜像集群与ShovelFederation跨集群数据同步

    部署环境与版本 安装包下载地址: Erlang语言依赖下载链接:http://erlang.org/download/otp_src_21.1.tar.gz RabbitMQ 3.7.8版本下载链接: ...

  6. Eureka Server集群数据同步

    一.数据同步 Eureka Server之间会互相进行注册,构建Eureka Server集群,不同Eureka Server之间会进行服务同步,用来保证服务信息的一致性.当服务提供者发送注册请求到一 ...

  7. Nacos源码集群数据同步

    在DistroConsistencyServiceImpl的put方法中分为两步: 其中的onPut方法已经分析过了. 下面的distroProtocol.sync()就是集群同步的逻辑了. Dist ...

  8. INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步

    文章目录 极限网关-配置说明 配置文件 日志.数据目录 定义入口 定义路由 定义流程 定义资源 使用Demo 写入两个ES集群 极限网关-常见问题 shutdown: ORM handler is n ...

  9. mysql5.5集群数据同步_[转]配置mysql5.5主从复制数据库集群

    一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22 二.配置MySQL主服务器(192.168. ...

最新文章

  1. Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点
  2. scala recursive value x$5 needs type
  3. Wireshark网络分析实例集锦(大学霸内部资料)
  4. 用for语句设置密码
  5. 办公软件Office 2010下载安装介绍
  6. 牛客网——华为机试(题17:坐标移动)(Java)
  7. 再印!抽奖!有三AI学习扑克牌新一批货到
  8. oracle查询用户的概要文件,Oracle用户、概要文件、权限及角色实例
  9. 解决OutOfMemoryError: unable to create new native thread问题
  10. 书评 – 程序员经典读物(1)
  11. 吴恩达机器学习作业(3):逻辑回归
  12. php 商品规格笛卡尔积,PHP 求多个数组的笛卡尔积,适用于求商品规格组合【原创】...
  13. 计算机网络系统juniper
  14. Python3对多股票的投资组合进行分析
  15. (CVPR-2020)Strip Pooling:重新思考场景解析的空间池化
  16. 如何使用计算机对文件修改密码,文件夹怎么设置密码?怎么给文件夹设置密码?...
  17. 最新Spring Boot视频教程附代码笔记资料(50G)
  18. Activity5概述
  19. 【毕业设计项目】基于单片机的指纹识别系统实现 - 物联网 stm32 c51
  20. rdlc和rdl的区别

热门文章

  1. C语言 while语句中的break与continue
  2. 用jquery实现换肤的效果
  3. Windows开机后不显示桌面解决办法
  4. 深入理解ROC曲线的定义以及绘制ROC曲线过程,其与模型性能的关系,以及AUC
  5. 解决db文件打不开的问题【Sqlite】
  6. 【满分】【华为OD机试真题2023 JAVAJS】寻找相似单词
  7. sum and plan | 要温和有力量地长途旅行~
  8. 量比 - 是衡量相对成交量的指标
  9. 2016国庆清北Day2T1
  10. 企业不做网站建设会有哪些损失?