caddyserver 架构简单说明

内容来自官方文档,通过了解可以更好的学习以及使用caddyserver

概述

caddy 包含了command,core library,以及modules,command 主要是关于cli 命令的
core library 主要进行配置管理,可以Run() 以及Stop() 相关配置,同时也提供了一些工具,类型,以及一些值,方便模块使用
modules 这个是caddy 比较核心的,包含了内置的以及一些社区开发的

caddy core

包含了加载以及初始化配置,如果没有提供了会包含一个admin api,方便通过api 模式加载,核心是配置,官方提供了json 以及Caddyfile 模式的,我们也可以配置其他的
(比如nginx,yaml,hcl),app 部分包含了Start() 以及Stop() 方法

模块生命周期

caddy 包含了host 模块以及guest 模块两大类,模块的生命周期
加载、提供&校验、使用、清理

  • load 阶段 
    主要是反序列化json 字节为类型,主要是json 类型的处理
  • 提供阶段 
    比如配置guest 模块,配置内部值,进行配置校验
  • 使用阶段 
    当guest 模块准备好了之后,就可以被host 模块使用了,每个模块都包含了一个模块id(包含namespace)
  • 清理阶段 
    比如配置被停用了,所有模块被卸载了,就会须在此处处理

插件

主要是caddy 的扩展,通过提供的模块注册入口进行加载

配置管理

提供acid 的配置处理,同时进行热更新,同时caddy 也提供了amdin api 灵活的进行配置管理

说明

在大概了解caddy 之后在学习源码就比较方便了

参考资料

https://caddyserver.com/docs/architecture
https://caddyserver.com/docs/command-line
https://caddyserver.com/docs/json/
https://caddyserver.com/docs/extending-caddy
https://pkg.go.dev/github.com/caddyserver/caddy/v2#RegisterModule

posted on 2023-01-25 15:17  荣锋亮  阅读(260)  评论(0编辑  收藏  举报

导航