单机redise风险与问题
问题1 机器故障
- 现象:硬件故障、系统崩溃
- 本质:数据丢失,很可能对业务造成灾难性打击
- 结论:基本上会放弃使用redis
问题2 容量瓶颈
- 现象:内存不足,从16G升级到64G,无线升级内存
- 本质:穷,硬件条件跟不上
- 结论:放弃使用redis
为了避免单点redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,链接在一起,并保证数据是否同步的,即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。
主从复制
概念
复制可以让其他服务器拥有一个不断地更新的数据副本,从而使得拥有数据副本的服务器可以用于处理客户端发送的读请求。关系数据库通常会使用一个主服务器( master ) 向多个从服务器( slave ) 发送更新,并使用从服务器来处理所有读请求。Redis 也采用了同样的方法来实现自己的复制特性,并将其用作扩展性能的一种手段。
主从复制即将master中的数据即时,有效的复制到slave中。
主服务器与从服务器的职责
主服务器master:
- 写数据
- 执行写操作时,将出现变化的数据自动同步到slave
- 读数据(可忽略)
从服务器slave:
- 读数据
- 写数据(禁止)
主从服务器方式的优点
- 读写分离:master写,slave读,提高服务器的读写负载能力。
- 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量。
- 故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复
数据冗余:实现数据热备份,时持久化之外的一种数据冗余方式。 - 高可用基石:基于主从复制,构建哨兵模式与集群,实现Redis的高可用方案。
主从复制的工作流程
大致分为三个阶段: