今天接触了Redis的集群,就把他记录下来了。
集群原理:
redis-cluster 架构图
架构细节:
1.所有的redis节点彼此互联(Ping-Pong机制),内部使用二进制协议优先传输速度和带宽。
2.节点的容错(fail)是通过集群中超过半数半数节点检测失效时才生效。
3.客户端与节点直接链接。不需要通过中间proxy层,客户端不需要链接集群所有节点,链接集群中任何一个可用节点即可。
4.redis-cluset将所有的物理节点映射到了[0-16383]slot(槽点)上,cluset 负责维护 node <->slot<->value
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
5.关于集群的容错: 如果集群任意的主节点挂掉,且此主节点没有备份子节点进入集群,那么整个集群就会宕掉;(因为此时集群的槽点不完整)如果整个集群有半数以上主节点挂掉,即使这些主节点的备份子节点进入集群,整个集群也会处于宕掉的状态。