373 lines
12 KiB
Markdown
373 lines
12 KiB
Markdown
# Earth Compute Center BGP-Style Plan
|
||
|
||
## Goal
|
||
|
||
这份文档定义如何按照 BGP 模块的产品方式,把“算力中心”提升为 Earth 上的一级能力。
|
||
|
||
这里的“按 BGP 方式”指的是:
|
||
|
||
- 有独立的数据语义和接口入口
|
||
- 有独立的 Earth 图层与图例
|
||
- 有独立的 hover / click / 选中态 / 详情卡
|
||
- 有独立的统计口径与后续专题页扩展空间
|
||
|
||
这里的“按 BGP 方式”不指:
|
||
|
||
- 机械复制 BGP 的 anomaly / incident / collector 三层事件模型
|
||
- 为静态算力设施强行引入不必要的复杂告警语义
|
||
|
||
算力中心本质上更接近“长期基础设施分布层”,不是“高频动态异常层”。
|
||
因此应该复用 BGP 的模块化方法,而不是照搬 BGP 的事件结构。
|
||
|
||
## Why
|
||
|
||
当前仓库里已经有算力相关基础:
|
||
|
||
- 后端已有 `top500` 和 `epoch_ai_gpu` 数据采集
|
||
- 可视化接口已有 `/api/v1/visualization/geo/supercomputers` 和 `/api/v1/visualization/geo/gpu-clusters`
|
||
- Earth 信息卡已对 `supercomputer` 和 `gpu_cluster` 做了基础类型兼容
|
||
|
||
但当前能力还停留在“数据可取到”的阶段,没有形成像 BGP 那样完整的可视化模块:
|
||
|
||
- Earth 缺少独立的算力图层加载模块
|
||
- 缺少算力 marker 体系和视觉层级
|
||
- 缺少算力图例、统计、开关和搜索接入
|
||
- 缺少与海缆、BGP、卫星的关系表达
|
||
- 缺少算力专题页和后续告警/研判扩展入口
|
||
|
||
所以当前真正的缺口不是“有没有数据”,而是“有没有产品级模块”。
|
||
|
||
## Core Principle
|
||
|
||
算力中心应当采用和 BGP 一致的模块化分层:
|
||
|
||
1. 数据层:稳定的数据契约和 GeoJSON 输出
|
||
2. 渲染层:独立的 Earth 图层、marker 和视觉状态管理
|
||
3. 交互层:hover、click、锁定态、详情卡、图例和统计
|
||
4. 扩展层:后续专题页、关系分析、告警和 AI 研判
|
||
|
||
但语义上必须保持算力中心自身的特点:
|
||
|
||
- `site / center` 是主对象,不是事件
|
||
- `capacity / rank / vendor / operator / status` 是主信息,不是异常严重度
|
||
- `distribution / concentration / dependency` 是后续分析方向,不是第一阶段必须项
|
||
|
||
## Recommended Scope
|
||
|
||
第一版“算力中心”建议统一承载两类对象:
|
||
|
||
- `supercomputer`
|
||
- `gpu_cluster`
|
||
|
||
并在 Earth 上收口为一个主题层:`compute_centers`
|
||
|
||
这样做有几个好处:
|
||
|
||
- 用户看到的是统一的“算力基础设施”语义,而不是零散数据源
|
||
- 后端仍可保留 `top500` 和 `epoch_ai_gpu` 的来源差异
|
||
- 前端可以在一个图层里再细分两种 marker 语言
|
||
|
||
## Current Gap
|
||
|
||
和 BGP 对比,当前差距主要在下面几层。
|
||
|
||
### 1. Data Contract Gap
|
||
|
||
现在的算力 GeoJSON 还是通用 `collected_data` 输出思路,字段较轻:
|
||
|
||
- `gpu_cluster` 只有基础名称和地点
|
||
- `supercomputer` 只暴露一部分性能字段
|
||
- 缺少统一的 `site_type / operator / capacity_band / source / updated_at / confidence`
|
||
- 缺少统一的算力层聚合出口
|
||
|
||
### 2. Earth Rendering Gap
|
||
|
||
当前 Earth 里没有类似 `bgp.js` 的算力模块:
|
||
|
||
- `constants.js` 没有算力 API 路径和视觉配置
|
||
- `main.js` 没有算力加载、拾取、状态同步和 HUD 更新
|
||
- `controls.js` 没有算力图层开关和启动加载优先级
|
||
- `layer-startup-tasks.js` 没有算力启动任务
|
||
- `legend.js` / `ui.js` 没有算力统计与图例模式
|
||
|
||
### 3. Interaction Gap
|
||
|
||
虽然 `info-card.js` 支持基础字段,但还没有形成 BGP 那种完整交互链路:
|
||
|
||
- 没有 hover / selected / dimmed 的视觉状态
|
||
- 没有算力对象专属 tooltip 与摘要文案
|
||
- 没有锁定后与其他基础设施的联动高亮
|
||
- 没有搜索、统计卡和详情组织方式
|
||
|
||
### 4. Product Expansion Gap
|
||
|
||
当前还没有“算力中心”专题页与分析语义:
|
||
|
||
- 没有全球分布/国家聚合/厂商聚合视图
|
||
- 没有算力与海缆/BGP/区域的关系表达
|
||
- 没有 AI brief / assessment 的后续落点
|
||
|
||
## Architecture Direction
|
||
|
||
推荐把算力中心做成“BGP 同级能力”,但采用更适合静态基础设施的结构。
|
||
|
||
### Backend
|
||
|
||
建议新增统一聚合接口,例如:
|
||
|
||
- `/api/v1/visualization/geo/compute-centers`
|
||
|
||
它的职责是把:
|
||
|
||
- `top500`
|
||
- `epoch_ai_gpu`
|
||
|
||
统一转换成一个主题层输出,同时保留对象细分类型:
|
||
|
||
- `site_type: supercomputer | gpu_cluster`
|
||
|
||
建议统一字段至少包括:
|
||
|
||
- `id`
|
||
- `name`
|
||
- `site_type`
|
||
- `country`
|
||
- `city`
|
||
- `latitude`
|
||
- `longitude`
|
||
- `operator`
|
||
- `vendor`
|
||
- `capacity_value`
|
||
- `capacity_unit`
|
||
- `capacity_band`
|
||
- `rank`
|
||
- `source`
|
||
- `updated_at`
|
||
- `location_precision`
|
||
- `geography_mode`
|
||
- `is_estimated`
|
||
- `estimated_reason`
|
||
- `metadata`
|
||
|
||
这里建议优先做“统一聚合出口”,而不是一开始就新增独立数据库表。
|
||
|
||
原因:
|
||
|
||
- 当前源数据更新频率低,先复用 `collected_data` 成本更低
|
||
- 可以先把 Earth 产品体验做完整
|
||
- 如果后续要做历史趋势、关系推断、告警,再评估是否拆成独立模型
|
||
|
||
### Frontend Earth
|
||
|
||
建议新增独立模块,例如:
|
||
|
||
- `frontend/public/earth/js/compute-centers.js`
|
||
|
||
职责参照 `bgp.js`:
|
||
|
||
- 拉取算力中心 GeoJSON
|
||
- 创建 marker
|
||
- 管理 hover / selected / dimmed 状态
|
||
- 输出图例项
|
||
- 输出统计摘要
|
||
- 提供 overlay 和详情格式化辅助函数
|
||
|
||
推荐视觉分层:
|
||
|
||
1. `supercomputer` 用更稳定、更规整的设施型符号
|
||
2. `gpu_cluster` 用更活跃、更现代的密度型符号
|
||
3. 选中态通过 halo / ring / related infrastructure highlight 表达
|
||
|
||
视觉上应避免把算力中心做成“BGP 事件点”那种高频脉冲风格。
|
||
它应该更像长期存在的高价值设施。
|
||
|
||
## Phases
|
||
|
||
## Phase 1: Unified Earth Layer
|
||
|
||
目标:
|
||
|
||
- 先把算力中心做成 Earth 上可用、可点、可解释的一级图层
|
||
|
||
工作项:
|
||
|
||
- 新增统一算力 GeoJSON 接口
|
||
- 新增 `compute-centers.js`
|
||
- 在 `constants.js` 增加 API 路径和视觉配置
|
||
- 在 `controls.js` 增加算力图层开关与启动元数据
|
||
- 在 `layer-startup-tasks.js` 增加算力启动加载任务
|
||
- 在 `main.js` 接入算力拾取、hover、click、锁定态和 HUD 统计
|
||
- 在 `ui.js` / `legend.js` / `index.html` 增加算力统计与图例入口
|
||
- 在 `info-card.js` 提升算力详情字段组织
|
||
- 对无法精确定位、但可按国家或弱线索推测的大概位置,仍然生成地图点位
|
||
- 这类对象必须带显式“估算位置”状态,例如图标问号角标与详情说明
|
||
|
||
完成标准:
|
||
|
||
- Earth 上能独立显示/隐藏算力中心
|
||
- 两类对象有可区分的视觉表达
|
||
- hover / click / 详情卡 / 图例 / 统计全部打通
|
||
- 精确位置与估算位置在图标或文案上可区分,不会误导为同一精度
|
||
- 不干扰现有海缆、卫星、BGP 的交互链路
|
||
|
||
## Phase 2: Relationship Layer
|
||
|
||
目标:
|
||
|
||
- 让算力中心不只是“点”,而是和其他基础设施产生上下文关系
|
||
|
||
工作项:
|
||
|
||
- 建立算力中心与国家/区域聚合摘要
|
||
- 增加与附近海缆登陆点的关系提示
|
||
- 增加与 BGP 事件/观测范围的空间邻近提示
|
||
- 增加与卫星覆盖或区域连通性的实验性提示
|
||
|
||
完成标准:
|
||
|
||
- 点击算力中心时,用户能看到“它和哪些基础设施相关”
|
||
- 信息表达以辅助判断为主,不做夸张推断
|
||
|
||
## Phase 3: Compute Center Observatory
|
||
|
||
目标:
|
||
|
||
- 把算力中心从 Earth 图层扩展成独立专题观测能力
|
||
|
||
工作项:
|
||
|
||
- 新增算力中心专题页
|
||
- 提供国家/厂商/类型/容量分布统计
|
||
- 支持列表、筛选、详情和历史快照
|
||
- 预留 AI brief / assessment 入口
|
||
|
||
完成标准:
|
||
|
||
- 算力中心不再只是 Earth 上的视觉点位
|
||
- 能作为独立业务上下文进入日常观察与研判
|
||
|
||
## Phase 4: Alerts And Assessment
|
||
|
||
目标:
|
||
|
||
- 在不滥造“假动态告警”的前提下,引入真正有价值的变化感知
|
||
|
||
候选方向:
|
||
|
||
- 新增大规模算力中心
|
||
- 既有中心容量显著变化
|
||
- 国家/区域集中度显著变化
|
||
- 高价值中心与关键网络基础设施关系变化
|
||
|
||
完成标准:
|
||
|
||
- 告警来自可解释的结构变化
|
||
- 不把静态数据硬做成噪声式实时事件流
|
||
|
||
## Implementation Notes
|
||
|
||
建议按下面顺序推进:
|
||
|
||
1. 先统一 GeoJSON 契约
|
||
2. 再做 Earth 独立模块和图层开关
|
||
3. 再补详情卡、图例和统计
|
||
4. 最后才做关系层和专题页
|
||
|
||
这样可以避免一开始把范围摊得过大。
|
||
|
||
## Unknown Location Strategy
|
||
|
||
由于部分算力数据源不会直接提供经纬度,未知位置补全不能只依赖“继续找 API 字段”。
|
||
更稳妥的方式是做成一条分层富化链路,而不是单一猜测规则。
|
||
|
||
推荐按下面优先级推进:
|
||
|
||
1. 直接源信息
|
||
|
||
- 源记录显式给出 `latitude / longitude`
|
||
- 源记录给出 `city / region / facility / campus / operator`
|
||
- 源页面详情、内嵌 JSON、结构化元数据、新闻稿链接里能抽出地点线索
|
||
|
||
2. 名称与机构归一化
|
||
|
||
- 建立 `canonical_name / aliases / operator / facility` 归一化表
|
||
- 把 `cluster name`、`operator`、`campus name` 归一到同一个实体
|
||
- 优先解决同一对象多写法导致的命中失败,而不是先扩大猜测范围
|
||
|
||
3. 本地位置注册表
|
||
|
||
- 用仓库内可维护的 registry 保存高价值对象的位置知识
|
||
- 每条记录至少包含:`canonical_name`、`aliases`、`operator`、`country`、`region`、`city`、`lat`、`lon`、`confidence`、`source_note`
|
||
- 转换层优先读取 registry,避免地点知识长期散落在转换代码里
|
||
|
||
4. 分层回退定位
|
||
|
||
- `precise`
|
||
- `estimated_site`
|
||
- `estimated_city`
|
||
- `estimated_region`
|
||
- `estimated_national_hub`
|
||
- `estimated_country`
|
||
|
||
这里建议把“国家内主要算力城市”作为国家质心之前的一层。
|
||
例如没有美国精确位置时,优先考虑已知的主要算力/数据中心城市候选,而不是直接落在几何质心。
|
||
|
||
5. 候选证据富化
|
||
|
||
- 如果源 API 无地点信息,可以允许采集链路读取公开辅助证据
|
||
- 例如机构官网、数据中心介绍页、新闻稿、百科型页面、公开 PDF
|
||
- 但只提取“地点线索”,不把外部页面上的经纬度当真值直接写回
|
||
|
||
6. 人工校验闭环
|
||
|
||
- 对高价值且仍然未知的对象输出待核验清单
|
||
- 把人工确认结果回写到位置注册表
|
||
- 后续采集继续优先复用这层人工确认结果
|
||
|
||
### Additional Solution Paths
|
||
|
||
除了静态映射表,还可以考虑下面这些办法:
|
||
|
||
- 基于国家和运营方建立“主要园区候选集”,用稳定散列把同国未知节点分散到若干可信城市,而不是全部压到一个点
|
||
- 基于数据中心/云厂商公开 region 列表建立 `operator -> city set` 候选映射,用于云 GPU 集群类对象
|
||
- 把“估算依据”结构化,例如 `matched_alias`、`matched_operator`、`matched_city_text`、`fallback_country_hub`
|
||
- 给位置补全增加 `last_verified_at`,便于后续按时间重新校验老旧映射
|
||
- 单独维护“不可可靠定位”状态;这类对象仍可在国家级聚合统计中出现,但可以允许用户在地图上过滤掉
|
||
- 后续如果你们愿意投入更多,可把这条链路做成小型 enrichment pipeline,而不是仅在 API 转换时临时判断
|
||
|
||
## Non-Goals
|
||
|
||
第一阶段不建议做这些内容:
|
||
|
||
- 不复制 BGP 巡航模式到算力中心
|
||
- 不先做复杂实时 websocket 推送
|
||
- 不先引入独立 `compute_center_incident` 一类模型
|
||
- 不先做全量 AI 分析面板
|
||
|
||
原因是算力中心的第一需求是“被看清楚”,不是“被实时播报”。
|
||
但“被看清楚”不等于“只显示精确坐标对象”。
|
||
对于没有精确经纬度、但能推测到国家或区域级位置的算力中心,应优先以上图并标注估算状态的方式处理,而不是直接在地图上消失。
|
||
|
||
## Acceptance Checklist
|
||
|
||
- 后端存在统一的算力中心 GeoJSON 出口
|
||
- Earth 有独立算力图层模块,而不是散落在 `main.js`
|
||
- 页面上有清晰的算力开关、图例和统计
|
||
- `supercomputer` 和 `gpu_cluster` 在视觉和详情上都可区分
|
||
- 估算位置对象在地图和详情中都有明确状态提示
|
||
- 现有 BGP / 海缆 / 卫星功能无回归
|
||
- 代码结构上为后续专题页和关系分析留出了明确扩展点
|
||
|
||
## Summary
|
||
|
||
这项工作的本质不是“再多画几个点”。
|
||
|
||
它应该把算力中心从已有数据源,升级成与 BGP 同级的 Earth 观测主题:
|
||
|
||
- 有独立语义
|
||
- 有独立图层
|
||
- 有独立交互
|
||
- 有后续分析扩展能力
|
||
|
||
推荐先完成 Phase 1,把算力中心做成真正可用的 Earth 一级模块,再继续推进关系层和专题页。
|