创建仓库

This commit is contained in:
2025-12-11 07:24:36 +08:00
commit 0d81c1792d
128 changed files with 15104 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
---
tags: []
aliases:
- 2.4 外部目标数据分发协议 - 工程基线总结报告
date created: 星期一, 十一月 24日 2025, 4:55:47 下午
date modified: 星期一, 十一月 24日 2025, 11:04:03 晚上
---
# 2.4 外部目标数据分发协议 - 工程基线总结报告
**适用范围**: 数据网关模块 (`DisplayController`) $\leftrightarrow$ 显控终端 (`ClientApp`)
## 1. 核心架构基线 (Core Architecture Baselines)
|**决策领域**|**核心基线 (Baseline Established)**|**关键技术与配置 (Key Specs)**|**设计意图/依据**|
|---|---|---|---|
|**2.4.1 传输拓扑**|**多源汇聚单播 (N-to-1 Unicast)**|**UDP** 直连。显控端绑定固定端口,通过 `StationID` 区分多路数据源。|摒弃组播Multicast的部署复杂性适应分布式阵面组网需求。|
|**2.4.1 IO 模型**|**全异步非阻塞 (Non-blocking)**|**Epoll Edge-Triggered (ET)** + **独立 IO 线程**。采用“写优先 (Write-First)”策略。|隔离网络抖动对计算核心的影响,最大化物理线速发送能力。|
|**2.4.2 数据契约**|**原子批次 (Atomic Batch)**|**Protobuf v3**。一个数据包严格对应一个 CPI 处理周期。严禁微批次切分。|简化显控端逻辑,确保态势图更新的原子性与一致性。|
|**2.4.3 时空基准**|**统一 UTC + WGS84**|时间戳:`timestamp_us` (总控授时 UTC)。坐标:经纬高或 ECEF。|解决分布式多站数据融合时的时空对齐难题。|
|**2.4.4 热节流**|**混合降级 (Hybrid Degradation)**|**L1**: 内容剪裁 (Pruning)**L2**: 频率抽稀 (Gap Insertion)。|在物理过载时主动卸载序列化与中断压力,优先保障核心航迹交付。|
|**2.4.5 闭环遥测**|**带外 HTTP 上报**|客户端聚合 P99 延迟与丢包率,每 60s 通过 REST API 回传。|建立全链路性能监控闭环,量化“用户感知延迟”。|
---
## 2. 关键技术规范详解
### 2.4.1 传输层实施规范
- **Socket 配置**:
- **发送缓冲区 (`SO_SNDBUF`)**: 动态计算为 `Max_Burst * 4` (建议 **8MB+**)。作为最后的弹性气囊吸收脉冲式突发。
- **QoS 标记**: 设置 `IP_TOS`**DSCP EF (0x2E)****CS6**,保障交换机转发优先级。
- **分片策略**: 开启 `IP_PMTUDISC_DO` 禁止 IP 分片,在应用层按 MTU (如 1472 字节) 进行切片。
- **线程模型**: 采用 **SPSC 无锁队列** 连接业务线程(生产者)与 IO 线程(消费者),实现计算与传输的物理隔离。
### 2.4.2 序列化与协议头规范
- **Schema 定义**: 根对象 `TrackDataBatch` 必须包含:
- `station_id`: 站点标识 (uint32)。
- `batch_sequence_id`: 单调递增序列号 (uint64),在**序列化时刻**生成。
- `timestamp_us`: 数据生成时的 UTC 时间 (uint64)。
- `throttle_level`: 当前节流等级反馈 (uint32)。
- `trace_id`: 全链路追踪 ID。
- **完整性校验**: 采用 **CRC32c** 算法计算 Payload 校验和,填入协议头。
### 2.4.3 接收端诊断规范
- **丢包判决**: 基于 **滑动窗口统计**。仅当 `Current_Seq > Last_Seq + 1` 时判定丢包。乱序包 (`Current <= Last`) **立即丢弃**
- **断连判定**: 维护每个 Station 的心跳状态。超过 **2 秒** 无数据视为断连 (Disconnected)。
- **延迟告警**: 实时计算 `Local_Time - Packet_Time`。若超过阈值 (如 200ms) 触发 "High Latency" 提示。
### 2.4.4 流量整形策略 (Traffic Shaping)
响应 `SetComputeThrottleEvent` 指令:
- **Level 0 (全速)**: 发送 航迹 + 点迹 + 状态。
- **Level 1 (轻微)**: **剪裁内容**。丢弃点迹 (Plots) 和调试信息,保留全量航迹。减少序列化 CPU 开销。
- **Level 2 (严重)**: **频率抽稀**。每 2 帧丢弃 1 帧 (50% Rate)。减少网卡中断和总线功耗。
- _注意_丢弃操作在序列号生成**之前**执行,确保发出的数据包序列号依然连续。
### 2.4.5 遥测回传规范
- **通道**: **HTTP POST** (非 UDP)。
- **指标**: `station_id`, `latency_p99`, `packet_loss_rate`, `throughput_mbps`.
- **行为**: 显控端后台线程每 60 秒聚合一次统计数据并上报,若上报失败 (超时/错误) 则丢弃本次报告,不重试。
---
## 3. 风险与应对 (Risk Mitigation)
|**潜在风险**|**现象**|**应对/缓解措施**|
|---|---|---|
|**Bufferbloat**|无丢包但延迟持续升高 (>500ms)。|监控端到端延迟指标。若确认积压,需检查 2.4.4 节流阈值是否过高,或减小 `SO_SNDBUF` 迫使上游丢包(新鲜度优先)。|
|**时钟漂移**|多站目标在显控端“跳变”。|依赖总控授时。显控端应显示“时间同步状态”图标,若检测到 `Timestamp > LocalTime` (未来时间) 则告警。|
|**网络微突发**|偶发性成片丢包。|依赖 8MB+ Socket 缓冲区吸收。若仍丢包,需检查交换机端口缓存配置。|