博客
关于我
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 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>
mysql 状态检查,备份,修复
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>