项目需求:基于视频监控,调用摄像头,绑定算法程序,然后生成告警图片,再生成日志,然后存储到SATA硬盘的过程,配置算法程序,主要业务模块包括摄像头管理、算法管理、日志管理、任务管理和配置管理。
技术架构:使用go-zero框架开发,结合mysql、etcd、redis、grpc、proto、websocket、grafana、Prometheus、node_exporter、docker、vue3和nginx。
1. 开发硬件管理系统,采用主控管理12个子卡(主控rk3588芯片,子卡为算能bm1688或超星nm10)。
2. 使用go-zero框架和goctl快速生成代码文件,配合redis、mysql和etcd动态管理子卡服务。
3. 利用grafana和Prometheus、node_exporter搭建监控数据页面,并嵌入到系统中。
4. 使用Dockerfile构建docker镜像,并编写shell初始化安装程序。
5. 实现大文件上传、分片上传及校验分片的md5sum值,并合并分片为大文件。
6. 根据硬件启动顺序进行定时心跳检测,动态连接子卡程序。
7. 使用Vue3开发前端web管理界面。
8. 使用golang-jwt/jwt生成token,并缓存到redis,配置用户Id及退出机制,修改密码时同步失效。
9. 捕获信号量,实现硬件恢复出厂设置功能,并通过websocket进行前端弹窗提示。
10. 配置局域网IP及网关,设置子管掩码等。
11. 对接魔方智盒算法SDK,使用sync.WaitGroup异步同时请求12个子卡,提升性能。