平台总览
KernLab.Traffic 是什么
全协议统一流量平台:一个进程、一个(或一组)数据端口上承载多协议客户端流量, 所有请求按统一编排的指令流处理,一切配置原生多租户。
三个支柱:
| 支柱 | 一句话 | 关键词 |
|---|---|---|
| 单端口多协议复用 | HTTP/1.1·2·3、gRPC、WebSocket、TLS-SNI、TCP/UDP 裸流、SOCKS5/CONNECT 复用同一数据口,按连接探测自动分派 | 监听面 · 协议分派 |
| 指令流编排 | 请求处理=执行一条编排的指令流(三段·双相·并行组),内置步骤与插件步骤平等入链 | 编排链 · 步骤 · 槽位 |
| 原生多租户 | 租户是一等公民:配置面按租户隔离,数据面请求经租户解析归租户;密钥、配额、审计随租户走 | 命名空间 · 世代 |
全局图(生产集群形态)
节点 = 一台机器(或一个 Pod):guardian + worker 两进程
┌─ 节点 node-i ─────────────────────────────────────────────┐
│ traffic-guardian(守护进程):worker 保活/版本仓/滚动听令 │
│ ┆ guardian 控制口(默认仅本机) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ worker(raft 成员身份在这里) │ │
│ │ N 数据口 → 客户端流量:监听→路由→编排链→上游 │ │
│ │ 1 管理口 → /api/v1 全族+/ui/*+healthz │ │
│ │ 1 Tier 口 → raft 复制/心跳/快照(恒不与业务口复用) │ │
│ └──────────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────────┘
集群:CP 组=Voter×3/5(配置权威·发布编排) DP 池=Learner×N(跑全部客户端流量)
Standalone=单机一体(无 raft,本地卷)
与传统网关的两个本质区别
配置是编译产物。管理员提交的是声明式实体(route/cluster/orch…),节点内的编译器把 draft 编译成不可变的运行时模型;编译不过=发布拒绝,旧配置继续服务。发布的产物是 确定性的(同配置+同编译器版本 ⇒ 逐字节等价),可再生、可回滚、可在集群间按指针分发。
底层是 raft,不是控制面数据库。配置数据与系统信令的复制走 KernLab.Tier 的 raft——KV 存指针与元数据、 Blob 存数据体,raft 复制指针、按需物料化。这意味着没有外部的 Redis/Etcd/配置中心依赖, 集群本身就是配置的真源。