redis集群三种解决方案

redis 主从

redis sentinel

  • sentinel模式是建立在主从模式的基础上,解决了主从模式下master挂掉后,不会自动故障转移的缺点,当master节点挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master,当master节点重新启动后,它将不再是master而是做为slave接收新的master节点的同步数据。

  • sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群,当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中。

  • 一个sentinel或sentinel集群可以管理多个主从Redis。sentinel最好不要和Redis部署在同一台机器,不然Redis的服务器挂了以后,sentinel也挂了

  • sentinel监控的Redis集群都会定义一个master名字,这个名字代表Redis集群的master Redis。当使用sentinel模式的时候,客户端就不要直接连接Redis,而是连接sentinel的ip和port,由sentinel来提供具体的可提供服务的Redis实现,这样当master节点挂掉以后,sentinel就会感知并将新的master节点提供给使用者。

  • sentinel模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中。

redis cluster

  • redis cluster 是redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了redis分布式的需求,当一个redis节点挂了可以快速的切换到另一个节点。当遇到单机内存、并发等瓶颈时,可以采用分布式方案要解决问题。

  • redis cluster采用虚拟槽分区,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据

  • 如果一个集群里面有M1、M2、M3三个节点,其中节点 M1包含 0 到 5500号哈希槽,节点M2包含5501 到 11000 号哈希槽,节点M3包含11001 到 16384号哈希槽。如果M2宕掉了,就会导致5501 到 11000 号哈希槽不可用,从而使整个集群不可用。

  • 如果一个集群里面有M1-S1、M2-S2、M3-S3六个主从节点,其中节点 M1包含 0 到 5500号哈希槽,节点M2包含5501 到 11000 号哈希槽,节点M3包含11001 到 16384号哈希槽。如果是M2宕掉,集群便会选举S2为新节点继续服务,整个集群还会正常运行。当M2、S2都宕掉了,这时候集群就不可用了。

你可能感兴趣的:(数据库,redis)