目标
让 Worker 能定期向共享存储写入自身运行状态,Controller/UI 后续可以读取节点状态,而不是每次实时请求所有 Worker。
设计建议
优先使用 Redis 存运行时状态:
lb:nodes:{node_id}:status
lb:nodes:online
状态 TTL 应略大于 heartbeat 间隔,例如 heartbeat 30s,TTL 90s。
写入字段:
- node_id
- role
- region
- version
- active_streams
- max_concurrency
- last_seen_at
- db_status
- redis_status
- process_uptime
实现建议
- 新增
NodeHeartbeatService。
- 在
service/wire.go ProviderSet 中注入并启动。
- Redis 不可用时不应阻断模型请求,只记录 degraded。
- 不在本 issue 中做 UI。
测试点
- 服务启动后按周期写 Redis。
- TTL 到期后节点自动消失。
- Redis 写失败不影响启动和网关请求。
- 单测覆盖 key 命名和 TTL。
目标
让 Worker 能定期向共享存储写入自身运行状态,Controller/UI 后续可以读取节点状态,而不是每次实时请求所有 Worker。
设计建议
优先使用 Redis 存运行时状态:
状态 TTL 应略大于 heartbeat 间隔,例如 heartbeat 30s,TTL 90s。
写入字段:
实现建议
NodeHeartbeatService。service/wire.goProviderSet 中注入并启动。测试点