Agent 故障接管:检查点之外还缺一个 fencing token

发布时间:2026/10/25 21:25:35

Agent 故障接管:检查点之外还缺一个 fencing token 心跳超时后把任务交给新 Worker原 Worker 不一定真的停止了。它可能经历了一次长暂停恢复以后继续把旧结果写进数据库。只记录“现在是谁持有租约”还不够保护外部副作用。LangGraph 的持久化说明把检查点与跨线程存储分开它也明确指出内存检查点不会跨进程重启保留。官方文档 这给故障接管划了一条很实用的线恢复上下文、分配所有权、阻止陈旧写入需要分别设计。接管后存储端也必须认识新一任 Workerfencing token 是单调递增的所有权代次。新 Worker 得到更大的代次资源端拒绝旧代次的写入。它不是由旧 Worker 自觉检查的一面小旗而是最终写入位置必须执行的约束。Kleppmann 在讨论分布式租约时用这个机制解释暂停与延迟请求带来的风险。原文即使代次检查正确同一代次内的重试也可能重复提交因此还需要操作幂等键。检查点中的“下一步”只是一条执行意图如果外部系统已经产生副作用却没回 ACK重新跑一遍仍可能重复扣款或重复创建资源。让两个 Worker 在同一段程序里相遇下面的资源端既记最高代次也记已经提交的操作 ID。先让代次 8 写入再提交代次 7 的迟到请求陈旧请求必须失败同一操作的重试则返回原结果。图中的 7 与 8 是所有权代次不是时间戳也不是 Worker 的业务优先级。检查点回放把上下文送到新 Worker资源端的 fencing 检查负责另一条防线。class FencedResource: def __init__(self): self.highest_epoch 0 self.values {} self.operations {} def write(self, epoch, operation_id, key, value): if epoch self.highest_epoch: raise ValueError(stale owner) self.highest_epoch epoch if operation_id in self.operations: previous self.operations[operation_id] if previous ! (key, value): raise ValueError(idempotency key reused with different input) return already_committed self.values[key] value self.operations[operation_id] (key, value) return committed resource FencedResource() assert resource.write(8, op-B, answer, new) committed assert resource.write(8, op-B, answer, new) already_committed try: resource.write(7, op-A, answer, late) except ValueError: pass else: raise AssertionError(stale worker overwrote new owner) assert resource.values {answer: new} print(epoch 7 rejected; epoch 8 retry committed only once)例子跑通以后还要验证什么这段代码已在本地 macOS、CPython 3.9.6 下运行实际输出为epoch 7 rejected; epoch 8 retry committed only once。它验证的是例子中的数据约束与分支不包含线上服务的吞吐或延迟测量。这个资源端是单进程教学对象没有实现分布式一致性或崩溃持久化。真实数据库必须把代次比较、幂等检查和数据写入放在同一原子提交边界不支持 fencing 的外部服务需要另外设计幂等或补偿。未运行 LangGraph、数据库接管或故障注入测试。延伸阅读LangGraph Persistence检查点、持久化边界与内存存储的限制。How to do distributed locking2016 年对暂停、租约与 fencing 的原始工程论证。
延伸阅读

更多相关文章

2026/10/25 21:25:34

CGLIB 类为什么越生越多:先复现缓存键,再谈元空间

“代理类很多”与“元空间泄漏”之间,还隔着缓存键、类加载器和引用存活期。只看某个时刻已经加载的类数,无法判断它们还在增长、已经可卸载,还是确实被长寿命对象保留。 CGLIB 的 AbstractClassGenerator 公开了缓存相关行为,真…

2026/10/25 21:25:34

Java电子图书馆课程设计:从源码到文档的完整实现指南

简介:这份资源是面向高校计算机专业学生与Java初学者的一套课程设计完整实践包,围绕电子图书馆的图书借阅管理场景展开,帮助读者在真实项目中理解Java Web开发流程。系统区分普通用户与管理员两类角色,普通用户可浏览、检索图书并…

2026/10/26 6:31:15

Linux驱动开发入门:pinctrl与gpio子系统详解及LED实验

1. 从一个LED实验说起:为什么绕不开pinctrl和gpio做过Linux驱动开发的人,几乎都从点亮一颗LED开始。这个实验看起来简单得不能再简单——不就是配置一个引脚输出高低电平吗?但真正动手写代码的时候,很多人会卡在一个地方&#xff…

2026/10/26 6:31:15

前端AI提效实战:用Skill与MCP重构开发工作流

1. 先弄懂 Skill 和 MCP 是什么,前端用它到底图什么作为一个在职前端,我今年最大的变化不是追上了哪个新框架,而是习惯把 Skill 和 MCP 直接塞进日常开发流程里。刚接触这两个词的时候我也很懵:Skill 不是游戏里的技能吗&#xff…

2026/10/26 6:31:15

Qwen-Image-2.1云端GPU部署实战:显存优化与量化推理全指南

1. 为什么把 Qwen-Image-2.1 放云端:本地显卡的痛点和云端方案的取舍先说我的真实感受。Qwen-Image-2.1 开源之后,我第一反应是在自己机器上跑。结果折腾了两个晚上,最崩的不是模型本身,而是硬件:一张 3090 跑 20B 的版…

2026/10/26 6:31:15

AI编程工具真相:Codex与Claude Code能力边界与工业级避坑指南

1. 那个“一句话生成整套软件”的视频,我拆了37个帧你刷到过这类短视频吗?画面左侧是设计师拖拽一个UI草图进窗口,右侧终端里敲下一句“build full desktop app with login, database, and export PDF”,回车——三秒后&#xff0…

2026/10/26 6:31:15

大模型生产力化:现状、挑战与落地实践

1. 大模型生产力化的现状与挑战2023年ChatGPT的爆发让大模型技术进入公众视野,但真正将大模型转化为生产力工具仍面临诸多现实障碍。目前大多数企业的大模型应用仍停留在"玩具阶段"——能完成演示效果,却难以融入实际业务流程。根据我参与过的…

2026/10/26 6:26:14

LT8718视频桥接SoC:TTL/BT1120转DisplayPort工程实战

简介:本资源为龙迅半导体LT8718芯片的官方产品简报PDF文档,面向嵌入式硬件工程师、视频接口开发人员及单片机系统集成者,解决TTL/RGB/YUV/BT656/BT1120等并行视频信号向DisplayPort 1.2/EDP/Type-C高清显示接口转换的核心桥接需求。文档完整涵…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑