博客
关于我
Redis cluster集群扩容缩容原理
阅读量:732 次
发布时间:2019-03-21

本文共 540 字,大约阅读时间需要 1 分钟。

Redis集群在实际应用中,为了应对节点数量的变化,通常需要实施扩容或缩容策略。以下是两者的实现原理:

扩容原理:

Redis集群通过 تقس配方式实现灵活的节点管理。每个主节点(master)负责特定的槽(slot)和对应数据。当需要增加节点时,只需将部分槽和数据迁移至新节点。新节点初次加入后因槽占比不足,不可直接接收读写操作。迁移过程可采取两种方式:一是直接从其他节点迁移槽和数据,二是作为其他节点的从节点(slave)负责故障转移,随后接管相关槽。
迁移过程特点:

  • 过程同步,目标节点执行restore指令,原节点主线程阻塞直至槽迁移完成。
  • 若网络出现问题,迁移可能完成一部分,导致两个节点分别标记为"migrating"和"importing"状态,待恢复后续迁移。
  • 关键是避免大值key的存在,因为单次迁移会 block 两个节点,影响集群性能。因此,在集群环境下,业务逻辑应尽量避免处理大key。

缩容原理:

当需要下线节点时,处理方式与扩容持.lua类似:

  • 若下线的是从节点(slave),只需通知其他节点忘记该节点即可。
  • 若为主节点(master),需将其负责的槽迁移至其他主节点,完成后通知其他节点忘记该节点。
    该节点随后可下线并停止服务,进而可从集群中脱离。

转载地址:http://ukpgz.baihongyu.com/

你可能感兴趣的文章
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>