前面我们用Sentinel解决了主从复制故障不能自动迁移的问题,但是主节点的写性能和存储能力依然是受到了Redis单机容量有限的限制,所以使用Redis集群去解决这个问题,将Redis的数据根据一定的规则分配到多台机器。
集群(Cluster):
Cluster模式是Redis3.0开始推出,由多个节点群组成的分布式服务集群,Redis的数据分布在这些节点中。集群不需要Sentinel哨兵也可以完成故障自动迁移。 使用集群时需要将redis配置文件中的cluster-enable配置打开。采⽤⽆中⼼结构,每个节点保存数据和整个集群状态, 各个节点会互相通信,采⽤gossip协议交换节点元数据信息,每个节点都和其他所有节点连接。一个集群⾄少需要6个节点才可以保证⾼可⽤,即3主3从。
原理:
redis cluster集群采⽤数据分⽚中的哈希槽来进⾏数据存储与读取的,Cluster会预分好16384个槽,每个节点负责其中的一部分槽位。当需要在 Redis 集群中放置⼀个数据时,Cluster默认会根据 CRC16算法CRC16(key) mod 16384 的值,决定将⼀个key放到哪个槽位中。
常见的配置:
cluster-enabled yes:开启集群模式(cluster)
cluster-config-file:该参数指定了集群配置文件的位置,记录集群节点信息。以集群模式启动时,会首先寻找是否有集群配置文件,如果有则使用文件中的配置启动,如果没有,则初始化配置并将配置保存到文件中
cluster-node-timeout time:节点连接超时时间
cluster-announce-ip ip:集群节点的ip,当前节点的ip
cluster-announce-port port:集群节点映射端⼝
若有不对之处还希望指正为谢!@~@
引用:《Redis设计与实现》、《Redis实战》
网友评论