知方号

知方号

Redis的集群模式:主从 & 哨兵 & 分片集群

基于Redis集群解决单机Redis存在的问题,在之前学Redis一直都是单节点部署宕机:该节点实例与其它实例失去连接 Redis有哪些部署方案? 

单机版:单机部署,单机Redis能够承载的QPS大概就在上万到几万不等,这种部署方式很少使用,存在的问题:

内存容量有限处理能力有限无法高可用 单机或单节点Redis存在的四大问题:

数据丢失问题:Redis是内存存储,服务重启可能会丢失数据  =>  利用Redis数据持久化的功能将数据写入磁盘并发能力问题:单节点Redis并发能力虽然不错,但也无法满足如618这样的高并发场景  =>  搭建一主多从集群,实现读写分离单点故障 - 故障恢复问题:如果Redis宕机,则服务不可用,需要一种自动的故障恢复手段  =>  利用Redis哨兵,实现健康检测和自动故障恢复存储能力问题:Redis基于内存存储,单节点能存储的数据量难以满足海量数据要求  =>  搭建分片集群,利用插槽机制实现动态扩容,从理论上来讲,它的存储能力是没有上限的 介绍一下Redis的集群模式? Redis有三种主要的集群模式,用于在分布式环境中实现高可用性和数据复制,这些集群模式分别是:主从复制(Master-Slave Replication)、哨兵模式(Sentinel)和Redis Cluster模式。 Redis集群的目的是什么? Redis集群可以将数据分割到不同的服务器节点上,当Redis集群中的部分节点宕机或不可用时,Redis其它节点仍然能够继续处理命令,不至于整个Redis集群不可用,用来保证可用性。 Redis集群如何选择数据库? Redis集群目前无法做数据库选择,默认在0号数据库。 Redis集群最少需要几个主节点? Redis集群正常工作,至少需要3个主节点。  1. Redis主从 搭建主从架构主从数据同步原理

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。

主从模式简介

一主多从

主从复制是Redis最简单的集群模式,这个模式主要是为了解决单点故障的问题,所以将数据复制到多个副本中,这样即使有一台服务器出现故障,其它服务器依然可以继续提供服务。主从复制模式中,包括一个主节点(Master)和一个或多个从节点(Slave),主节点负责处理所有写操作和读操作,而从节点则负责复制主节点的数据,并且只能处理读操作,当主节点发送故障时,可以将一个从节点升级为主节点,实现故障转移(需要手动实现)。

1.1.主从集群结构 Redis的集群往往都是主从集群,它往往会有一个Master主节点,多个Slave / Replica从节点。 

下图就是一个简单的Redis主从集群结构:

如图所示,集群中有一个Master主节点、两个Slave从节点(现在叫Replica) =>  起码要包含三个节点,要有三个Redis实例,一主两从。

在Redis 5.0以前,从节点是叫Slave的,后来改名叫Replica  =>  都是代表从节点 

当我们通过Redis的Java客户端访问主从集群时,应该做好路由:

如果是写操作,应该访问Master主节点,Master主节点会自动将数据同步给两个Slave从节点

如果是读操作,建议访问各个Slave从节点,从而分担并发压力

Master主节点可以执行set命令(写操作),Replica从节点只能执行get命令(读操作) 。

为什么Redis要做成这种主从的集群,而不是传统的负载均衡集群呢? 这是因为Redis应用当中大多数都是读多写少的场景,也就是查询比较多,而增删改比较少,既然如此,我们

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。