写在前面
Envoy 是 Istio 服务网格的数据面组件,服务网格提供的多种强大的治理能力,在底层均是由 Envoy 做数据面增强实现的。Envoy 是专为大型现代 SOA(面向服务架构)架构设计的 L7 代理和通信总线,体积小,性能高。它的诞生源于以下理念:对应用程序而言,网络应该是透明的。当网络和应用程序出现故障时,应该能够很容易确定问题的根源。

启动初始化
本文代码是以 Envoy master 分支 f09ed3646b88fae777a060be37f3224dfa67f428 commit 为基准做的源码分析。Envoy 启动入口是在 source/exe/main.cc,

可以看到由 main 进到主程序后,将执行 Envoy::MainCommon::main 方法

main 方法中执行的是上面 run 方法,从代码注释可以看出设计的意图是,服务 listener 启动在 try/catch 之外,以便可以在早期诊断中可以生成 core-dump。

代码依然很简洁,主要执行的是 server_ -> run() 方法,而 server_ 本身是在 MainCo

本文深入剖析Envoy作为Istio服务网格数据面组件的工作原理,介绍其启动流程、线程模型及线程间通信机制。Envoy是一款高性能L7代理,专为现代SOA设计。
最低0.47元/天 解锁文章
1070

被折叠的 条评论
为什么被折叠?



