目录
1.Redis 多机部署的方式
2.主从、哨兵、集群模式有什么区别
2.1 主从同步
2.2 哨兵模式
2.3 集群模式
1.Redis 多机部署的方式
Redis 多机部署主要有 3 种方式:
1. 主从同步:主要存储数据的节点叫做主节点(master),其他通过复制主节点数据的副本节点叫做从节点(slave)。在 Redis 中一个主节点可以拥有多个从节点,一个从节点也可以是其他服务器的主节点。
2. 哨兵模式:哨兵模式 Redis Sentinel 是 Redis 的一种运行模式,它专注于对 Redis 实例(主,从)运行状态的监控,并能够在主节点发生故障时通过一系列的机制选举一个从节点作为新的主节点,以及主从切换,实现故障转移,确保整个 Redis 系统的可用性。
3. 集群模式:集群模式 Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务器上,以此来降低系统对单主节点的依赖,并可以大大提高 Redis 服务的读写性能。
2.主从、哨兵、集群模式有什么区别
2.1 主从同步
主从同步是多机部署中最简单的方案,也是存在问题最多的一个方案。它的致命缺点就是当主节点挂了之后,它需要人工进行干预,人工进行修复。(如果半夜三点主节点挂了,那就得半夜打电话喊人去修复,例如主服务器 A,从服务器 B,C,如果 A 挂了,需要将 B 设为主服务器,同时让 C 去 B 服务器同步数据)
2.2 哨兵模式
哨兵模式就解决了主从同步的人为干预问题,它可以监控 Redis 实例运行状态,当主服务器挂了,它可以自动实现选择新的主节点以及主从切换,实现故障的自动转移和恢复(自动容灾恢复),确保整个 Redis 系统的可用性。
哨兵是如何工作的 ?如何选择新的主节点 ?
1.主节点失效检测:哨兵会周期性地向 Redis 实例发送命令(心跳包)来检测主节点的存活状态,如果主节点在指定时间内没有回复心检测(例如主节点已下线),哨兵将会认为当前主节点失效了。
2.选举新主节点:一旦哨兵检测到主节点失效后,它会进入新主节点的选举过程。哨兵集群中的哨兵会互相通信,通过多数投票方式决定新的主节点(需要多数哨兵投票才能进行选举)。
选举过程中,如果出现票数相同的两个节点(优先级相同),则选择复制偏移量(从节点复制主节点的进度)较大的从节点作为新主节点,这样可以确保新主节点尽可能包含更多的数据。
2.3 集群模式
无论是主从还是哨兵,它都只有一个主节点,所以它的性能扩展是有限的, 而集群模式可以实现多主节点的平行扩展,从而增加系统的一个吞吐量。并且集群模式也具备自动容灾,自动选主,主从切换的功能,所以集群模式才是 Redis 多机部署的最终形态。
Redis 集群是如何存储数据的 ?
Redis 集群将数据分为固定数量的槽(slot),默认是 16384 个槽,每个主节点负责管理一部分槽,并负责处理与这些槽相关的键值对。
存储示例 >>
数据具体分配到哪个槽位,需要使用 CRC16 算法对要存储的 key 进行 hash 得到一个整数值,然后用这个整数值对 16384 进行取模来得到具体的槽位。 公式:slot = CRC16(key) % 16383