redis切片集群

问题

RDB 持久化时,fork 子进程用时和 Redis 的数据量是正相关的。数据量越大,fork 操作造成的主线程阻塞的时间越长。

切片集群机制

  • 一个切片集群共有 16384 个哈希槽,每个键值对都会根据它的 key,被映射到一个哈希槽中。

    映射方法:

    按照CRC16 算法计算一个 16 bit 的值;

    再用这个 16bit 值对 16384 取模,得到 0~16383 范围内的模数,对应相应编号的哈希槽

  • Redis 实例把自己的哈希槽信息发给和它相连的其它实例,来完成哈希槽分配信息的扩散。

  • 客户端和集群实例建立连接后,实例把哈希槽的分配信息发给客户端

难点

  • 集群实例有新增或删除,Redis 需要重新分配哈希槽;
  • 为了负载均衡,Redis 需要把哈希槽在所有实例上重新分布一遍。

解决方法

重定向机制,客户端给一个实例发送数据读写操作时,这个实例上并没有相应的数据,实例返回的 MOVED 命令响应,其中包含了新实例的访问地址,客户端给对应新实例发送操作命令(客户端更新了本地缓存)。

注:如果数据在实例中迁移到一半,实例返回ASK 报错信息,表明 Slot 数据还在迁移中,并返回最新实例地址(客户端不更新本地缓存)。


   转载规则


《redis切片集群》 wangyixin-tom 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
redis阻塞及解决办法 redis阻塞及解决办法
阻塞分析客户端复杂度高的增删改查操作1、集合全量查询和聚合操作2、bigkey 删除3、清空数据库 磁盘1、AOF 日志同步写 主从节点1、从库接收 RDB 文件后、清空数据库、加载 RDB 文件; 切片集群向其他实例传输哈希槽信息,数据
2020-10-26
下一篇 
redis哨兵机制 redis哨兵机制
问题主库故障的相关问题: 1、确定主库故障 2、选择新的主库 3、新主库信息通知 基本功能监控 哨兵进程周期性地给所有的主从库发送 PING 命令,检测它们是否仍然在线运行。 主库或从库对 PING 命令的响应超时了,哨兵会标记为主观下线
2020-10-25
  目录