redis集群之Codis( 四 )
Codis 将槽位关系存储在 zk 中 , 并且提供了一个 Dashboard 可以用来观察和修改槽位关系 , 当槽位关系变化时 , Codis Proxy 会监听到变化并重新同步槽位关系 , 从而实现多个
Codis Proxy 之间共享相同的槽位关系配置 。
扩容
刚开始 Codis 后端只有一个 Redis 实例 , 1024 个槽位全部指向同一个 Redis 。 然后一个 Redis 实例内存不够了 , 所以又加了一个 Redis 实例 。 这时候需要对槽位关系进行调整 ,
将一半的槽位划分到新的节点 。 这意味着需要对这一半的槽位对应的所有 key 进行迁移 , 迁移到新的 Redis 实例 。
那 Codis 如果找到槽位对应的所有 key 呢?
Codis 对 Redis 进行了改造 , 增加了 SLOTSSCAN 指令 , 可以遍历指定 slot 下所有的key 。 Codis 通过 SLOTSSCAN 扫描出待迁移槽位的所有的 key , 然后挨个迁移每个 key 到新的 Redis 节点 。 在迁移过程中 , Codis 还是会接收到新的请求打在当前正在迁移的槽位上 , 因为当前槽位的数据同时存在于新旧两个槽位中 , Codis 如何判断该将请求转发到后面的哪个具体实例呢?Codis 无法判定迁移过程中的 key 究竟在哪个实例中 , 所以它采用了另一种完全不同的思路 。 当 Codis 接收到位于正在迁移槽位中的 key 后 , 会立即强制对当前的单个 key 进行迁移 , 迁移完成后 , 再将请求转发到新的 Redis 实例 。
推荐阅读
- 腾讯云数据库Redis鼎立支持:腾讯会议完成300人在线会议
- 蚂蚁花呗五面(高级):分布式+MySQL+HashMap+线程池+MQ+Redis
- Java Redis 你了解多少?
- 腾讯云数据库Redis助力百万企业远程办公
- 2020年大厂面试开发者需知:redis有什么用?
- Redis缓存知识问题
- BAT一线互联网常考面试题:Spring+并发编程+JVM+设计模式+Redis
- 读懂这一篇,集群节点不下线
- 在大数据开发里Zookeeper有什么用?多台服务器集群的安装与配置
- 粉丝福利!不要小看redis,任何一家公司的招聘信息都包含一段redis的需求!