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表示)。 末尾的\n为0A。
流程
客户端
已连接的节点
新 leader
选举导致 leader 变更
L · 领导者通知 (新 leader 地址)
仅更新 leader 提示 —— 连接保持不变
下一个请求直接发往新 leader
A · 已获取 (token)
请求响应
单机服务器模式没有 leader 的概念,因此不会发送该通知。集群的整体行为见 协议 (集群)。