1)数据分区:数据分区(或称数据分片)是集群最核心的功能。 集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。 Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。
(2)高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。
02-Redis集群.txt
Redis集群是Redis提供的分布式数据库方案,它通过分片(sharding)来实现数据共享,并提供复制和故障转移。以下是Redis集群的工作方式的主要特点:
分片(Sharding): Redis集群将整个数据集分成16384个哈希槽(hash slots)。每个节点负责一部分哈希槽,从而分散了数据的存储和访问压力。
多主节点: 在Redis集群中,可以有多个主节点,每个主节点负责处理一部分数据。这样可以水平扩展系统的性能,提高读写操作的吞吐量。
节点间通信: 节点之间通过内部网络进行通信。Redis集群使用集群总线(cluster bus)来进行节点之间的消息传递和协调,以保持集群的一致性和可用性。
故障检测和转移: Redis集群通过定期的PING/PONG消息来检测节点的存活状态。如果一个主节点不可用,集群会通过投票机制选举新的主节点,并进行故障转移,以保持数据的可用性。
客户端分片: 客户端通过哈希算法将数据的key散列到相应的哈希槽,并直接与负责该槽的节点通信。这样,客户端可以直接与多个节点交互,而不必通过中间代理。
自动重新平衡: 当节点的数量发生变化时,Redis集群能够自动重新平衡哈希槽的分配,以适应新的节点配置。