【边缘计算实战】P3:把卸载策略接到线上——弱网 / 过载 / 节点宕机注入

系列:巡检机器人边云协同(P1→P2→P3→P4)
代码仓库:https://gitee.com/ghaweiuptgb/edge-computing
本篇目录projects/p03-online-offloading
前置:P1(策略)+ P2(Compose 运行时已启动)


一、P3 要解决什么?

导师项目标题里常有「复杂环境」四个字。如果只做实验室理想网络下的仿真,故事是不完整的。

P3 做三件事:

  1. 在线调度:用 P1 策略选节点,真实调用 P2 /infer
  2. 工况注入:normal / weak_net / edge_overload / node_down
  3. online vs sim:承认差异,但讲清原因与相对结论

一句话:

让策略从「笔记本上的公式」走到「容器里的 HTTP」。


二、整体数据流

任务流 (同 P1 的 seed 生成)
    → Offline Policy.select(nodes, network)
    → 故障注入(延迟 / 丢包 / 队列 hint / docker stop)
    → POST http://node/infer
    → JSON 结果 + 日志落盘
    → 与 P1 Simulator 对比

关键适配:P2 Registry 返回 JSON,需映射为 P1 的 ComputeNode;宿主机访问容器时,把 http://edge-node-a:8001 映射为 http://127.0.0.1:8001


三、四种复杂环境工况

工况在线怎么注入目的
normal无额外注入基线
weak_net云端额外延迟 + 小概率丢包惩罚无脑上云
edge_overload抬高边侧队列 hint逼策略分流
node_downdocker compose stop edge-node-a + alive=False宕机容错

四、环境准备

# 1) 先启动 P2
cd edge-computing/projects/p02-edge-runtime
docker compose up -d

# 2) 跑 P3
cd ../p03-online-offloading
pip install -r requirements.txt
python -m pytest tests/ -v

五、快速实验

单工况对比(弱网)

python scripts/run_profile.py --profile weak_net --policy always_cloud --n-tasks 40
python scripts/run_profile.py --profile weak_net --policy greedy_min_latency --n-tasks 40

矩阵实验

python scripts/run_profile.py --matrix --profiles normal,weak_net,edge_overload --n-tasks 30

输出:

experiments/results/summary.md
experiments/results/online_*.json
experiments/logs/*.log

总验收

python scripts/accept_p3.py

六、怎么读 online vs sim?(非常重要)

很多同学会慌:「为什么线上成功率和仿真不一样?」

请记住这张表:

维度仿真 P1在线 P3
执行公式直接算HTTP + 真实 sleep
网络写进公式额外 delay / 丢包
抖动Docker / OS 调度
宕机alive=False可选真 stop 容器

正确读法:

  • 不要追求绝对数值相等
  • 要看策略 相对排序 是否大体同向
  • 差异写进报告,本身就是科研训练

仓库文档:docs/online-vs-sim.md


七、失败可观测

每次运行会写日志,例如:

experiments/logs/weak_net_always_cloud.log

里面能看到:

  • dropped(注入丢包)
  • infer_fail / infer_exception
  • 选了哪个节点

这为 P4 的告警与诊断埋了伏笔。


八、组会怎么讲(40 秒)

P1 证明策略在仿真里有效;P3 把同一套策略接到真实边缘服务,并注入弱网、过载、节点宕机。
线上数字会和仿真有偏差,但相对结论仍然成立,说明方法经得起「复杂环境」。


九、小结与下期预告

P3 打通了「策略 → 运行时 → 工况」。

下一篇 【P4】可观测与运维诊断:做指标、告警、规则诊断,并给一个浏览器面板,注入故障后能「看到报告」。


标签建议边缘计算 计算卸载 故障注入 弱网 Docker 在线调度

系列导航:P1 仿真 → P2 运行时 → P3 在线卸载(本篇) → P4 可观测诊断

更多推荐