worker-runtime

command
v0.35.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 13, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

clock.go —— 演示用的可注入时钟。

注册与租约的过期判定读它(时钟可注入 ⇒ 过期场景能被确定性测, 不靠 sleep 撞时序——sidetest / boardtest 同一条纪律)。

Package main —— worker 生命周期的**参考运行时示例**(issue #106)。

生命周期: Experimental(v0.35.0 定级)——本包仍会改、删、拆,不承诺任何 兼容,升级风险自负;定级理由见 api-lifecycle.yaml,分级规则见 docs/api-compat.md。

它是**示例**不是能力包:机制面在 worker / coord / taskboard 里,本目录 只演示六段生命周期怎么接线——注册 → 心跳 → 领取 → 执行 → 续期/恢复 → 优雅退出。存储用 coord 的适配器 + 内存后端(跨进程原子性由真实后端保证, 见 coord 包文档的形态约定)。

演示脚本(runDemo,端到端用例直接调它并断言输出):

  1. 建任务板(coord 适配器)与注册表(内存参考实现);
  2. 播种一条 3 步依赖链;
  3. worker-a 认领 t1 后「崩溃」(认领记录留在板上,租约 1 分钟)—— 真实崩溃在存储侧留下的就是这一条过期认领;
  4. 时钟推过租约;worker-b 启动:先 Recover(接管 t1,活租约不抢), 恢复的任务就地执行并 Complete,然后跑正常领取环完成 t2/t3;
  5. 优雅退出(ctx 取消 → 停止领取 → 在途收敛 → 注销),打印终态。

registry.go —— worker.Registry 的参考实现(内存版,**单进程演示用**)。

原子性来自进程内互斥锁,只在单进程内成立;真实宿主把同一套判据落到 跨进程存储上(Redis SET NX PX / PostgreSQL 条件 UPDATE / etcd txn)。 心跳的「资格校验 + 推后有效期」必须是一次原子操作——这是 Registry 契约的硬要求,拆成「查-判-写」三步,顶替者的心跳就会延长别人的注册。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL