Files
OpenFlare/docs/design/release-model.md
T
2026-05-09 17:37:06 +08:00

38 lines
1.3 KiB
Markdown

# 发布模型
OpenFlare 的发布模型以完整配置版本为中心,而不是在线修改节点配置。
标准链路:
```text
修改规则 -> 预览/查看 diff -> 发布 -> 生成完整配置版本 -> 激活版本 -> Agent 拉取 -> 本地应用 -> 上报结果
```
## 发布规则
Server 发布时必须:
1. 读取全部启用的 `proxy_routes`。
2. 读取 Server 侧 OpenResty 主配置与结构化参数。
3. 渲染完整 OpenResty 配置。
4. 计算 `checksum`。
5. 写入 `config_versions`。
6. 切换激活版本。
7. 让 Agent 在后续 heartbeat 中发现并应用。
版本号格式固定为 `YYYYMMDD-NNN`。
## 不可变历史
历史版本不可变。回滚不是修改旧版本,而是重新激活旧版本。
全局同时只能有一个激活版本,当前不做按节点分组的差异化版本。
## Agent 应用策略
Agent 发现新版本后会备份旧文件,写入主配置、路由配置、证书与必要 Lua 资源,再执行配置校验和 reload。
如果新配置激活失败,Agent 必须尝试恢复运行;回滚成功时上报警告,回滚后仍无法恢复运行时上报失败。
某个目标 `version + checksum` 一旦应用失败并回退,Agent 会在本地状态中阻断该目标重复应用。只有远端激活版本或 checksum 发生变化,才允许再次尝试。