滚动部署期间长运行任务的幂等输出键 笔记

滚动部署期间长运行任务的幂等输出键

一个需要 90 到 180 秒才能生成单个输出文件的定时任务,在正常运行时看似无害,直到你部署新构建版本时它仍在执行。部署控制器会终止旧任务并启动替代任务。在持续两到三分钟的窗口期内,两个副本均处于存活状态,它们读取相同的输入快照,并意图写入相同的逻辑输出。若无幂等的输出键机制,两者将重复写入,而第二次写入并无义务与第一次保持一致。任何在此窗口期内读取的消费者都可能获取由两次不同运行拼接而成的状态。这并非理论上的竞态条件。在任何长运行任务向共享存储发布、且编排器采用滚动部署的系统(即绝大多数生产批处理流水线)中都会出现此类问题。故障表现隐蔽:没有任何进程崩溃,日志显示两个任务均成功完成。数据损坏完全存在于输出中,并随后表现为下游基于从未作为一致快照存在的数据所做出的决策。