1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 redis 哨兵模式虽然提供了 redis⾼可⽤、高并发读的解决方案,但是在海量数据应用场景下,仍然存在海量数据存储问题和高并发写的问题。当只有⼀个 Master 对外提供服务时,如果数据量特别⼤,内存占⽤问题严重,数据的高并发写、数据备份和恢复都会⼤⼤降低效率。 针对这些问题,redis 推出 Cluster 集群架构,该结构具有如下特点: (1)Redis Cluster 采用的是基于 P2P 的去中心化的网络拓扑架构,没有中心节点,所有节点既是数据存储节点,也是控制节点; (2)引入槽(slot)的概念,通过 CRC+hashslot 算法支持多个主节点(分片),每个主节点分别负责存储一部分数据,这样理论上可以支持无限主节点的水平扩容以便支持海量吞吐量; (3)内置类似哨兵的高可用机制,能够实现自动故障转移,保证每个主节点的高可用。 因此,redis Cluster 集群也叫分片集群,具有分片存储的特性,不需要哨兵也可以完成故障转移的功能,具有⾼可⽤性,性能优于哨兵模式,可实现⾃动扩容(官⽅建议不要超过 1000 个节点)。 1.2 Cluster 分片集群的作用 Cluster 分片集群的作用如下: (1)集群中有多个 master,每个 master 保存不同数据; (2)每个 master 都可以有多个 slave 节点; (3)master 之间通过 ping 监测彼此健康状态; (4)客户端请求可以访问集群任意节点,最终都会被转发到正确节点。 1.3 哈希槽(hash slot) 1.3.1 插槽原理 在 Cluster 集群里设置了 16384 个哈希槽(hash slot),每个 redis 节点负责管理一部分槽的读写操作。Redis 会把每一个 master 节点映射到 0~16383 共 16384 个插槽(hash slot)上。当在 master 节点上写键值对数据时,redis 先对每个键(key),用CRC16 算法对 key 进行运算,然后用 16384 对运算结果取模,余数作为插槽,寻找插槽所在实例即可,就把这个 key 放入相应编号的哈希槽中。 此外,cluster 集群也支持主从复制模式,每个主节点可以携带一个或多个从节点。
标签:redis,RedisCluster,Cluster,集群,分片,master,Docker,节点 From: https://www.cnblogs.com/qiqi-yi/p/17289409.html