Ticketing
文档

L · 领导者通知 (Leader Notice)

结构refresh

这不是对请求的响应,而是服务器主动发出的通知(仅集群模式)。当节点检测到 Raft leader 发生变更时,会向连接到它的每一个客户端各发送一次新 leader 的客户端地址。

M 的区别

M · 已转移L · 领导者通知
性质对请求的响应服务器主动发出的通知(与请求无关)
含义"这个请求在这里处理不了""leader 变了"(信息性)
连接关闭并重连到新 leader保持 —— 只更新提示
该节点确定不是 leader它本身可能就是新 leader

收到 L 时不要关闭连接。发出通知的节点往往正是那个新 leader,而且该连接上可能还有 待处理的请求。

为什么需要它

如果没有这个通知,客户端只能先发一个请求、被 M 弹回才知道 leader 变了。L 省掉了 这一次往返,让故障转移之后的第一个请求就直接发往新 leader。

不认识这个 op 的旧版客户端可以安全地忽略它 —— 只是性能回到通知出现之前的水平 (请求 → M → 重试)。

字节表示法: op 是 ASCII 字符,addr 是 UTF-8 文本(变长,在结构中以 N 表示)。 末尾的 \n0A

流程

客户端
已连接的节点
新 leader
选举导致 leader 变更
L · 领导者通知 (新 leader 地址)
仅更新 leader 提示 —— 连接保持不变
下一个请求直接发往新 leader
A · 已获取 (token)
请求响应

单机服务器模式没有 leader 的概念,因此不会发送该通知。集群的整体行为见 协议 (集群)