
1) 【一句话结论】
采用微服务+分布式架构,通过负载均衡、消息队列、缓存、数据库分片等组件,结合AI模型服务化部署,实现百万级用户并发访问的高可用与可扩展性。
2) 【原理/概念讲解】
老师讲解:系统需拆分为独立微服务(如用户服务、视频上传服务、AI分析服务、结果存储服务),通过负载均衡(如Nginx/LVS)分发请求,避免单点压力;消息队列(如Kafka/RabbitMQ)解耦服务间强依赖,异步处理视频分析任务;缓存(如Redis)缓存热点数据(用户信息、分析结果),减少数据库压力;数据库分片(按用户ID/时间分片)水平扩展存储能力。AI模型封装为服务(如TensorFlow Serving),支持动态扩容。
类比:系统像大型连锁超市,用户服务是收银台,视频上传是进货部,AI分析是质检部,结果存储是仓库。负载均衡像分号机分发顾客,消息队列像快递公司解耦任务,缓存像货架热销商品,数据库分片像仓库分区存储。
3) 【对比与适用场景】
| 架构模式 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 单体架构 | 所有功能模块集中在一个应用中 | 代码耦合度高,扩展困难 | 小规模系统,开发周期短 | 难以水平扩展,故障影响全局 |
| 微服务架构 | 按业务功能拆分为独立服务,独立部署 | 代码解耦,独立扩展 | 大规模系统,高并发,复杂业务 | 服务间通信复杂,需统一管理 |
4) 【示例】
请求流程(用户上传视频分析):
伪代码:
用户上传视频 → 负载均衡 → 视频上传服务
视频上传服务:
1. 存储视频到OSS
2. 生成任务ID → 发送消息到Kafka
AI分析服务:
1. 消费Kafka消息(任务ID)
2. 调用模型服务(推理接口)获取结果
3. 将结果存入Redis(缓存)和数据库(分片)
用户查询结果:
1. 查Redis(缓存)→ 有则返回
2. 无则查数据库 → 返回结果
5) 【面试口播版答案】
各位面试官好,关于设计百万级用户并发访问的AI视觉分析系统,我的核心思路是采用微服务+分布式架构,通过负载均衡、消息队列、缓存、数据库分片等组件,结合AI模型服务化,实现高并发、高可用和可扩展。具体来说,系统拆分为用户服务、视频上传服务、AI分析服务、结果存储服务等微服务,通过Nginx负载均衡分发请求,避免单点故障。视频上传后,通过Kafka消息队列异步调度AI分析,解耦服务间的强依赖。热点数据(如用户信息、分析结果)用Redis缓存,减少数据库压力。数据库按用户ID分片,水平扩展存储能力。AI模型封装为服务(如TensorFlow Serving),支持动态扩容,满足并发需求。整体架构确保百万级用户并发时,系统响应稳定,故障可快速恢复。
6) 【追问清单】
7) 【常见坑/雷区】