Tutorial · 03

Feature 矩阵

Zenith 采用 Cargo feature 门控,默认仅启用最小核心。本页列出全部 feature 及其依赖,帮助你精准选型。

Feature 全览

Feature启用能力重依赖
api公共类型定义(CanonicalRequest/Response 等)
coreFramePool、账本、ct_compare、时间轮thiserror
netL2-L4 协议解析、TCP/UDP/QUIC 状态机、准入引擎、Workercore
linuxAF_XDP、UMEM、四环、io_uring、splicelibc
ebpfeBPF 加载、双 Bank 热更新libbpf-rs, libc
tlsTLS 1.3、证书代际、JA3/JA4 指纹rustls, ring
http1/2/3HTTP 协议解析器net
webWeb 框架(路由/中间件/静态文件/安全管道)serde, serde_json, rustc-hash, ring
proxy反向代理、6 负载均衡、熔断器、连接池rustls, quinn-proto, bytes
cacheHTTP 缓存层(16 分片、条件请求)
wafWeb 应用防火墙(6 检测器、50ms 预算)
fingerprint全链路指纹识别与阻断(L3-L7)独立运行
forwardL4 转发(TcpRelay、CIDR 白名单、协议转换)linux(启用 splice)
runtime全链路数据面运行时(Supervisor、ChangeSet、AutoOptimizer)net+linux+ebpf,升级 web 到 full
capability环境探测、能力安全、Profile 三级降级
observability指标、tracing、审计日志、故障快照
auditcargo-audit(netlink 链路)audit(仅 Linux)
testkit测试工具、Demo、压力测试full

组合特性

组合 Feature内容
httphttp1 + http2 + http3
full-stackapi + web + http + tls + proxy + cache + waf + forward + runtime + capability + observability
fullfull-stack + testkit
注意:runtime 特性依赖 net + linux + ebpf,并把 zenith-web 升级到 full(AF_XDP 桥接 / 运行时治理闭环)。audit 特性仅 Linux 可用。

按需导入

Zenith 默认仅启用最小核心(api + core),其余能力按需开启,避免拖入不必要的重依赖(如 libbpf-rsrustlsring)。

仅 Web 框架(不拖入数据面)

Cargo.toml
[dependencies] zenith = { path = "...", default-features = false, features = ["web"] }

仅 HTTP 协议解析(无 Linux 数据面)

Cargo.toml
[dependencies] zenith = { path = "...", default-features = false, features = ["http"] }

完整生产协议栈

Cargo.toml
[dependencies] zenith = { path = "...", features = ["full-stack"] }

直接引用子 crate

除使用 facade 外,也可直接引用单个子 crate,适合只需求某一独立能力的场景。子 crate 的 default 特性均为空,仅包含必需依赖。

Cargo.toml
[dependencies] # 只依赖 Web 框架 zenith-web = { path = ".../zenith/crates/zenith-web" } # 只依赖 L4 转发 zenith-forward = { path = ".../zenith/crates/zenith-forward" } # 只依赖指纹识别 zenith-fingerprint = { path = ".../zenith/crates/zenith-fingerprint" }
平台注意:zenith-net / zenith-forward 在 workspace 层 default-features = false,Linux 数据面由使用方按需开启,保证最小依赖路径真实可控。