执行锁与幂等控制
锁的职责
执行锁用于减少多个 worker 同时处理同一个意图。锁的范围应包含链、账户与业务意图;账户序列相关冲突可能还需要独立的账户级协调。
建议租约流程
以随机所有者标识和有效期原子获取锁。续租与释放均先验证所有者,避免旧 worker 释放新 worker 的锁。外部调用必须有超时,防止持锁工作无限等待。
租约过期后的风险
锁过期不会停止旧 worker。建议状态版本、持久执行记录与提交前执行权检查共同约束行为,避免仅靠 TTL 宣称不会重复交易。链上提交无法加入 Redis 原子操作,结果未知时先查原交易。
幂等判定
同一业务意图返回已有执行结果或继续追踪已有提交。策略配置变化、账户变化或用户明确要求新动作时,应通过新的意图关联原任务,而非复用模糊的地址 Key。
验证场景
两个 worker 同时领取、worker 暂停超过租约、续租失败、旧 worker 迟到释放及提交后进程崩溃。核对实际广播次数与意图记录是否一致。