本节摘要:第 12 章的收尾节,讲「怎么交付到生产」。两部分:一是部署形态(一键三件套、Docker、各组件独立部署的取舍),二是从早期版本(v2)迁到 v3 的数据迁移工具。读完本节你能把这套系统部署到生产,并在升级版本时安全迁移存量数据。
系统支持几种部署形态,按规模与需求选:
部署形态 ① 一键三件套(开发/小团队) start-all.sh 拉起所有服务 → 最简单,适合开发/试用/小团队 ② Docker(生产推荐) 各服务容器化,compose 编排 → 隔离性好、易扩展、生产推荐 ③ 组件独立部署(大规模) 核心服务/知识服务/控制台/代理层 各自部署 → 可独立扩展、独立运维,适合大规模
| 形态 | 适合 | 特点 |
|---|---|---|
| 一键三件套 | 开发/小团队 | 最简,全在一起 |
| Docker | 生产(中小规模) | 隔离好,易管理 |
| 独立部署 | 大规模 | 各组件独立扩展 |
关键概念:部署形态的选择核心是「规模与运维需求」。开发用一键起最快;生产推荐 Docker(隔离+易管理);超大流量时各组件独立部署(独立扩展,如知识服务构建重,可单独扩它的资源)。不必一开始就上最复杂的,按规模递进。
第 1 章详细讲过一键启动,这里从部署角度补充:
一键三件套的特点 优点: ├─ 一条命令起所有服务 ├─ 零配置(除了 .env 的两组凭证) └─ 适合快速试用/开发/小团队 局限: ├─ 所有服务在同一机器(不能独立扩展) ├─ 故障影响面大(一挂全挂) └─ 不适合大规模生产
一键三件套的定位是「开发与试用」——它让你最快跑起来,但生产环境(尤其流量大时)建议升级到 Docker 或独立部署。
Docker 是生产推荐的形态:
Docker 部署的优势 ├─ 隔离:每个服务独立容器,互不干扰 ├─ 一致性:开发/测试/生产环境一致(都是容器) ├─ 易扩展:某服务负载大,单独扩它的容器副本 ├─ 易运维:容器编排(docker compose/k8s)管理生命周期 └─ 故障隔离:一个容器挂不影响其他
| Docker 优势 | 体现 |
|---|---|
| 隔离 | 服务独立容器 |
| 一致性 | 环境随容器走 |
| 易扩展 | 单服务扩副本 |
| 易运维 | 编排管理 |
💡 技巧:Docker 部署时,建议各服务(核心/知识/控制台/代理)各自一个容器,用 docker compose 编排。这样某个服务(如知识服务构建重)可以单独扩资源,不影响其他。生产环境不要把所有服务塞一个容器——那会失去 Docker 的隔离与扩展优势。
从早期版本(v2 或更早)升级到 v3,数据面有重大变化(严格四元组),存量数据需要迁移:
为什么需要迁移 v2 数据:可能不带全四元组(宽松) v3 数据:严格要求四元组 若不迁移直接用 v3: ├─ 旧数据不带四元组 → v3 拒绝读取 ├─ 或旧数据的隔离不严格 → v3 下可能串扰 └─ → 必须迁移,给旧数据补全四元组、规范化
迁移工具做的事:
| 迁移动作 | 说明 |
|---|---|
| 补全四元组 | 给旧数据补 team_id/agent_id 等 |
| 规范化 | 旧格式转为 v3 格式 |
| 校验 | 迁移后数据完整性与隔离正确性 |
项目提供专门的 v2→v3 迁移工具,使用要点:
迁移流程(概念) ① 备份 v2 数据(安全起见,迁移前必备份) ② 停止 v2 服务 ③ 运行迁移工具(读 v2 数据,转 v3 格式,写 v3) ④ 校验迁移结果(数据量、抽查内容) ⑤ 启动 v3 服务,验证功能正常
| 步骤 | 要点 |
|---|---|
| 备份 | 迁移有风险,备份是兜底 |
| 停服务 | 迁移时数据不能变 |
| 运行工具 | 按工具文档参数执行 |
| 校验 | 确认数据没丢、格式对 |
| 验证 | 启动后功能正常 |
⚠️ 注意:迁移的两个高风险点:① 不备份就迁,迁错了无法回退;② 不校验就用,数据丢了不知道。生产数据迁移务必「备份 + 校验」双保险。另外,迁移最好在低峰期做(停服务会影响用户),且先在测试环境试迁一遍,验证流程没问题再动生产。
💡 技巧:如果你是全新部署(没有旧数据),可以跳过迁移——迁移只对「从早期版本升级」的用户必要。新用户直接装 v3 即可。判断自己是否需要迁移:用过 v1.x / v0.x 并有存量数据 → 需要;全新安装 → 不需要。
第 12 章到此完成,全书十二章的主体内容结束。下一节是附录 A——术语表、速查、排错,全书的检索入口。