网易首页 > 网易号 > 正文 申请入驻

任务恢复了,订单却执行两次:持久化工作流的边界

0
分享至

假设一条订单流程已经完成审核,下一步调用仓库接口创建出库单。仓库创建成功,回执却在网络中丢失。调用方等到超时,随后重启;恢复机制发现这一步没有完成记录,于是再次提交。若仓库把它当成新请求,同一订单就可能产生两张出库单。

这里没有假定持久化系统损坏。问题恰恰发生在它正常恢复工作的时候。

AWS在2026年3月发布的Lambda durable functions实践材料,介绍了通过检查点和重放保存流程进度的方式。当前官方幂等文档同时明确:步骤默认是至少一次执行;已经完成并保存结果的步骤可以直接复用结果,尚未完成的步骤仍可能重试。前一个能力有用,后一个条件不能省略。

回执丢了,完成记录也没有

把刚才的假设按先后排开,只有四个时点:

  1. 工作流发出创建出库单的请求。

  2. 仓库接受请求,产生业务结果。

  3. 回执丢失,工作流没有保存该步骤的完成检查点。

  4. 工作流恢复,再次尝试这个步骤。

关键缝隙在第二步与第三步之间。仓库的业务状态已经改变,工作流的记录却还不知道。恢复程序只看到自己的历史,不能从“我没有收到成功”推出“对方没有执行”。


图1|假设场景的先后顺序:出库单已创建,完成检查点尚未保存,恢复后便可能重试。时间线不表示各阶段耗时相等。

检查点记录的是系统已经可靠保存的进度,并非整个业务世界的实时副本。除非外部操作与完成记录处在同一个可靠的原子提交范围内,否则不能仅靠持久化工作流消除这个不确定窗口。

也别把启动去重和步骤去重混为一谈。用同一个执行名称防止订单流程重复启动,可以挡住一类重复;它不会自动让流程内部的仓库接口变成幂等接口。键的有效范围、保留期限和重复请求的参数规则,也要按具体服务核对。

同一笔出库,要有同一个可核对的身份

较稳妥的方式,是在第一次调用前确定业务操作键,并让后续重试沿用。键可以由订单与本次合法发货动作共同标识,不能在每次尝试时重新生成,也不能让同一订单不同批次的合法发货误用同一个键。

执行方还必须兑现这个键的含义:相同键、相同业务参数到达时,复用或返回原操作的状态;同一个键带来不同货物或数量时,应拒绝冲突,而不是悄悄当成同一请求。去重记录与业务结果的关系必须可靠,两个并发请求也不能同时穿过去重检查。

仅在调用方数据库里加一个“已发送”标志,通常不够。先打标再调用,打标后崩溃可能使操作永远漏做;先调用再打标,操作成功后崩溃又回到了重复窗口。把两个语句换个顺序,并没有使它们变成同一件原子操作。

若出库单创建和去重记录由同一个数据库事务处理,可以在那里建立一致的约束;若调用的是第三方仓库,就需要依赖它提供的幂等契约或其他可验证机制。工作流引擎无法替外部服务补出一项它根本不支持的保证。

还要看时间。工作流可能等待很久才重试,而执行方的去重记录可能已经过期。首次成功保留一天、流程隔几天又提交,并不能靠“键还是原来的键”证明安全。自动重试窗口与去重、查询记录的保留窗口应互相匹配,超出后需要另一条处理路径。

有些超时,应当停在“结果待核对”

当接口能够按业务键查询,恢复后可以先核对原操作。确认成功就继续;明确失败或明确未受理,再按约定决定是否提交。查询暂时为空却不一定是未执行:可能只是查询副本尚未更新,或者原请求仍在处理中。查询的一致性与状态含义也属于接口契约。

如果既没有可靠幂等机制,也没有可靠结果查询,架构就面临真实取舍。继续重试可能重复出库,停止重试可能漏发。对于已经可能触发实物发运的操作,把订单进入待核对队列、限制后续动作并安排人工确认,往往比自动猜测结果更可控。

补偿也不是时间倒流。创建的出库单尚未执行时,也许还能取消;包裹已经交给承运人后,撤销单据并不能让包裹自动回到货架。能补偿到什么状态、谁确认完成、失败时如何继续,都要根据业务动作本身决定。


图2|包裹交给承运人后,撤销电子单据不能让实物自动返回。场景示意用于解释补偿边界,不是实际事故照片。

这里增加了人工成本,也可能延长交付时间。应把这类例外数量和最长停留时间纳入运行指标,否则主流程显示成功率很高,真正的不确定订单却堆在角落里。

恢复测试,故障要打在缝隙上

正常跑完一遍,只证明正常路径可用。更有价值的测试是:让外部操作已经成功,再丢弃回执;在完成检查点写入前终止执行;让重复请求同时到达;让查询短暂返回旧状态。验收同时核对工作流状态和仓库里的真实业务结果,不能只看重试次数。


图3|验收看两边的状态。流程结束而业务重复,或流程等待而业务已完成,都需要继续核对;图中状态为测试分类。

长时间运行还会遇到代码变化。AWS的调用文档建议生产使用不可变的编号版本,在途执行继续使用其原有版本。一般而言,重放需要稳定的执行语义;流程中依赖时间、随机数或外部读取的决定,也应遵循所用框架的持久化规则,不能恢复一次就走出另一条未经设计的分支。

如果恢复测试只能证明“任务最终结束”,再补一项验收:同一个业务动作到底产生了几次结果,无法确认时是否停在可处置的状态。流程进度有人保存以后,架构师仍要为外部世界已经发生的事情找到确认办法。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
普京返程专机空中盘旋6小时!莫斯科四个机场关闭,370个航班乱套

普京返程专机空中盘旋6小时!莫斯科四个机场关闭,370个航班乱套

史智文道
2026-10-12 16:48:33
独家:尊界用注销的检测中心出具的报告忽悠大众,居心何其叵测?

独家:尊界用注销的检测中心出具的报告忽悠大众,居心何其叵测?

微评社
2026-10-13 15:59:35
今天10月13日,全体退休人员注意:10月养老金发放,必查三项!

今天10月13日,全体退休人员注意:10月养老金发放,必查三项!

历史点行
2026-10-13 16:56:26
王曦雨1-2不敌低排名选手,止步WTA1000武汉站第二轮

王曦雨1-2不敌低排名选手,止步WTA1000武汉站第二轮

侧身凌空斩
2026-10-13 23:47:10
WTA1000武汉站太残酷了:随着萨卡里2-1逆转,世界第10无缘16强

WTA1000武汉站太残酷了:随着萨卡里2-1逆转,世界第10无缘16强

侧身凌空斩
2026-10-13 18:43:29
突发公告:正式关闭!账号将自动注销,抓紧登录消费余额,否则直接清零

突发公告:正式关闭!账号将自动注销,抓紧登录消费余额,否则直接清零

山东经济广播
2026-10-13 12:57:21
耐心正被消耗?巴基斯坦有识之士疾呼:别等被中国抛弃才悔不当初

耐心正被消耗?巴基斯坦有识之士疾呼:别等被中国抛弃才悔不当初

历史的烟火
2026-10-13 11:39:22
震惊国际的俄专家死亡:病毒不是鼠疫,而是越捂越大的信息黑洞

震惊国际的俄专家死亡:病毒不是鼠疫,而是越捂越大的信息黑洞

知法而形
2026-10-13 11:39:46
闲鱼惊现9台米格-29发动机,55万包邮,卖家说适合教学改装

闲鱼惊现9台米格-29发动机,55万包邮,卖家说适合教学改装

止戈军是我
2026-10-13 12:10:10
【2026.10.13】扒酱料不停:那些你不知道的八卦一二三

【2026.10.13】扒酱料不停:那些你不知道的八卦一二三

娱乐真爆姐
2026-10-14 00:22:59
郑钦文本季参赛计划:WTA250大阪赛、250中国香港赛、500东京赛。

郑钦文本季参赛计划:WTA250大阪赛、250中国香港赛、500东京赛。

林子说事
2026-10-13 16:35:35
仗打完了,事就完了?乌克兰前总司令扎卢日内曾发出“警告”,等俄乌冲突一结束,乌克兰可能马上就得面对另一场危机,那便是内部动乱

仗打完了,事就完了?乌克兰前总司令扎卢日内曾发出“警告”,等俄乌冲突一结束,乌克兰可能马上就得面对另一场危机,那便是内部动乱

回京历史梦
2026-10-13 09:21:23
挪威张维为,来抢瑞士张维为的市场了

挪威张维为,来抢瑞士张维为的市场了

黔有虎
2026-10-13 11:30:33
三盘险胜过关!兹维列夫击退19号种子,7年后重返上海大师赛八强

三盘险胜过关!兹维列夫击退19号种子,7年后重返上海大师赛八强

全景体育V
2026-10-13 20:56:06
中国科学院通报:成立调查工作组,开展全面核查

中国科学院通报:成立调查工作组,开展全面核查

学申论的谈妹
2026-10-13 09:32:06
尊界V800公布制动踏板第三方检测结果

尊界V800公布制动踏板第三方检测结果

第一财经资讯
2026-10-13 09:40:15
跟网约车的师傅聊天,真正感受到经济下行了

跟网约车的师傅聊天,真正感受到经济下行了

祥子札记
2026-10-12 19:46:58
胡锡进和项立刚因尊界V800杠起来了:项立刚建议人人买一辆,支持民族企业!胡锡进认为企业底线要守住

胡锡进和项立刚因尊界V800杠起来了:项立刚建议人人买一辆,支持民族企业!胡锡进认为企业底线要守住

江山挥笔
2026-10-12 15:15:09
中国将迎来史上最大规模的退休潮。

中国将迎来史上最大规模的退休潮。

荆楚寰宇文枢
2026-10-10 22:52:15
被停职审查、套现开溜、私生活混乱,董明珠身上标签该真相大白了

被停职审查、套现开溜、私生活混乱,董明珠身上标签该真相大白了

眼底星碎
2026-10-09 12:19:24
2026-10-14 03:08:49
IT架构师联盟 incentive-icons
IT架构师联盟
IT架构实战分享
855文章数 7671关注度
往期回顾 全部

科技要闻

扎克伯格宣布追上OpenAI!Meta新模型亮相

头条要闻

男子到姐姐家调解夫妻矛盾 不到1分钟被姐夫刺死

头条要闻

男子到姐姐家调解夫妻矛盾 不到1分钟被姐夫刺死

体育要闻

走调的歌声里全是感情 最好的郑钦文尚未登场

娱乐要闻

谭松韵亲自解答兰香结局遗憾

财经要闻

"黑医师"产业链调查:不学医竟能"拿证"

汽车要闻

豪华智能全拉满 比亚迪大汉不止旗舰级舒适

态度原创

健康
房产
教育
亲子
军事航空

孩子运动莫名晕倒?当心这类疾病

房产要闻

巨无霸来了!海口百亿大盘,正式动工!

教育要闻

成都这所公办K12学校开启招聘!优秀在职教师和本硕博毕业生赶紧关注

亲子要闻

孕期可以有性生活吗?一次说清楚

军事要闻

胡塞武装持续发动袭击 沙特王储被指辗转多个地堡宫殿

无障碍浏览 进入关怀版