Codis完全依赖ZooKeeper,进入到Redis Cluster后,ZooKeeper哪里去了?我们先回忆一下ZooKeeper在其中的角色,详情请参见《豆瓣Redis解决方案Codis源码剖析:Dashboard》:
- 保存Slot和Group映射
- 将Slot和Group的变化通知Proxy
- 迁移时与Proxy进行Pre-migrate确认
- 保存Migrate任务和进度信息
因为Redis Cluster的P2P架构,Slot与结点的映射关系都打散到集群中的各个结点上,所以第一个问题就解决了。又因为当客户端去旧结点请求数据时会收到MOVED或ASK消息进行重定向,就像是LAZY缓存过期策略一样,等访问时再更新或清除,所以第二和第三个问题也解决了。唯一要重点考虑的就是迁移任务这种Redis Cluster并不负责的全局信息的保存。
本文作者:geelou
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。