Files
Inbox/系统基座文件/2.4 工程基线总结报告_外部目标数据分发协议.md
2025-12-11 07:24:36 +08:00

76 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 缓冲区吸收。若仍丢包,需检查交换机端口缓存配置。|