《多机数据库的实现》

分布式开始啦!


复制

通过执行SLAVEOF命令可以让一个服务器去复制另一个服务器,进行复制的主从服务器将保存相同的数据

通过同步命名传播两个操作实现复制。首先,从服务器发送SYNC命令,主服务器接受后将会执行BGSAVE,生成RDB文件,并返回。在生成RDB期间,主服务器将执行的写命令写入缓冲区,并发送给从服务器

当完成上述同步命令后,主从数据库的一致性只是暂时的。主服务器需要通过命令传播实时将写命令发送给从服务器

上面试旧版的复制策略,这种方式的缺点在于从服务器每次执行SYNC命令时,都会得到一个RDB文件,这对于主从服务器都是一种浪费,因为主从服务器可能只是相差几个写命令,例如从服务器突然掉线几秒钟,为了同步这几秒期间的数据,要同步整个RDB,显然不值得

新版的复制功能使用PSYNC命令, 该命令具有完整重同步部分重同步(Partial),就是为了解决上面断线后同步时的低效情况

部分重同步

Sentinel

Sentinel是Redis高可用的解决方案

由一个或多个Sentinel instance组成的Sentinel System可以监视任意多个主从服务器,当被监视的主服务器进入下线状态时,Sentinel System会自动将下线的主服务器下属的某个从服务器升级为主服务器,代替原来的主服务器继续执行命令

集群

集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能