引言:算力碎片化是 AI 落地的“阿喀琉斯之踵”

在将 AI 算法应用于实际安防场景时,作为架构师,我们往往面临着严峻的“算力割裂”问题。

客户的现场环境极其复杂:数据中心可能部署着高性能的 NVIDIA GPU 服务器用于处理海量视频;而前端边缘侧,为了节省带宽和响应延迟,又不得不使用基于 ARM 架构 的边缘计算盒子(如基于 Sophon、Rockchip 等 NPU 芯片);同时,还有一些利旧项目只能使用通用的 X86 工业主机。传统的监控软件往往只能针对单一环境开发,导致我们需要维护多套代码分支,开发和运维成本呈指数级上升。
在这里插入图片描述

YiheCode Server 提供了一种极具前瞻性的解决方案。作为一个企业级 AI 视频管理平台,它通过微服务架构容器化技术,成功实现了从云端 GPU 到边缘端 NPU 的全场景覆盖。它打通了各大芯片厂商间的壁垒,实现了芯片、算法、应用的全流程解耦。配合其私有化部署能力,它能帮助企业将开发与适配成本降低约 95%。本文将深入解析其如何实现“一次开发,到处运行”的异构计算架构。


一、 核心架构:基于 Spring Boot 与容器化的微服务设计

参考 Gitee 仓库的技术栈信息,YiheCode Server 采用了标准的 Java Spring Boot 2.7 + Vue 2.6 技术栈,并推荐使用 Docker 进行部署。这种架构是实现跨平台兼容的基石。

1.1 业务逻辑与算力层的物理解耦

平台的设计精髓在于将业务管理算力消耗进行了彻底分离:

  • 业务层 (Java/Vue):负责设备管理、用户交互、告警推送等。由于 Java 的“Write Once, Run Anywhere”特性,配合 Docker 镜像,它能完美运行在 X86 和 ARM 服务器上。
  • 算力层 (边缘/推理):负责视频解码、AI 推理。这部分被下沉到了具体的硬件节点(边缘盒子或 GPU 服务器)。
1.2 容器化部署策略

文档中提到的“私有化部署体验方式”要求安装 Docker 和 Docker-compose。这种容器化封装屏蔽了底层操作系统的差异,无论是 CentOS、Ubuntu 还是国产操作系统,只要支持 Docker,即可运行平台的核心服务。


二、 异构计算实战:GPU 云端与 NPU 边缘端的协同

YiheCode Server 的“边缘平台”管理模块,实际上是其异构计算架构的控制中枢。
在这里插入图片描述

2.1 边缘节点的 ARM + NPU 架构

在边缘侧,平台支持管理搭载了特定 NPU 芯片(如 1684X 等)的 ARM 盒子。

  • 技术逻辑:边缘盒子负责直接拉取 IPC 的 RTSP 流,在本地进行解码和 AI 推理(利用 NPU 的高能效比),仅将结构化数据(如“发现未戴安全帽”)和告警截图回传给中心平台。
  • 配置示例
    # docker-compose-edge.yml (边缘盒子配置)
    version: '3'
    services:
      yihe-edge-agent:
        image: yihecode/edge-agent:arm64-v8 # 针对ARM架构的镜像
        container_name: yihe_edge
        volumes:
          - ./config:/app/config
          - /dev:/dev # 挂载设备文件以访问NPU驱动
        environment:
          - PLATFORM_ARCH=ARM64
          - NPU_DRIVER=sophgo # 指定NPU驱动类型
        restart: unless-stopped
    
  • 价值:这种架构避免了将高码率视频流全部回传中心,极大节省了网络带宽,同时利用 NPU 实现了低功耗的实时监控。
2.2 中心节点的 X86 + GPU 架构

在中心侧(云端或本地服务器),平台可以利用 X86 服务器的强大算力和 NVIDIA GPU 进行大规模的视频汇聚、录像存储(MinIO)以及复杂的跨镜追踪计算。

  • 场景:处理那些边缘侧无法覆盖的通用算法,或者进行全量的人脸/车辆特征比对。

三、 流媒体底座:ZLMediaKit 的跨平台支撑

在异构环境中,视频流的处理是最容易出现兼容性问题的环节。YiheCode Server 底层集成了 ZLMediaKit,这是一个基于 C++11 开发的高性能流媒体服务框架。

3.1 跨平台编译能力

ZLMediaKit 的核心优势在于它能被编译运行在任何主流操作系统和 CPU 架构上(Linux, Mac, Windows, ARM, MIPS)。

  • 作用:无论是在 X86 服务器上作为流媒体分发中心,还是在 ARM 边缘盒子上作为轻量级拉流代理,ZLMediaKit 都能提供稳定的 RTSP/RTMP/GB28181 协议支持。
3.2 智能负载均衡

根据仓库文档中的“新系统架构”图,平台支持配置多个 ZLM 节点。

  • 架构:摄像头新增时,系统会自动按负载最小原则指定到一个 ZLM 节点。
  • 效果:在混合部署环境中,我们可以将高性能的 X86 机器配置为 ZLM 集群节点,专门处理高并发的拉流和分发任务,而 ARM 节点只处理本地的几路视频,实现了资源的最优利用。

四、 总结

YiheCode Server 在架构设计层面展现了极高的工程成熟度。

它利用 Docker 容器化技术解决了X86 与 ARM 的指令集差异,利用微服务解耦实现了GPU 与 NPU 的算力混合调度。这种“软硬解耦”的架构,配合源码交付的模式,让集成商能够灵活应对从几路的小型园区到数千路的大型工厂的各种复杂硬件环境。
在这里插入图片描述

对于寻求全硬件适配、且需要定制化部署策略的技术决策者来说,这套基于标准开源技术栈(Java + C++ + Docker)的方案,无疑是目前开源领域最具扩展性的选择。


演示环境与部署指南

如果您希望测试该平台在不同硬件环境下的兼容性,请参考以下信息:

  • 技术栈:Java 17+, Spring Boot 2.7, Vue 2.6, Docker, ZLMediaKit
  • 在线体验 Demo: (扫码获取测试账号,体验边缘平台管理)

架构师建议
在进行混合部署时,建议采用“中心-边缘”两级架构。

  1. 中心端:使用 X86 服务器部署 MySQL, Redis, MinIO (存储录像) 和 Web 服务。
  2. 边缘端:在 ARM 盒子上仅部署 ZLMediaKit 和 Agent 服务,通过 API 与中心端通信。
  3. 网络:确保边缘端能访问中心端的 API 端口(如 8005),但视频流(RTSP/RTP)尽量在局域网内闭环,不经过中心转发,以降低延迟。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐