弱网或临时断网的站点,集中发布要考虑什么
弱网站点集中发布的关键不是简单增加重试次数,而是先分清断网发生在哪个阶段:任务未领取、制品传输中、已经执行,还是执行完成但结果没有回传。只有状态、任务标识、重复执行影响和最终对账规则明确,重连后才不会把未知状态变成重复变更。
通信状态不能代替任务状态
“站点离线”只说明中心暂时联系不到 Agent,不能说明任务从未开始,也不能说明任务已经失败。至少要区分:待领取、正在传输、准备执行、执行中、完成待回传、成功、失败和状态未知。
每次执行还应有唯一任务标识。节点重新连接后,中心和 Agent 才能判断是在继续同一任务、补传结果,还是创建新的人工处置。
幂等不是盲目再执行一次
文件下载中断可以重新校验并传输,但服务停止、数据库变更和 License 替换可能已经完成一部分。能否重试取决于每个步骤再次执行后的结果,而不是脚本是否返回零。
模板应分别定义:执行前如何判断当前状态,步骤完成后留下什么标记,重复执行是否安全,不安全时由谁确认。制品还要有版本和完整性校验,避免把不完整文件当成可执行输入。
超时、重连和最终对账要分开
超时表示在约定时间内没有取得结果,它不自动等于失败。重连后应先查询本地任务记录和实际应用状态,再决定继续、重试或人工恢复。最终对账则要把中心目标清单与站点实际版本逐一比较,长期未知的站点必须进入人工清单。
Azure IoT Edge 的官方离线说明记录了离线存储、重连同步和门户状态可能滞后的边界。该资料只用于说明离线方案需要明确哪些行为,不能作为其他产品具备相同能力的依据。
上线前做四次故障测试
- Agent 领取任务前断网;
- 制品传输一半时断网;
- 执行步骤完成后、结果回传前断网;
- 重连时重复收到相同任务标识。
每次都核对中心记录、Agent 本地记录、应用实际版本和人工恢复动作。没有这些证据,就不应承诺自动重试、断点续传、幂等或离线收敛。
火星叔叔发布助手采用 Agent 主动轮询,因此断网时无法立即领取新任务。依赖弱网运行时,应把所用版本的重连、补领和重复响应行为列入验收,不能只从“主动轮询”推断自动恢复能力。可先阅读部署与安全和多站点应用发布方案。如果你的站点经常弱网,可通过联系页面提供脱敏网络条件,共同定义一次故障验收。