正文
redis主从切换槽位重新分配,redis 主从切换
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
Redis主从复制原理详解
客户端命令: Redis服务器启动后,直接通过客户端执行命令 slaveofmasteripmasterport,则该Redis实例成为从节点。通过 info replication 命令可以看到复制的一些信息。主从复制原理 主从复制过程大体可以分为3个阶段:连接建立阶段(即准备阶段)、数据同步阶段、命令传播阶段。
在主服务器与从服务器之间进行数据复制,分为两种方式:完整的重同步(full resynchronization)和部分的重同步(partial resynchronization)。主服务器 创建 并 发送RDB文件 ,以及向从服务器发送保存在 缓冲区 里面的写命令来进行同步。
Redis主从复制是指在一个Redis集群中,将一个Redis节点作为主节点,其余的Redis节点作为从节点。主节点负责写入数据,从节点负责读取数据。当主节点发生宕机或者故障时,从节点可以起到备份或者替换的作用,从而保障Redis集群的高可用性。
redis的主从复制分为两个阶段: 1)同步操作:将从服务器的数据库状态更新至主服务器当前所处的数据库状态。 2)命令传播:在主服务器的数据库状态被修改,导致主从服务器的数据库状态出现不一致时,让主从服务器重新回到一致状态。
redis的解决方案就是使用 增量复制 实验 查看日志 我们看到从库宕机重连后并没有进行再一次的全量复制,而是将增加后的数据发给从库。 当主从断连后,主库会把断链期间收到的写命令写入replication buffer(上面有提到),同时也会写入repl_backlog_buffer这个缓冲区。
基于主从复制架构,实现读写分离,redis slave node节点只读,默认开启配置:slave-read-only yes。开启了只读的节点redis slave node,会拒绝所有写操作,这样可以强制搭建成读写分离的架构。(1)redis采用异步方式复制数据到slave节点。(2)一个master node是可以配置多个slave node的。
redis集群三种方式
基于以上, Redis 集群方案显得尤为重要。通常有 3 个途径:官方 Redis Cluster ;通过 Proxy 分片;客户端分片 (Smart Client) 。以上三种方案各有利弊。
以Java语言为例,简单说一下,除了一些公司自主开发的集群外。常用的解决高并发问题的集群一般有三种:使用redis-trib.rb,这个是安装redis时就自带的一种集群,采用了服务端分片的方式,支持主备,此集群既解决了高并发的问题,也解决了高可用的问题。Jedis使用JedisCluster类来访问。
Redis Cluster的新节点识别能力、故障判断及故障转移能力是通过集群中的每个node都在和其它nodes进行通信,这被称为集群总线(cluster bus)。它们使用特殊的端口号,即对外服务端口号加10000。例如如果某个node的端口号是6379,那么它与其它nodes通信的端口号是16379。nodes之间的通信采用特殊的二进制协议。
单个Redis服务如果宕机的话,服务就不可用了,为了解决这种问题,redis也提供有集群服务。传统的Redis集群采用的主从复制模式,一般为一主多从,主节点有读写权限,但是从节点只有读的权限。主节点会定期将数据同步到从节点中,保证数据一致性的问题。
Redis Cluster:P2P模式,无中心化把key分成16384个slot每个实例负责一部分slot客户端请求若不在连接的实例,该实例会转发给对应的实例。
Redis Sharding采用客户端Sharding方式,服务端Redis还是一个个相对独立的Redis实例节点,没有做任何变动。同时,我们也不需要增加额外的中间处理组件,这是一种非常轻量、灵活的Redis多实例集群方法。当然,Redis Sharding这种轻量灵活方式必然在集群其它能力方面做出妥协。
玩转Redis的高可用(主从、哨兵、集群)
Redis 哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,很浪费内存,所以在 redis0 上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,对数据进行分片,也就是说每台 Redis 节点上存储不同的内容;每个节点都会通过集群总线(cluster bus),与其他的节点进行通信。
Redis哨兵集群:守护数据之巅的高可用性解决方案Redis哨兵,一个智能的守护者,确保你的数据永不间断,通过监控主从服务器,一旦主服务器出现故障,它能立即启动紧急切换机制,确保服务的无缝连续性。主从分离的艺术:首先,安装Redis,每个服务都配备独特的身份。
Redis集群,作为数据存储和处理的强大解决方案,提供了多种模式以确保高可用性和性能。让我们深入了解一下Redis集群的三大核心组件——主从复制、哨兵模式和Cluster,以及它们如何协作以应对各种场景。主从复制: 容错和读写分离的基石,通过全量复制和增量复制确保数据一致性。
为了解决主从模式不能高可用的问题,哨兵模式就出现了。哨兵模式就是在主从模式的基础上再加一个哨兵集群。每个哨兵都会监控主节点和从节点的状态。如果主节点挂了,就会从从节点中选出一个来作为主节点,以达到高可用的目的。
Redis的哨兵机制就是解决主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。 要使用哨兵机制,除了启动Redis服务以外,还要启动哨兵服务来进行监控,会介绍详细步骤。
Redis-Cluster集群
1、Redis Cluster 的性能与单节点部署是同级别的。 多主节点、负载均衡、读写分离 Redis Cluster 支持标准的 主从复制配置来保障高可用和高可靠。 failover (故障转移) Redis Cluster 也实现了一个类似 Raft 的共识方式,来保障整个集群的可用性。
2、集群进行故障转移的方法和Sentient进行故障转移的方法基本一致,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群中不需要使用Sentinel。redis-cluster集群将键存储空间分割为16384个槽位(slot),事实上集群最大节点数量是16384个【官方建议最大节点数量不超过1000个节点】。
3、Redis通过对KEY计算hash,将KEY映射到slot,集群中每个节点负责一部分slot的方式管理数据,slot最大个数为16384。
4、CLUSTER_NODE_PFAIL :当前节点认为某个节点下线时,会将节点状态改为 CLUSTER_NODE_PFAIL ,由于可能存在误判,所以需要根据集群中的其他节点共同决定是否真的将节点标记为下线状态, CLUSTER_NODE_PFAIL 可以理解为疑似下线,类似哨兵集群中的主观下线。
redis主从切换槽位重新分配的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于redis 主从切换、redis主从切换槽位重新分配的信息别忘了在本站进行查找喔。