Redis三种集群模式详解
redis主从复制
1、reids主从模式redis 的复制分为两部分操作 同步(SYNC)和 命令传播(command propagate)
同步(SYNC)用来将从服务器的状态 更新到 和主服务器 一致。白话文解释就是从服务器主动获取 主服务器的数据。保持数据一致。具体实现是,主服务器收到SYNC命令后,生成RDB快照文件,然后发送给从服务器。 命令传播 (command propagate)用于在主服务器数据被修改后,主从不一致,为了让从服务器保持和主服务器状态一致,而做的命令传播。白话文解释就是主服务器收到客户端修改数据命令后,数据库数据发生变化,同时将命令缓存起来,然后将缓存命令发送到从服务器,从服务器通过载入缓存命令来达到主从数据一致。这就是所谓的命令传播。 为什么需要有同步和命令传播的两种复制操作: 当只有同步操作时候,那么在从服务器向主服务器发送SYNC命令时候,主服务器在生成RDB快照文件时候,仍然会收到客户端的命令修改数据状态,这部分数据如果不能传达给从服务器,那么就会出现主从数据不一致的现象。这时候就出现了命令传播,主服务器收到从服务器的SYNC命令后,生成RDB快照文件同时,将此段时间内收到的命令缓存起来,然后使用命令传播的操作发送从服务器。来达到主从数据一致。 3、redis主从复制原理上面介绍了redis复制的两种操作,而redis得主从复制正式基于 同步 和 命令传播 来实现得。下面两张图展示了redis复制的流程:
优点:
1、实现读写分离,提高了可用性,解决了单机故障2、主从复制期间master和slave都是非阻塞方式,仍然可用。
缺点:
1、master宕机期间,需要手动切换主机,同时会有部分数据不能及时同步从服务器,造成数据不一致(需要人工手动介入)
2、slave宕机后,多个slave恢复后,大量的SYNC同步会造成master IO压力倍增(可以手动规避启动时间)
3、在线扩容较复杂。
总结:
redis主从复制的优点主要是提高了可用性缺点
Sentinel 哨兵Sentinel 哨兵介绍
Sentinel 哨兵本质上是一个运行在特殊模式下的Redis实例,只是初始化的过程和工作与普通的Redis不同,本质上也是一个单独的进程。
Sentinel 哨兵 是Redis的高可用解决方案:一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在主服务器下线时可以自动切换从服务器升级为主服务器。
下图是一个简单的Sentinel系统架构图,一个Sentinel系统监视一个主从集群,其中server1是Redis主服务器,server2/3/4是Redis 从服务器。主从之间利用上面的主从复制来达到主从一致。而Sentinel系统监视整个主从集群。
当Sentinel系统察觉到Server1主服务器下线时,就会终止server2/3/4的复制。
同时Sentinel将server2升级为主服务器,server3/4从新的主服务器进行复制。同时等待server1的再次上线。
Sentinel系统也可以主动降级主服务为从服务器,将从服务器升级为主服务器。
Sentinel 哨兵监控集群过程:
命令 Sentinel哨兵通过发送命令,让redis服务器返回运行状态。发布订阅 当主服务器状态发生变化时,Sentinel哨兵通过 发布订阅模式通知其他从服务器。 2.2、Sentinel 哨兵故障转移Sentinel 故障转移:
1、Sentinel系统中的Sentinel实例每隔1s就像集群发送PING命令 2、如果集群中有实例的回复Sentinel实例时间超过了 down-after-milliseconds,那么这个实例就会发送PING命令的Sentinel实例被主观下线 3、那么什么时候会客观下线呢?需要Sentinel系统中其他实例也确认集群中该实例主管下线。 如果master主服务器被标记为主观下线,则Sentinel系统中监视master的Sentinel进程需要以每秒一次的频率确认Master是否进入主管下线状态 4、当有足够的Sentinel实例(取决于配置)确认Master进入了主管下线,则Master会被标记为客观下线。优点:
1、哨兵模式基于主从复制,因此主从复制的优点哨兵都具备2、哨兵具备了主从切换和故障转移,因此集群有了更高的可用性
缺点:
1、Redis较难支持在线扩容,在线扩容比较复杂。
总结:
sentinel 哨兵主要用来监控redis主从集群,提高了redis 主从集群的可用性。
redis cluster
1、reids clusterRedis Cluster是一种服务器 Sharding 技术,redis 3.0版本开始正式提供。
Sentinel基本已经实现了高可用,但是每台机器都存储相同内容,很浪费内存,所以Redis Cluster实现了分布式存储。每台机器节点上存储不同的内容。
redis 数据分片使用的是hash slot, redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪一个槽。
当存取redis key时候,redis会根据CRC16算法得到一个结果,然后把结果和16384求余,通过这个值去对应得节点获取数据。
这个时候,应用客户端实际上只需要连接其中任意一个节点即可,然后Redis Cluster 中每个节点都保存了其他节点得槽信息。这样当存取key计算完槽之后,通过保存槽信息从配置中获取节点信息,然后再去对应得节点获取数据。
redis-cluster集群引入了主从复制模型,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点 ping 一个主节点 A 时,如果半数以上的主节点与 A 通信超时,那么认为主节点 A 宕机了。如果主节点 A 和它的从节点 A1 都宕机了,那么该集群就无法再提供服务了
4、redis Cluster 优缺点优点:
1、实现了分布式存储,节省了内存
到此这篇关于Redis三种集群模式介绍的文章就介绍到这了,更多相关Redis三种集群模式内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Redis三种集群模式详解
相关文章
- 前景可期:Redis集群提升性能(redis集群性能)
- Redis:多样化存储库之旅(redis有几个库)
- 避免陷入坑中:深入理解 Redis 集群中的缺陷与挑战(redis集群的坑)
- Redis实现强大的同步锁.(redis同步锁)
- 解决Redis数据同步问题的有效途径(解决redis数据同步)
- 破解Redis如何跳过限制实现数据自由访问(绕开redis)
- 搭建Redis集群提升数据安全保障极大优化性能(搭建redis集群的好处)
- Redis在什么场景下最为突出(什么场景下用redis)
- 三国杀查询Redis遇上灾难无法响应(三国杀查询redis失败)
- 构建单机上的Redis集群(单机下redis集群)
- 基于Redis的库存自动扣减系统(基于redis库存扣减)
- 轻松实现双服务器Redis集群部署(双服务器redis集群)
- 一步步指导从零开始学习Redis(redis零基础入门教程)
- 利用Redis哨兵解决雪崩效应(redis雪崩哨兵)
- 阿里云上搭建Redis集群把稳定表现带到极致(redis 集群 阿里云)
- Redis集群性能评测报告(redis集群评测)
- 借助Redis集群管理,实现高效的对象获取(redis集群获取对象)
- 使用Redis集群添加从节点的指南(redis集群添加从节点)
- Redis集群中模式不平衡的解决之道(redis集群模式不均衡)
- 掉深入探究Redis集群中一个节点挂掉引发的影响(redis集群某个节点挂)
- 贴吧Redis集群搜狐贴吧极致社交体验(redis集群 搜狐)
- 备份构建Redis集群实现异步数据备份(redis集群异步)
- 构建Redis集群,利用Scan实现更优价值(redis集群 scan)
- 构建Redis 集群三种有利方案(redis集群3种方式)
- 提升访问Redis的能力(redis访问能力)
- Redis如何获取主节点IP地址(redis获取主节点ip)
- Redis网络架构图实现分布式集群管理(redis 网络架构图)
- Redis的设计之父开发者Salvatore Sanfilippo(redis谁写的)
- 查询次数猛增Redis新机遇新挑战(redis查询次数多)