项目介绍:后端使用 SpringCloud 为核心框架,主要有算法调度模块、识别汇总模块、摄像头模块、权限
模块、直播模块、网络通信模块、摄像头管理模块、报表模块
识别汇总模块,高并发场景下使用防重令牌加 Redis 实现无侵入式解决提交识别结果的接口幂等性问题
千万级别数据库优化,搭建主从架构并使用 ShardingJDBC 实现分表。算法识别结果以线性趋势,稳定持
续高速的增加数据量,单表结构无法满足业务需求。因此需要作出优化,首先在垂直方向对业务进行拆分
将该部分业务单独抽离出一个服务,然后在水平上进行逻辑拆分,分散数据量。
存在一台服务器仅能支撑三路图像推理类算法的情况,防止出现开启过多导致服务器宕机的调度不合理情
况,使用信号量分布式锁解决该并发场景下的资源竞争问题
RabbitMq+HTTP 实现跨语言算法调度,日志落库,并使用建造者模式构造自定义消息。多语言编写的各
个算法,通过该平台进行调度,并结合业务逻辑分发为不同的消息类型,由具体的消费者进行异步调度。
解决高并发场景下缓存数据一致性问题。调度算法的入参是一些不太会经常修改的数据,故将其放置缓存
中,加快查询速度,如果这些数据被修改,使用延迟双删策略,来保证数据的一致性
使用 NETTY 优化网络通信,创建通信逻辑表,实现动态的添加通信链路及报文,并进行快速匹配。现场
存在通过硬件 PLC 信号开关指定算法的情景,且通信内容是提前约定好固定的,为了增强该功能的拓展性,
选择了 NETTY 便于后期增加通信链路,且基于数据表结合缓存来实现功能报文的匹配,后续无论是增加
链路异或增加报文,直接在表中增加行记录即可,无须修改代码。
使用 RabbitMq 结合数据库解决分布式事务问题
基于 RBAC 模型使用 Security+JWT 结合 Redis 实现系统登陆以及权限校验
搭建线上环境、部署运行项目及后续运维维护