外观
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.jsonctriggers;温备面 lifespan 背景循环);也可手动触发。 - 解析为 tar.gz 流式处理,只挑
aut-num对象落库;名称查询走 KV/缓存优先。
配置
| 项 | 主面(TS) | 说明 |
|---|---|---|
REGISTRY_TOKEN | wrangler secret put REGISTRY_TOKEN | Forgejo 只读 token;未配置时同步不可用(手动触发 409) |
REGISTRY_BASE_URL / REGISTRY_REPO | wrangler.jsonc vars | registry 源地址与仓库名 |
温备面对应配置在 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(既有数据保留);names 缺 asns 参数 → 422。
排错
| 症状 | 排查 |
|---|---|
| 榜单里 AS 只显示占位符 | GET /ui/registry/status 看副本是否为空 / 过旧;查 REGISTRY_TOKEN 是否配置 |
| 手动 sync 一直 502 | registry 源可达性、token 是否失效;失败不破坏旧数据,可放心重试 |
| 数据陈旧但 sync 返回 skipped | sha 门控生效(上游确实没有新 commit);确需重灌用 ?force=1 |