一、立项背景与目标
痛点:传统网络设备(OLT/ONU/FTTR)只能局域网管理,远程运维困难;多系统割裂,认证、计费、AI训练各自为政。
目标:打造一套企业级远程网管平台,支持设备批量操作、实时监控、自动告警,集成认证计费与AI训练能力,覆盖Web/H5/APP三端,国内国际双版本,实现一站式智能运维。
二、核心功能模块
设备通信与管理:基于MQTT实现设备双向指令下发与状态上报,WebSocket实时推送,支持远程升级、配置批量下发。
多租户后台管理:组织-人员-角色权限管控,租户隔离;后台涵盖设备关联、合同审批、APP商品管理等。
Port认证与计费(RADIUS):支持手机号/账号/微信等认证方式,时长控制与自动断网,话单记录供对账。
AI算法训练平台:集成YOLOv5/MMDetection,支持数据集上传、在线标注、模型训练与自动分发至设备端。
三、业务流程简示
设备上线与配置:设备上电注册 → 平台存储状态 → 管理员选模板下发 → 设备执行并回传结果 → 前端实时展示。
告警处理:设备异常上报告警 → 消息队列分发 → 多渠道推送(邮件/短信/APP/弹窗)→ 运维处理并更新状态。
WiFi认证计费:用户连WiFi → 跳转认证页 → 验证身份 → 记录在线计时 → 时长耗尽自动断网 → 生成话单。
AI模型训练下发:选择模型 → 上传图片数据集 → 在线标注 → 提交训练 → 实时看进度 → 完成后FTP分发设备 → 设备升级生效。
一、整体架构设计
采用“分层解耦 + 异步消息驱动”的微服务架构,自上而下分为四层:接入层(Nginx负载均衡,处理HTTPS与WebSocket长连接)、业务层(拆分为设备管控、认证计费(RADIUS)、AI训练、后台管理四个独立模块,通过Spring Security + JWT统一鉴权,模块间Feign调用)、中间件层(EMQX集群处理MQTT设备接入,RocketMQ异步解耦告警,Redis扛高频查询与分布式锁)、数据层(MySQL存事务数据,MongoDB存海量日志,MinIO存非结构化文件)。设计原则:状态与指令分离(状态缓存Redis,指令走MQTT QoS1),读写分离,多租户tenant_id物理隔离。
二、模块职责与技术栈
设备通信网关:EMQX、MQTT、FTP/SFTP;实时推送:Netty+WebSocket、Redis Pub/Sub;告警中控:RocketMQ、JavaMail、短信、Line API;认证计费:JRadius、Netty UDP、Redis原子操作;AI训练调度:MinIO、MMDetection REST API、SSE;后台管理:Spring Boot、MyBatis-Plus、Knife4j。
三、个人负责模块与量化成果
作为Java后端核心开发,主导了设备通信网关、RADIUS计费及AI训练调度三个模块:设备通信实现5000+设备(OLT/ONU/FTTR)并发双向通信,指令下发平均耗时≤120ms,状态查询QPS峰值3000+(Redis快照);告警中控RocketMQ消费TPS峰值500+,推送到达率99.7%(短信/邮件/APP弹窗);RADIUS计费支持1000+并发认证,时长耗尽断网延迟≤3s,日增话单5万条;AI训练链路完成10GB级数据集断点续传,训练模型自动分发至200+设备,成功率98.5%;代码贡献累计提交4.2万行核心代码,单元测试覆盖率78%,上线后模块零故障。
四、难点与解决方案
难点1:MQTT频繁抖动引发状态风暴。弱网下设备上下线频繁,每分钟上千条状态消息淹没推送。解决方案:在EMQX配置keepalive和遗嘱消息;后端引入Redis状态版本号,仅状态真实变化才触发推送和入库,并用令牌桶限流,无效流量过滤90%。
难点2:RADIUS UDP高并发丢包。JRadius同步阻塞导致100+并发认证超时。解决方案:改用Netty非阻塞UDP接收端;时长数据从MySQL迁至Redis原子递减,认证响应从800ms降至150ms,支持1000+并发。
难点3:切片上传MD5校验不一致。并发乱序写入导致合并后MD5与原始不符。解决方案:前端携带序号和总片数,服务端按序合并,Redis记录已收切片,全部收齐后校验。失败时返回缺失列表支持断点续传