Skip to content

[Node Federation] 扩展健康检查与节点状态接口 #46

Description

@WilliamWang1721

目标

把当前简单 /health 扩展为可用于 Nginx / 云 LB / Controller 的节点状态能力。

当前 backend/internal/server/routes/common.go/health 只返回 {"status":"ok"},不足以支撑节点联邦。

建议接口

保留:

GET /health

继续返回轻量 ok,兼容现有部署。

新增:

GET /node/status

返回示例:

{
  "status": "ok",
  "node_id": "sg-1",
  "role": "worker",
  "version": "0.2.x",
  "region": "sg",
  "active_streams": 12,
  "max_concurrency": 100,
  "db": "ok",
  "redis": "ok",
  "uptime_seconds": 3600,
  "started_at": "2026-06-25T00:00:00Z"
}

实现建议

  • 新增 NodeStatusService 或放入 service 层,不要在 route 里拼复杂逻辑。
  • 不返回任何密钥、token、完整数据库地址、Redis 地址。
  • 如果 Redis/DB 不可用,/health 可仍按现有策略返回,/node/status 应反映 degraded。
  • 后续 Ops/UI 可复用此接口。

测试点

  • /health 兼容旧行为。
  • /node/status 在关闭 federation 时仍能返回基础状态。
  • DB/Redis mock 失败时状态为 degraded,不 panic。
  • 返回体不包含敏感字段。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions