博客
关于我
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/

你可能感兴趣的文章
Qt笔记——SQLite再探
查看>>
poj1068Parencodings
查看>>
poj1182(带权并查集)
查看>>
POJ1182(带权并查集)
查看>>
Qt笔记——Qt初探、PyQt5和Qt5
查看>>
poj1190生日蛋糕
查看>>
POJ1218 HDU1337 ZOJ1350 UVALive2557 THE DRUNK JAILER
查看>>
poj1222 EXTENDED LIGHTS OUT(gauss)
查看>>
POJ1240 m叉树
查看>>
Poj1328--Radar Installation(区间选点)
查看>>
POJ1384Piggy-Bank(DP)
查看>>
POJ1417 True Liars —— 并查集 + DP
查看>>
Poj1459 Power Network 预流推进
查看>>
POJ1502(MPI Maelstrom)
查看>>
poj1568 Find the Winning Move[极大极小搜索+alpha-beta剪枝]
查看>>
poj1730 - Perfect Pth Powers(完全平方数)(水题)
查看>>
poj1753——Flip Game
查看>>
poj1936 假期计划第一水
查看>>
poj1958-汉诺四塔问题(三种方法)
查看>>
poj1988(并查集)
查看>>