面试题答案
一键面试1. 节点迁移场景下ASK错误产生条件
- 槽位迁移过程中:当Redis集群进行槽位迁移时,源节点负责的部分槽位数据正在向目标节点转移。假设槽位
slotX
正在从节点A
迁移到节点B
。在迁移期间,客户端向节点A
发送针对slotX
数据的读写请求,而此时部分slotX
的数据已经被迁移到了节点B
。节点A
发现该槽位部分数据不在本地,但还未完全将槽位所有权移交给节点B
,这时节点A
会返回一个ASK错误给客户端,指示客户端去目标节点B
尝试获取数据。
2. 数据读写场景下ASK错误产生条件
- 重定向未成功:客户端首次接收到ASK错误后,会根据错误信息中的目标节点信息进行重定向。若在重定向过程中,由于网络波动、目标节点暂时不可达等原因,导致客户端无法成功连接到目标节点完成操作,再次向原节点发起相同操作请求时,原节点依然可能返回ASK错误。例如,客户端因网络故障未能在首次ASK错误后连接到目标节点,再次向原节点请求时,原节点仍认为数据可能在目标节点,会再次返回ASK错误。