引言:算力孤岛与架构的"不可能三角"
在企业级AI视频项目中,我们常面临一个尴尬的局面:中心机房是 X86 服务器,边缘节点是 ARM 架构的国产芯片,而算法模型又依赖特定的 CUDA 或 ONNX Runtime。 传统的单体架构应用一旦编译,就锁死了硬件环境。
YiheCode Server 通过将业务逻辑 与计算密集型任务 彻底解耦,构建了一套适应未来信创环境的弹性架构。它支持纯代码交付,允许开发者直接在源码层面进行适配,这是闭源软件无法比拟的优势。

一、 核心架构设计:微服务与边缘协同
该平台采用了标准的前后端分离 架构,并引入了边缘计算理念,将资源消耗巨大的AI推理任务下沉到边缘端。
1.1 技术栈全景
- 后端 (Java):Spring Boot 2.7,负责设备管理、用户鉴权、告警存储等高并发业务,保证系统的稳定性。
- 前端 (Vue):Vue 2.6 + Element UI,提供直观的可视化操作界面,支持大屏展示。
- 流媒体底座:集成 ZLMediaKit,负责核心的视频流拉取、转码与分发。
- 部署方式:支持 Docker 容器化部署,这是实现跨平台兼容的关键。
1.2 架构拓扑图
text
+---------------------+
| Web/APP (Vue) | <--- 监控大屏、移动端
+----------+----------+
| HTTP/Websocket (标准化API)
v
+---------------------+ +---------------------+
| Center Server | | MinIO / MySQL |
| (Java/Spring Boot)| | (Storage/DB) |
+----------+----------+ +---------------------+
| RPC/Message
v
+---------------------+ +---------------------+
| Edge Gateway |<--->| Edge Boxes |
| (ZLMediaKit) | Pull| (NPU/GPU/CPU) |
+---------------------+ Push+---------------------+
| |
v v
[RTSP/RTMP流] [AI 推理/算法模型]
二、 深度解析:X86/ARM 与 GPU/NPU 的异构兼容
2.1 指令集解耦:Docker 的跨平台魔法
YiheCode Server 的核心在于支持 Docker 部署。无论是 X86 服务器还是 ARM 边缘盒子,只要安装了 Docker 环境,就能运行统一的业务逻辑镜像。

- Java 层面:作为跨平台语言,Java 代码(Spring Boot)在编译后生成字节码,由不同架构的 JVM 解释执行,天然支持跨平台。
- C++ 层面:对于性能要求极高的流媒体服务(ZLMediaKit)和算法推理引擎,项目提供了针对不同架构的编译脚本。开发者只需在对应架构的机器上编译一次,或使用交叉编译工具链,即可生成适配的二进制文件。
2.2 算力调度:算法与硬件的动态绑定
平台内置了算法商城功能,支持动态加载模型。这意味着你可以根据硬件配置,灵活分配算力:
| 硬件环境 | 适用场景 | 算法配置策略 |
|---|---|---|
| NVIDIA GPU | 中心机房、高性能需求 | 部署 YOLOv8/v9 等大模型,进行多路并发推理 |
| 国产 NPU (ARM) | 边缘侧、低功耗场景 | 部署 RKNN、OM模型,进行轻量级检测(如安全帽、烟火) |
| CPU 服务器 | 无卡环境、纯转发 | 仅负责信令交互和流媒体转发,不运行算法 |
2.3 源码级适配示例
对于需要深度定制的集成商,你可以直接修改源码中的 Dockerfile 来适配特定硬件。例如,为 ARM 设备构建镜像时,你需要指定基础镜像:
dockerfile
# Dockerfile.arm
# 使用 ARM 架构的基础镜像
FROM arm64v8/openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
# 通过环境变量或配置文件指定底层推理引擎的路径
ENV INFERENCE_ENGINE_PATH=/usr/lib/librknn_api.so
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
三、 业务闭环:从接入到告警的全链路
3.1 统一接入层
平台支持 RTSP/RTMP/GB28181 协议,无论底层硬件是海康、大华还是宇视,都能通过标准协议拉流。边缘盒子负责将不同品牌的视频流统一转换为 RTMP 推流至中心的 ZLMediaKit 服务器。
3.2 智能告警与数据回流
当边缘端的 AI 算法(如"未戴安全帽")触发告警时,系统通过 MQTT 或 HTTP API 将结构化数据上报至中心服务器。
java
// 伪代码:边缘端告警上报接口
@PostMapping("/api/v1/alarm/push")
public Result pushAlarm(@RequestBody AlarmDTO alarm) {
// 1. 接收边缘端传来的告警信息(包含截图URL、时间、类型)
log.info("Received alarm from device: {}", alarm.getDeviceId());
// 2. 业务规则判断(如去重、频率限制)
if (alarmService.isFrequent(alarm)) {
return Result.fail("告警过于频繁,已限流");
}
// 3. 存储告警数据并触发通知(飞书、钉钉、语音)
alarmService.handle(alarm);
return Result.success();
}
四、 总结
YiheCode Server 通过源码开放 和容器化设计 ,成功解决了安防行业"一地一策"的硬件适配难题。对于寻求私有化部署的技术决策者来说,这套架构的价值在于:
- 硬件零绑定:不再受限于特定的芯片厂商,无论是英伟达还是国产信创芯片,都能纳入统一管理。
- 低成本迁移:基于 Docker 的特性,系统可以像搭积木一样在不同环境中快速迁移。
- 自主可控:拥有全栈源码,意味着你可以针对特定的业务逻辑(如私有协议解析)进行深度修改,而不必受制于原厂排期。
这不仅是一个视频监控系统,更是一个面向未来的异构计算管理平台 。

🚀 演示环境与源码获取
如果您希望评估该平台在异构环境下的表现,欢迎访问以下资源:
- 开源地址 :Gitee - YiheCode Server
架构师建议 :
在部署时,建议先在 X86 环境下跑通业务流程,然后利用 Docker 的
--platform参数或在 ARM 机器上重新构建镜像。重点关注算法插件层与底层硬件驱动的兼容性。欢迎在评论区交流您在国产化替代中遇到的硬件适配问题。