caddy源码分析1-基础介绍

1.缘起

最近一直在学习golang,一直觉得自己写的server性能与并发达不到预期,所以想分析一款开源的服务器软件,来提高自己对golang的net/http包的理解。

2.caddy的特点

  • 多协议支持
  • 模块化
  • 自带https支持

3.阅读计划

  1. 从入口出发,分析整体架构
  2. 分析配置文件解析一层
  3. 分析http请求接受一层
  4. 分析其中各种模块

4.入口分析

入口文件:github.com/mholt/caddy/caddy/caddymain.Run

  1. init中的初始化
    1.1 caddy.TrapSignals设置信号量
    1.2 setVersion 设置版本信息
    1.3 flag包解析信息配置
    1.4 caddy.RegisterCaddyfileLoader 注册文件解释器?
    1.5 caddy.SetDefaultCaddyfileLoader 设置默认配置文件解释器
  2. caddymain.Run 进入主流程,解析flag
  3. logfile 设置日志格式
  4. one time action
    4.1 caddytls.Revoke 撤销域名对应的https证书
    4.2 version 查看版本号
    4.3 plugins 插件列表,插件加载依赖caddyhttp包引入所有plugin,通过每个子包的init初始化
    5.setCPU 设置cpu占用,支持百分比和数字两种格式
    6.执行初始化事件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,286评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,010评论 6 342
  • 【中吕】山坡羊·武强怀古 隧城无觅(1),长堤残迹(2)。滹沱屡毁多灾地。晋魏齐,宋辽疲,争来夺往难逃避。...
    益德居士阅读 847评论 5 15
  • 有个朋友问我:“为什么你会在工作那么忙的情况下,还要坚持写文章呢?毕竟,这并不一定会带给你什么实质性的收获。” 她...
    秋田田阅读 571评论 11 16
  • 美国侵者、傀儡伪军,在印度支那战场接连受到我军的沉重打击,尼克松政权为挽回在印度支那战场上的败局,不...
    湄公河畔秦兵阅读 339评论 0 0