redis——集群

redis——集群


为保证服务高可用,一般会对服务进行多节点分布式部署,redis有主从、哨兵、切片集群几种模式,这几种模式可以共存

1、主从集群

在slaver的redis.conf中添加主节点地址

主节点ip 主节点端口

1.1、同步过程

  1. slaver向master发送psync,传递runID(第一次为?,后面为主库runID)和offset(第一次为-1,后面为从库的复制进度)
  2. master回复fullresync,表示第一次全量复制
  3. master执行bgsave生成rdb文件,发给slaver
  4. slaver接收rdb文件,先清空当前库,再加载rdb
  5. 当同步完成后,后续master再接收到写指令,会先执行指令再发给slaver

1.2、特殊同步点

  • master向slaver同步时(生成rdb并传输的过程),新接收的写操作会放到replication buffer中,master针对每个slaver都会创建对应的replication buffer,用于缓存增量操作,等rdb传输完成后再发给slaver,让slaver追加执行
  • master和slaver断连期间,master接收到的写请求会同时写到replication buffer和repl_backlog_buffer中,repl_backlog_buffer是master在拥有slaver时创建的,所有slaver共享,是一个环状缓存队列,用于master记录少量的写入操作。当slaver恢复连接后,会向master发送psync并携带slave_repl_offset表示自己同步数据的偏移量,master收到后同自己当前写入数据的偏移量master_repl_offset对比,将区域间的指令复制到对应slaver的replication buffer中,再发送给slaver

1.3、主从级联模式

为了防止master同时对多台slaver全量复制导致的子进程fork堆积和rdb文件传输的带宽占用,一般会将master下的部分slaver部署在某几台slaver之后,形成间接的主从关系并进行主从复制传递,以减少master全量同步的压力

2、哨兵集群

主从集群没有主从切换的功能,主节点可读写,从节点只能读。为了解决主节点挂掉后写操作不可用的问题,引入哨兵节点监控主从节点状态并管理主从状态

在sentinel.conf中添加主节点配置

sentinel monitor 主节点名 主节点ip 主节点端口 哨兵集群中的多少个节点判定主节点不可用时会进行切换

2.1、哨兵通信

通过redis的发布订阅模式,各个哨兵节点启动后将自己的ip端口发布到主节点的__sentinel__:hello频道上,并订阅该频道,各个哨兵之间的地址就都互通了

2.2、监控和选主

  1. sentinel向master发送INFO指令,获取slave信息,并进行heartbeat
  2. 当某个sentinel判断master断连时,向其他sentinel发送is-master-down-by-addr,进行master状态判断,并作出投票反馈
  3. 赞成master切换的票数大于配置时,这个sentinel会给其他sentinel发送指令进行Leader选举,表示自己来执行主从切换
  4. Leader选举的赞成票过半表示同意该sentinel负责主从切换
  5. sentinel淘汰掉下线的slaver和断连次数过多的slaver,以优先级、同步程度和ID号三个信息依次进行比较,优先级高的直接被选为主库,相同的再比同步程度,再相同再比ID

3.、切片集群

主从模式下,redis随着内存占用越大,持久化操作的时间越长,这样会拖垮redis性能,为此将单主下的大内存拆成若干小内存分布在多主下,减少每个主节点的持久化压力,属于水平扩展

开启切片

cluster-enabled yes

3.1、写操作流程

  1. claster会同步相关联claster的信息,以拥有完整的hash槽对照表
  2. client与claster建立连接,并获取对照表
  3. client想要进行写操作时,将key进行crc16计算并对16384取模(所有claster共有16384个hash槽,默认平均分配),再根据对照表就能知道他要往哪个claster发指令

3.2、特殊点

  • 当节点个数变化时,需要对槽进行重新分配,并设计数据迁移
  • 重新负载后,客户端的hash槽对照表失效,请求会打到老claster,由老claster根据自己的hash槽对照表告诉client失效key所在最新节点,client再直连新claster进行写操作
  • 重新负载时,如果请求打到正在迁移的的claster,claster会返回数据的位置和对应节点状态,client会向数据所在的新的claster发送asking命令,让claster允许执行后续命令,此时client再向claster发送指令
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项3目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdmE.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
Redis集群是一个由多个主从节点组成的分布式服务集群。它的主要特点是具有复制、高可用和分片的能力。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。具体来说,Redis集群将数据划分为16384个slots,每个节点负责一部分槽位的数据。每个节点之间通过Gossip协议相互交互集群信息,并保存着其他节点的槽位分配情况。这种去中心化的方式使得集群具有高可用性和扩展性。集群中的每个节点都可以水平扩展,官方建议不超过1000个节点。Redis集群的配置相对简单,性能和高可用性也优于之前版本的哨兵模式。而在Redis 4.0之后的版本中,引入了面对槽位的管理,使得集群的路由信息管理和数据迁移更加灵活和高效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [redis系列六redis-cluster集群的原理](https://blog.csdn.net/sswltt/article/details/106438796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis——cluster集群原理](https://blog.csdn.net/weixin_41605937/article/details/114779041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wheat_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值