# 发布模型 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 发生变化,才允许再次尝试。