envoy源代码分析(三)--主框架概览
线程模型

控制worker与CPU绑定的参数
--concurrency <int>
每一个worker有一个对应的grpcGoogleClient线程,用于线程间通信的IPC线程。本系列的后篇会详细介绍。

动态变更之后,进程线程不变

初始化
官网的初始化过程介绍:https://www.envoyproxy.io/docs/envoy/v1.34.0/intro/arch_overview/operations/init#arch-overview-initialization
该文档是站在业务的角度,讲述业务相关功能的初始化先后顺序,而不是软件模块的初始化过程。
下面的代码注释,很好的描述了程序启动的顺序和几个阶段:

该初始化顺序体现了以下软件设计原则:
- 分层初始化:从静态到动态,从基础设施到应用服务
- 可靠优先:确保核心服务可用后再加载扩展功能
- 可观测性前置:运行时配置的提前加载为后续流程提供调试能力
- 依赖倒置:通过强制约束避免服务间的隐式循环依赖
类图

主框架流程图

1 一个master线程,N个worker线程,N+1个watchdog线程,若干GRPC线程。
2 master与worker的任务都靠dispacher做事件驱动。
3 事件驱动的4个方式
a dispacher->post
b scheduler Callback
c timer
d File Event
异步示例

浙公网安备 33010602011771号