redis集群面试题

1、介绍下redis集群
redis集群分为3中模式。主从复制,sentinel模式,cluster模式。主从复制没有解决主服务器宕机的问题及主服务器压力过大的问题,sentinel模式没有解决主服务器压力过大的问题,cluster不存在这两种问题。
2、主从复制是如何实现数据一致性的?
通过复制功能实现一致性。复制分为同步和命令传播。
同步:
1、从服务器发送同步命令
2、主服务器在后台生成rdb文件,并用缓冲区记录当前所有执行的命令
3、rdb文件生成成功,发送rdb文件给从服务器。
4、主服务器发送缓冲区保存的写命令。
命令传播:
主服务器会将自己执行的写命令发送到从服务器
3、断线复制和初次复制有什么不一样
初次复制采用完整重同步,断线复制采用部分重同步。
完整重同步即2问。
部分重同步功能由3个部分构成:
复制积压缓冲区、主从服务器的复制偏移量,服务器运行ID
执行复制的两台服务器会分别维护一个复制偏移量,主服务器每次传播N个字节,主服务器偏移量加N,从服务器收到N个字节数据,偏移量加N。通过偏移量可以判断服务器数据是否一致。
复制积压缓冲区长度固定先进先出队列,默认大小1MB。
iD记录上一次复制的主服务器的运行ID。
断线复制在断线时间过久不合适。
4、讲一下复制的过程
1、设置主服务器地址与端口
2、建立套接字连接
3、发送ping命令
4、身份验证
5、发送自己的监听端口信息
6、同步
7、命令传播
5、心跳检测
在命令传播阶段,从服务器默认每秒一次向主服务器发送命令:replconf ack < replication_offset >
replication_offset:复制偏移量。
当主服务器检测到复制偏移量与少于自己的偏移量时,就会在复制积压缓冲区里找到从服务器缺少的数据。
6、有一个或多个哨兵组成的sentinel系统可以监视任意多个主服务器及其从属服务器,监视主服务器进入下线状态并升级从服务器
sentinel本质是一个运行在特殊模式下的redis服务器
7、sentinel是如何实现故障转移的?
sentinel 从主服务器的下属服务器选择一个从服务器作为新的主服务器。
向其他的所有从服务器发送新的复制指令
监视已下线的主服务器,重新上线时变为从属服务器
8、sentinel与服务器的通信
创建两个异步连接:
命令连接,向服务器发送命令,接收回复
订阅连接,订阅服务器的_sentinel_:hello频道。
sentinel会以每十秒一次的频率向服务器发送info命令,分析回复,获取服务器信息。
9、为什么是两个连接?
为了不丢失订阅频道的信息和向服务器发送命令
10、sentinel系统如何通信?
通过每2秒向向_sentinel_:hello频道(redis服务器)推送sentinel本身的信息。其他的sentinel会收到信息,然后更新对其他sentinel对发送消息的sentinel的认知。在添加新的sentinel时,通过频道信息添加一个新的sentinel进入系统。同时sentinel直接也会有命令连接,无订阅连接,订了主从服务器,更新哨兵信息。
11、怎么检测下线状态?
1、在默认情况下sentinel会以每秒一次的频率向所有与它创建了命令连接的实例发送ping命令,并通过返回结构判断是否下线。
2、如果主服务器下线,sentinel会向其他sentinel发送命令进行询问,当接收到足够数量的确认下线判断后。才会对主服务器进行故障转移。
故障转移
1、sentinel协商选举领头sentinel
2、在从服务器中选一个将其转换为主服务器
3、让其他从服务器改为复制新的主服务器
4、将已下线的主服务器设置为从服务器。当其上线后变成从服务器
集群怎么建立
集群通过分片来进行数据共享,并提供复制和故障转移功能
通过客服端向服务端发送cluster meet ip port命令建立集群。
槽指派
redis集群通过槽指派来保存键值对。集群的整个数据库分为16843个槽,每个键都属于一个槽,每个节点可以处理0个或者最多16483个槽。当16483个槽都有节点在处理时集群上线,否则集群下线。
集群节点只能使用0号数据库,而单机服务器没有限制
集群故障转移
集群节点分为主节点和从节点,主节点用于处理槽,从节点复制主节点,当主节点下线后,从节点代替下线主节点继续处理命令。
故障检测
定期向其他节点发送ping命令。(半数以上节点认为某个节点下线才会标记为下线,并广播关于主节点下线消息)
领头选举
1、发现主节点下线的从节点向所有具有选举权的节点发送投票信息,要求其向自己投票。
2、若主节点未投给其他节点(当前纪元)。则投给该从节点,纪元增加。
3、当一个配置纪元内超过半数选举该从节点,则从节点成为主节点。否则进入下一配置纪元继续选举。

发布了79 篇原创文章 · 获赞 0 · 访问量 2668

猜你喜欢

转载自blog.csdn.net/qq_41017546/article/details/105008882