Skip to content

DN42 registry 镜像

控制面维护一份 DN42 registry 的 aut-num 副本(ASN → as-name),为各处榜单与向导提供名称富化。本文讲同步机制、配置与运维操作。

是什么、给谁用

registry 副本不是完整 registry 镜像——只摄入 aut-num 对象(约 2600 条)进 registry_asn 表(见 ../reference/database.md)。消费方:

  • 路由起源榜、流量榜(Top50)、对端烈度榜等处的 AS 名称富化(缓存优先,未命中回落占位符,不阻塞主查询);
  • peering 向导输入 ASN 时实时带出名字(GET /ui/registry/asn/{asn});
  • 批量查询 GET /ui/registry/names?asns=…(单次上限 200,去重截断)。

同步机制

实现:主面 apps/control-server-ts/src/services/registry.ts(温备面 app/services/registry.py 同构)。

  • :DN42 官方 registry 的 Forgejo 仓库 tarball(匿名下载被拒,需只读 token)。
  • sha 门控:先取仓库最新 commit sha,与上次同步记录(registry_meta)一致则跳过整轮下载。
  • 失败保旧:下载 / 解析失败只记日志,既有副本数据保留不动。
  • 节奏:cron 每 6 小时一轮(主面 wrangler.jsonc triggers;温备面 lifespan 背景循环);也可手动触发。
  • 解析为 tar.gz 流式处理,只挑 aut-num 对象落库;名称查询走 KV/缓存优先。

配置

主面(TS)说明
REGISTRY_TOKENwrangler secret put REGISTRY_TOKENForgejo 只读 token;未配置时同步不可用(手动触发 409)
REGISTRY_BASE_URL / REGISTRY_REPOwrangler.jsonc varsregistry 源地址与仓库名

温备面对应配置在 control-server.toml 的 registry 段。完整配置面见 ../reference/configuration.md

运维操作

bash
# 同步状态:是否启用 / 当前 commit / aut-num 条数 / 上次同步时刻
curl -s https://api.natlan.io/api/v1/ui/registry/status

# 手动触发一轮同步;?force=1 跳过 sha 门控强制重灌
curl -s -X POST "https://api.natlan.io/api/v1/ui/registry/sync?force=1"

# 单 ASN 摘要 / 批量名称
curl -s https://api.natlan.io/api/v1/ui/registry/asn/4242420028
curl -s "https://api.natlan.io/api/v1/ui/registry/names?asns=4242420028,4242422189"

状态码:未配 token 手动同步 → 409(registry sync is not configured);同步失败 → 502(既有数据保留);namesasns 参数 → 422。

排错

症状排查
榜单里 AS 只显示占位符GET /ui/registry/status 看副本是否为空 / 过旧;查 REGISTRY_TOKEN 是否配置
手动 sync 一直 502registry 源可达性、token 是否失效;失败不破坏旧数据,可放心重试
数据陈旧但 sync 返回 skippedsha 门控生效(上游确实没有新 commit);确需重灌用 ?force=1