Envoy源码分析之一--Server初始化(上)

举报
懒得想名字的麻辣香锅 发表于 2020/02/27 10:07:50 2020/02/27
【摘要】 *代码版本:stable/v1.7.1* 这里结合资料及源码仅分析正常场景的主干流程。本系列博文分为四部分,Server初始化,Envoy启动与新连接建立,Envoy对数据的读取、接收和处理,Envoy数据转发到服务端。 Server的初始化,初始化主要分为两部分,一是Envoy进程起来后的入口函数、二是Server的初始化。本章介绍第一部分

*代码版本:stable/v1.7.1*

这里结合资料及源码仅分析正常场景的主干流程。本系列博文分为四部分,Server初始化,Envoy启动与新连接建立,Envoy对数据的读取、接收和处理,Envoy数据转发到服务端。

Server的初始化,初始化主要分为两部分,一是Envoy进程起来后的入口函数、二是Server的初始化。本章介绍第一部分。

##### 1. 入口

入口在source/exe/main.cc中

image.png


声明并初始化Envoy::MainCommon实例为main_common,执行main_common->run启动Server。


##### 2.  Envoy::MainCommon 

main_common.h中Envoy::MainCommon class如下:

image.png

MainCommonBase的实例对象执行run函数。


##### 3. Envoy::MainCommonBase

头文件中类定义如下:

image.png


class MainCommonBase函数实现方放在main_common.cc中如下:

Envoy::MainCommonBase constructor:

image.png


在上述构造函数体中,初始化server

image.png

##### 4. Server::InstanceImpl

Server.h定义InstanceImpl类:

image.png

server.cc中实现其构造函数

image.png

其中Server初始化在initialize(options, local_address, component_factory);中进行。

配置文件从InstanceUtil::loadBootstrapConfig中获取,放到&options中去。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。