Table of Contents

进程与角色

两类进程:worker 与 guardian

进程 职责 明确不做
worker 干活的工作进程——数据面+管理面全在这一个进程;raft 成员身份在这里 —
guardian 节点守护进程——worker 保活/系统服务安装/配置版本仓+LKG/校验调度/五态上报/滚动听令/迁移执行体 不管 raft、不碰流量、不解释配置内容

guardian 是「worker 自重启悖论」的解:worker 崩溃时由一个与配置版本无关的极简进程 拉起,按 LKG(最后已知良好配置)反复尝试;集群滚动升级由 CP 编排器逐台下指令到 guardian 控制口执行。每台节点上两个进程(K8s 形态 guardian 省略,探针直接指向管理口)。

三种装配角色:同一套代码的参数

装配角色 运行职责 raft 成员角色(缺省) 跑流量? 有管理口?
Standalone 全部(配置权威+流量) 无 raft(本地卷) ✅ ✅
Control(CP) 配置权威+发布编排+编译 Voter(计入多数派) 可选(生产标准=不跑) ✅
DataPlane(DP) 客户端流量 Learner(只读复制) ✅ 可配

两层概念:CP/DP 与 Voter/Learner

CP/DP 与 raft 角色是两层正交的概念:

  • Voter / Learner / Witness 是 raft 的复制拓扑概念——决定「谁投票、谁收日志」;
  • CP / DP 是本平台的运行职责概念——决定「谁写配置、谁跑流量」。

生产标准映射=CP↔Voter、DP↔Learner,但可以正交组合(例如扩容时 DP 先以 Learner 加入复制流,raft 原生快照安装追平)。纯控制形态=CP 以零数据口装配:投票节点 无任何客户端可达面,管理面/健康车道/发布编译照常。

能力 × 进程矩阵(什么在哪里运行)

能力 运行位置
请求代理(多协议监听/路由/编排执行/转发) worker 数据口
编译器(干跑+正式编译) worker 内(装载链内置)
发布编排(七阶段) CP worker(管理口触发)
管理 API / CLI 同面 每个 worker 管理口(0/1 个)
管理 UI worker 管理口 /ui/*(永不暴露于数据口)
raft 成员/复制 worker 内(Tier 内部口)——guardian 不管 raft
worker 保活/重启/服务安装 guardian
配置版本仓+LKG guardian(本地文件面)
集群滚动编排 CP 编排器 → 各节点 guardian 控制口

raft 复制的是什么

raft 是唯一复制通道,复制的是数据不是命令:

  • 配置域——九实体(listener/route/cluster/orch/plugin/credential…)的 draft/published 双态+编译产物指针;
  • 系统数据信令——deny 名单、发布 Watch 等即时生效面;
  • 观测序列——每路由指标等。

管理命令(CLI/REST)是对这些数据的事务性写入,经管理口进 raft 多数派落 CP。 不经 raft 的控制线只有两条:guardian→worker 的本机运行态指令(走 guardian 控制口)、 集群滚动序列(CP 编排器逐台下 guardian)——详见通道澄清。