redis 集群模式

redis集群模式有3种:

  1. 主从模式
  2. 哨兵模式
  3. Cluster模式

下面就分别介绍一下这3中模式:

1.主从模式

一台做主库,多台做从库。从库的数据是从主库的一次内存快照复制过来的。当主库宕机的时候,可以用从库顶上。优点:

  1. 可以一主一从,也可以一主多从。相比于单点模式高可用,不会服务器宕机了,服务就瘫痪了。
  2. 可以设置读的操作在从库上进行,写发送到主库上进行,分担了主库的压力,也就是读写分离。

缺点:

  1. 不具备自动恢复功能,一旦主库宕机,需要手工运维。
  2. 不具备数据容错能力,主库或从库宕机,会造成连接请求得不到数据,服务不可用。
  3. 数据不一致性。数据从主库到从库有一定的时间延迟,另外主机还没有将数据复制到从库时,主机宕机了,会造成数据丢失。
  4. 主库复制数据到从库,每次都是全量复制,需要预留足够的内存空间。另外同步数据的过程,如果数据量很大,对系统的压力也会很大。

2.哨兵模式

主动模式的一个明显缺点是无法自动故障转移,需要手动维护。哨兵模式在这一点上弥补了主从模式的缺点,每个从库上启动一个哨兵进程,这些哨兵进程不断监控主库、其他从库的运行状况。当判断某个从库下线后,自动移除该从库。当判断主库下线后,其他从库哨兵进程也判断出主库下线,有足够多数量的从库哨兵进程判断主库下线,则自动移除主库,从从库中选举出新的主库。
架构图:


哨兵模式.png

优点:因为哨兵模式是主从模式的一个优化,所以主从模式有的优点,哨兵模式都有。除此之外,多了自动故障转移。
缺点:还是只有一个主库,数据集中在一台服务器上,无法支持水平扩容。

3.Cluster模式

redis Cluster就是将数据均匀的分配到多个节点的一种模式。多个主节点,每个主节点下有从节点。数据通过一致性hash算法或其他方法分布到不同主节点上。实现了自动故障转移,谨慎使用读写分离,因为一旦从库不可用,则服务不可用。
优点:

  1. 数据分区,不只是一个主节点,服务器压力减少
  2. 主节点自动故障转移
  3. 支持动态扩容

缺点:
由于数据分布在不同节点上,所以一些功能受到影响:

  1. 批量操作命令,比如mget,mset,keys等,只有在一个库中,才能使用。如何保证keys在一个库,一个是记录key与槽的关系。另一个是通过Hash Tag。
  2. 单节点下可以有16个库,但集群下只能有一个库。

总结:

redis的主从模式和哨兵模式不支持水平扩容,而且主节点存储的数量有限,如果数据持续大量增长,不建议生产环境使用。redis Cluster模式数据分布在不同节点上,支持动态扩容,是一种比较好的分布式集群方案。

你可能感兴趣的:(redis 集群模式)