崩溃恢复
生产环境难免遇到进程崩溃、OOM、机器重启。链盒的崩溃恢复机制确保这些情况下 流程不会丢失,能自动恢复执行。
恢复流程
- 进程异常退出(崩溃/OOM/手动 kill)
- 容器编排(Docker/K8s)自动重启进程
- 引擎启动时扫描数据库中状态为「运行中」但实际无进程在跑的流程
- 对每个中断的流程,从最后成功的步骤恢复执行
整个过程自动完成,无需人工干预。恢复时间取决于中断流程的数量, 通常在进程启动后几十秒内完成。
保证不重复执行
恢复时,引擎依据持久化的步骤记录判断从哪里继续:
- 已成功完成的步骤:跳过,不重跑
- 正在执行但未确认完成的步骤:重新执行该步骤(幂等设计可避免副作用)
- 未开始的步骤:正常执行
因此,设计流程时建议让动作幂等(重复执行结果一致), 如用唯一 ID 去重、用 upsert 代替 insert,进一步提升恢复安全性。
数据库是恢复的基础
所有恢复依据都存在 PostgreSQL。因此:
- 数据库必须持久化(不要用临时存储)
- 定期备份,详见 Docker Compose 部署的备份章节
- 数据库损坏会丢失未恢复的运行记录(已完成的流程结果不受影响)
资源预留
为避免因资源不足导致频繁崩溃,生产环境应:
- 给容器设置合理的资源 limit(CPU/内存),避免单流程拖垮整机
- PostgreSQL/Redis 预留独立资源,不被应用挤占
- 监控内存使用,及时扩容或增加 Worker 实例
详见 生产环境配置的资源规划建议。