redis集群类型
- 单节点
- 主从模式
- sentinel模式 基于主从复制
- cluster哨兵模式:监控每一台机器,如果有宕机则选择一台
一些名词区分:
- 分布式:多台机器共同完成一个或多个服务 集群:一个任务放到多台机器 上完成
- 集群:有可能不需要均衡(mysql) ,可能只需要主从同步:主机的数据被分到从服务器
- 负载均衡:作为网络协议做的一层转发 从而实现均衡
主从模式
什么是主从模式?
一个 Master 可以有多个 Slaves,也就是一个主机和多个从机。
在默认配置下,master 节点可以进行读和写,slave 节点只能进行读操作,写操作是被禁止的。
为什么slave不能够进行写操作?
- 写入的数据不会被同步到其他节点
- 当 master 节点修改同一条数据后,slave 节点的数据会被覆盖掉。
master节点 或 slave节点宕机会出现什么情况?
-
slave 节点宕机不影响其他 slave 节点的读和 master 节点的读和写,重新启动后会将数 据从 master 节点同步过来。
-
master 节点宕机不影响 slave 节点的读,redis 将不再提供写服务,直到 master 节点启动后 redis 将重新对外提供写服务。
注意:master 节点宕机以后,不会 slave 节点重新选一个 master
如果 master 节点设置密码时
-
客户端访问 master 需要密码
-
启动 slave 需要密码
-
客户端访问 slave 不需要密码
为什么使用主从模式?
- 备份数据
当一个节点损坏(指不可恢复的硬件损坏)时方便恢复。
- 负载均衡
所有客户端都访问一个节点会影响 redis的工作效率,使用主从模式后redis查询操作查询从节点来完成。
对主从模式的改进
主从模式的缺点:
master 节点宕机后,redis 就不能对外提供写服务 slave 不能够成为 master ,只能等待 master 节点重新启动。
对生产环境来说,写服务是一刻都不能停止服务的。因此有sentinel模式
Sentinel模式
Sentinel模式是 基于主从模式。
Sentinel 的功能
Sentinel 的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移、主从切换。
Sentinel 系统可以用来管理多个redis服务器,该系统可以执行以下四个任务:
- 监控
Sentinel 会不断的检查主服务器和从服务器是否正常运行。
- 通知
当被监控的某个 redis 服务器出现问题,Sentinel 通过 API脚本向管理员或者其他的应用程序发送通知。
- 自动故障转移
当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将与失效主节点,是主从关系的其中一个从节点升级为新的主节点,并且将其他的从节点指向新的主节点。
- 配置提供者
在 Sentinel 模式下,客户端应用在初始化时连接的是 Sentinel 节点集合,从中获取主节点的信息。
Sentinel 如何工作?
Sentinel 系统监控 master 和 slaves 节点服务器。如果被监视的 master 服务器宕机进入下线状态时,自动将该 master 下的某个slave 服务器升级为新的 master,由新的 master 继续不停的处理请求。**当原来的 master 上线后将会变成新的 slave 节点。
Sentinel 模式的缺点?
当数据量过大到一台服务器存放不下的情况时,需要对存储的数据进行分片,将数据存储到多个 Redis 实例中,这时 Sentinel 模式就不能够满足情况,需要用到集群模式了。
cluster 模式
cluster 是什么?
redis cluster 是 Redis 的分布式解决方案,有效地解决了 redis 分布式 方面的需求。
为什么选择 cluster ?
cluster 的出现是为了解决单机 Redis 容量有限的问题,将 Redis 的数据根据一定的规则分配到多台机器。也就是将需要保存的数据进行切割,分别保存到其他机器上。
cluster 可以说是 sentinel 和主从模式的结合体,通过 cluster 可以实现主从和 master 重选功能。
什么时候选择 cluster?
Redis 的数据是根据一定规则分配到 cluster 的不同机器的,当数据量过大时,可以新增机器进行扩容。因此在数据量巨大的缓存要求下使用cluster 模式,数据量不是很大时使用 sentinel 即可。
更详细的介绍