土法炼钢兴趣小组的算法知识备份

Envoy / 数据面代理内核:从 Listener 到 xDS

文章导航

分类入口
networkproxy
标签入口
#envoy#xds#filter-chain#http-connection-manager#service-mesh#data-plane#listener#cluster

目录

站内 Envoy 架构剖析 已经给出线程模型、Filter Chain 与 xDS 名词地图;网关选型Service Mesh 把 Envoy 放进产品对比。中间仍缺一层:一次连接如何经 Listener → FilterChainMatch → Network/HTTP filter → Router → Upstream,以及控制面推送如何经 warming / ACK 变成 Worker 上可服务的快照。

本系列回答:可编程 L7(及 L4)数据面内核里,延迟与失败落在哪一层,动态配置又如何在不停流量下生效或失效。

写:

不写:Istio 控制面全书、Gateway API CRD 教程、未实测延迟排行、Wasm 编程全书、eBPF 数据面全书。

系列状态:01–16 已全部发布(2026-08-10)。 规划见 PLAN.md。无本机 Envoy 环境则不粘贴伪造 config_dump / stats 输出。

版本锚定:Envoy v1.39.0(docs + envoyproxy/envoy tag);配置 API v3

适合谁看

与 network/57 的分工

维度 network/57 本系列
定位 网络工程 单篇地图 16 篇机制路线图
深度 概念与配置直觉 官方协议路径、源码目录、失败模式、开放问题
对照 略述 mesh 角色 显式外链 60 / 76 / Cilium / Wasm;不重写选型全书

读法:只要「建立 Envoy 坐标系」→ 57 足够;要「一次请求卡在哪、xDS 为何未生效」→ 本系列 01 → 03 → 06 → 09 → 15。

一、这个领域最值得关注的 5 个问题

  1. 一次请求的延迟与失败点落在哪一层? → 第 1–6、15 篇。
  2. 配置如何在不停流量下到达 Worker? → 第 2、9–11 篇。
  3. FilterChainMatch / Listener filter 何时改写路径? → 第 3–4、8 篇。
  4. xDS「已下发」为何仍会黑洞或旧路由? → 第 9–11、15 篇。
  5. 何时必须用 Envoy,何时 Nginx/HAProxy/节点级 Envoy/eBPF 更合适? → 第 14、16 篇。

二、篇目依赖关系与推荐阅读路径

flowchart TD
  overview["01 Overview"] --> threads["02 Main Worker"]
  threads --> listener["03 Listener Match"]
  listener --> netfilter["04 Network Filter"]
  netfilter --> hcm["05 HCM Codec"]
  hcm --> httpfilter["06 HTTP Filter Router"]
  httpfilter --> cluster["07 Cluster LB"]
  cluster --> pool["08 Conn Pool Outlier"]
  overview --> xdsTree["09 xDS Tree"]
  xdsTree --> ads["10 ADS SotW Delta"]
  ads --> warming["11 Warming SDS"]
  warming --> hotrestart["12 Hot Restart"]
  httpfilter --> ext["13 Extensions"]
  pool --> obs["14 Observability DP"]
  hotrestart --> trouble["15 Troubleshoot"]
  ext --> select["16 Selection"]
  obs --> select
  trouble --> select
路径 篇目 适合
必读核心 1 → 2 → 3 → 6 → 9 → 15 快速建立坐标系
请求路径深挖 3 → 4 → 5 → 6 → 7 → 8 延迟与上游故障
xDS 与热更新 9 → 10 → 11 → 12 → 15 控制面联调
对照选型 1 → 13 → 14 → 16 网关 / Mesh 选型
完整通读 1 → … → 16 系统掌握

三、目录与每篇价值点

第一部分:线程与接入路径(01–06)

  1. 数据面全景
    • Envoy 生态位;相对 57/60/76 的缺口;五条坐标系与 16 篇路线。
  2. Main / Worker 与配置快照
    • 事件循环、TLS 快照、几乎无锁;Main 不处理数据面流量。
  3. Listener 与 FilterChainMatch
    • accept、listener filters、SNI/ALPN/original_dst 如何选链。
  4. Network filter 与 Connection
    • 字节流、水印、TCP Proxy 相对 HCM 的分叉。
  5. HCM 与 Codec
    • HTTP/1·2·3 编解码;流与连接生命周期。
  6. HTTP filter 链与 Router
    • 过滤器顺序、Router 终端、重试与超时落点。

第二部分:上游与动态配置(07–12)

  1. Cluster 与负载均衡
    • 优先级、subset、健康检查入口。
  2. 连接池、熔断与 outlier
    • 资源限额、outlier 驱逐如何卡死上游。
  3. xDS 资源树
    • LDS→RDS→CDS→EDS 依赖与命名。
  4. ADS / SotW / Incremental
    • 流、ACK/NACK、version 与 nonce。
  5. Warming、SDS 与热更新
    • 证书轮转、listener 热更新边界。
  6. Hot restart 与 drain
    • 共享内存、父子交接、连接排空。

第三部分:扩展、生产与收束(13–16)

  1. 扩展边界
    • Wasm / Lua / ext_authz / ratelimit 的机制位置。
  2. 可观测数据面
    • stats、access log、tracing 与请求路径耦合。
  3. 生产排障
    • 无上游、路由未生效、证书、热更新、连接泄漏。
  4. 选型收束
    • 相对 Nginx/HAProxy/节点 Envoy/eBPF;系列开放问题。

延伸阅读

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。


By .