1.缘起
最近一直在学习golang,一直觉得自己写的server性能与并发达不到预期,所以想分析一款开源的服务器软件,来提高自己对golang的net/http包的理解。
2.caddy的特点
- 多协议支持
- 模块化
- 自带https支持
3.阅读计划
- 从入口出发,分析整体架构
- 分析配置文件解析一层
- 分析http请求接受一层
- 分析其中各种模块
4.入口分析
入口文件:github.com/mholt/caddy/caddy/caddymain.Run
- init中的初始化
1.1 caddy.TrapSignals设置信号量
1.2 setVersion 设置版本信息
1.3 flag包解析信息配置
1.4 caddy.RegisterCaddyfileLoader 注册文件解释器?
1.5 caddy.SetDefaultCaddyfileLoader 设置默认配置文件解释器 - caddymain.Run 进入主流程,解析flag
- logfile 设置日志格式
- one time action
4.1 caddytls.Revoke 撤销域名对应的https证书
4.2 version 查看版本号
4.3 plugins 插件列表,插件加载依赖caddyhttp包引入所有plugin,通过每个子包的init初始化
5.setCPU 设置cpu占用,支持百分比和数字两种格式
6.执行初始化事件
网友评论