回答
一、复制风暴
复制风暴指的是大量从节点对同一主节点或者同一台服务器的多个主节点短时间内发起全量复制的过程,这样会导致网络阻塞、主节点负载过高的问题。
一般我们可以采取如下几种方案来规避:
- 重新设计主从复制拓扑架构。比如采取层级拓扑结构,即从节点不仅仅直接从主节点复制,而是可以从其他从节点复制。
- 使用 Redis 集群
- 分散从节点同步时间
二、读写分离
对于读多写少的场景,我们一般都会采取读写分离的方式提高整体的并发量。对于 Redis 也是一样,由于从节点是主节点的副本,我们可以利用主节点提供写服务,一个或者多个从节点提供读服务,这样就最大化 Redis 的读负载能力。当然,这样并不是说主从架构下的读写分离没有问题,恰恰是有大问题,在这种情况下,业务需要面对如下几个问题:
- 数据延迟
在命令传送阶段,Redis 主从节点同步命令的过程是异步的,所以势必会导致主从节点的数据不一致性,如果我们的应用对数据的不一致性接受程度不是很高,则我们可以从以下几个方面优化:
优化主从节点的网络环境(比如主从节点部署在同机房)