AI负载均衡
2024-12-16 17:14:29 0 举报
AI负载均衡
作者其他创作
大纲/内容
接收处理事件
存储到待分析队列(队列长度根据AI_INFERENCE:MAX_NUMBER 数量合计)
删除正在分析缓存
Redis
遍历观察者
是否存在正在分析视频标识
否
是否下载成功
调用http更新服务记录状态为正在分析
接收-分析结果事件
是
处理下一个
查询待分析视频
发送-视频分析结果事件
推理信息是否为空
更新分析结果
平台
AI_INFERENCE:VIDEO:INFERENCE_ING:{fileName}
调用http下载视频文件
转换分析结果为内部类
异步执行
处理模块
记录AI开始分析时间
注册监听top - > video_req:{IP}
处理分析结果
调用Shell脚本,启动AI服务
是不做处理
AI_INFERENCE:QUEUE_UP:WAIT_INFERENCE:PRENTA取出2个需要分析的fileId
根据文件id,更新服务过程记录->AI分析超时
页面推送/定时任务查询待分析的视频
取出待下载视频id,执行下载
top - > video_req:{IP} info ->{ \"video_uri\":\"视频地址\
缓存正在分析标识(根据视频大小设置过期时间)
server_info
服务启动设置服务可以处理的数量(根据磁盘空间计算)
将3个待分析FileId存入到AI_INFERENCE:QUEUE_UP:WAIT_INFERENCE:CHILDER:{IP}
Map集合 K-AI_INFERENCE:VIDEO:INFO field-fileId v-文件信息
AI服务
发送-视频分析事件
ZSET数据结构K-AI_INFERENCE:QUEUE_UP:WAIT_INFERENCE:PRENTAV-fileId
redis
加分布式锁
是否为空
接收分析完成事件
接收到分析视频事件
取出下一个
Map集合 K-AI_INFERENCE:VIDEO:INFO field-fileId v-文件信息
结果是否为空
调用http创建服务过程记录
删除该文件信息
AI分析
ZSET数据结构K - AI_INFERENCE:QUEUE_UP:WAIT_INFERENCE:CHILDER:{IP}V-fileId
提交视频分析
通知执行下一个AI_INFERENCE:SERVICE:HANDLE_NEXT:{IP}
监听缓存过期事件
待分析的FileId
接收处理下一个事件
从redis中获取服务人员信息
执行后置方法
AI服务修改点
不存在 - 缓存正在分析标识
文件是否在磁盘
AI服务修改点
是否有正在分析的缓存
发送-执行下一个事件
发送处理事件
执行分析流程
缓存下一个正在分析
缓存过期
top - > video_response:{IP} info ->{ \"video\": { \"Name\": \"视频地址\
定时检查是否存在正在分析标识
保存数据
缓存待分析文件信息
从结果中,获取文件名
缓存待分析文件Id
创建服务过程记录
不存在,缓存正在分析标识
发送-分析视频事件
开始分析
清空重试次数缓存
top -> handleAIInference
组装ai分析结果
更新服务记录状态为正在分析
存储到待下载视频队列
删除队伍中该FileId
是否是正在分析的视频
Map数据结构K - AI_INFERENCE_VIDEO_OVER:{DATE}field - 文件名称v - 文件id
是否已重试3次
从缓存中获取视频文件信息
ZSET数据结构K - AI_INFERENCE:QUEUE_UP:VIDEO_DOWNLOAD:{IP}V-fileId
分析完成
top -> server_info:{IP}
推送所有服务人员信息
保存结果为空
接收-执行下一个事件
接收-视频分析事件
top - > video_response:{IP} info ->{ \"video\": { \"Name\": \"视频地址\
基本流程
Map数据结构K - AI_INFERENCE:MAX_NUMBER field-ip地址 v-数量
调用Shell,检查AI进程是否存在
文件后缀是否是MP4
收藏
0 条评论
下一页