1、专用型或称功能型服务器是专门为某一种或某几种功能专门设计的服务器。常见的光盘服务器,FTP服务器,E-mail服务器以及游戏服务器就是专用型服务器,不同用途的专用型服务器需要有不同的性能设计。
2、这些功能型的服务器的性能要求比较低,它只需要满足某些需要的功能应用即可,结构比较简单,采用单CPU结构即可;在稳定性、扩展性等方面要求不高,价格也便宜许多,相当于2台左右的高性能计算机价格。
3、服务模式不同:主从模式是一种客户端/服务器结构,客户端与服务器之间是主从关系,是一种一对多的模式。
4、稳定性不同:主从模式中信息的存储和管理比较集中、稳定,服务器只公布用户想公布的信息,并且会在服务器中稳定地保存一段时间,该服务器通常也不间断的运行.
Redis的主从同步分为: 完整重同步(full resynchronization)部分重同步(partial resynchronization)
有两种情况下是完整重同步:
slave连接上master第一次复制的时候;
如果当主从断线,重新连接复制的时候有可能是完整重同步
1.从服务器连接主服务器,发送SYNC命令
2.主服务器接收到SYNC命名后,开始执行bgsave命令生成RDB文件并使用缓冲区记录此后执行的所有写命令
3.主服务器basave执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令
4.从服务器收到快照文件后丢弃所有旧数据,载入收到的快照
5.主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令
6.从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令
用于处理断线后重复制的情况,先介绍几个用于部分重同步的部分
runid(replication ID),主服务器运行id,Redis实例在启动时,随机生成一个长度40的唯一字符串来标识当前节点
offset,复制偏移量。主服务器和从服务器各自维护一个复制偏移量,记录传输的字节数。当主节点向从节点发送N个字节数据时,主节点的offset增加N,从节点收到主节点传来的N个字节数据时,从节点的offset增加N
replication backlog buffer,复制积压缓冲区。是一个固定长度的FIFO队列,大小由配置参数repl-backlog-size指定,默认大小1MB。需要注意的是该缓冲区由master维护并且有且只有一个,所有slave共享此缓冲区,其作用在于备份最近主库发送给从库的数据
当slave连接到master,会执行PSYNC <runid><offset>发送记录旧的master的runid(replication ID)和偏移量offset,这样master能够只发送slave所缺的增量部分。但是如果master的复制积压缓存区没有足够的命令记录,或者slave传的runid(replication ID)不对,就会进行完整重同步,即slave会获得一个完整的数据集副本
当slave断开重连后,会发送psync 命令给master。
master首先会对服务器运行进行判断,如果与自己相同就进行判断偏移量
master会判断自己的偏移量与slave的偏移量是否一致。
如果不一致,master会去缓冲区中判断slave的偏移量之后的数据是否存在。
如果存在就会返回+continue回复,表示slave可以执行部分同步了。
master发送断线后的写命令给slave
slave执行写命令
PSYNC命令执行完整重同步和部分重同步的流程图
命令传播
当完成数据同步之后,主从服务器的数据暂时达到一致状态,当主服务器执行了客户端的写命令之后,主从的数据便不再一致。为了能够使主从服务器的数据保持一致性,主服务器会对从服务器执行命令传播操作,即 每执行一个写命令就会向从服务器发送同样的写命令
在命令传播阶段,从服务器会默认以每秒一次的频率向主服务器发送心跳检测REPLCONF ACK <replication_offset>其中replication_offset是当前从服务器的复制偏移量,该命令的作用有三个
检测主从服务器的网络连接状态
辅助实现min-slaves选项
检测命令丢失
https://baijiahao.baidu.com/s?id=1644916874411447363&wfr=spider&for=pc
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)