Redis的复制拓扑结构可以支持单层或多层复制关系,根据拓扑复杂性
可以分为以下三种:一主一从、一主多从、树状主从结构,下面分别介绍。
1.一主一从结构
一主一从结构是最简单的复制拓扑结构,用于主节点出现宕机时从节点
提供故障转移支持(如图6-4所示)。当应用写命令并发量较高且需要持久
化时,可以只在从节点上开启AOF,这样既保证数据安全性同时也避免了持
久化对主节点的性能干扰。但需要注意的是,当主节点关闭持久化功能时,
如果主节点脱机要避免自动重启操作。因为主节点之前没有开启持久化功能
自动重启后数据集为空,这时从节点如果继续复制主节点会导致从节点数据
也被清空的情况,丧失了持久化的意义。安全的做法是在从节点上执行
slaveof no one断开与主节点的复制关系,再重启主
节点从而避免这一问题。
2.一主多从结构
一主多从结构(又称为星形拓扑结构)使得应用端可以利用多个从节点
实现读写分离(见图6-5)。对于读占比较大的场景,可以把读命令发送到
从节点来分担主节点压力。同时在日常开发中如果需要执行一些比较耗时的
读命令,如:keys、sort等,可以在其中一台从节点上执行,防止慢查询对
主节点造成阻塞从而影响线上服务的稳定性。对于写并发量较高的场景,多
个从节点会导致主节点写命令的多次发送从
3.树状主从结构
树状主从结构(又称为树状拓扑结构)使得从节点不但可以复制主节点
数据,同时可以作为其他从节点的主节点继续向下层复制。通过引入复制中
间层,可以有效降低主节点负载和需要传送给从节点的数据量。如图6-6所
示,数据写入节点A后会同步到B和C节点,B节点再把数据同步到D和E节
点,数据实现了一层一层的向下复制。当主节点需要挂载多个从节点时为了
避免对主节点的性能干扰,可以采用树状主从结构降低主节点压力。