调度系统经常从“选一个更好的算法”开始讨论,但落到真实现场后,更先决定系统稳定性的往往是任务状态是否足够明确。
状态必须能够解释现场
一个任务处于“执行中”并不够。系统还需要知道机器人是否已经接单、是否正在前往起点、是否等待资源,以及失败后由谁负责恢复。
我更倾向于把状态设计成可审计的事件流:每次变化都记录原因、触发方和时间。这样出现问题时,不必根据几张数据库快照猜测系统曾经发生过什么。
把异常路径当成主流程
真实环境中的暂停、取消、网络闪断和人工接管都不是边缘情况。越早把这些路径画清楚,后续的调度策略越容易保持简单。
这篇文章先记录问题框架,后续会结合具体项目继续补充。