51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计一个支持千万级用户、实时AI作业批改的系统,请阐述系统架构、关键技术选型(如AI模型部署、消息队列、数据库设计),以及如何保证低延迟和高可用性?

作业帮教育科技(北京)有限公司26届-作业帮校园大使[产研]难度:中等

答案

1) 【一句话结论】
针对千万级用户实时AI作业批改系统,核心通过微服务拆分实现解耦,结合分布式消息队列异步处理、AI模型边缘+云端协同部署、数据库分库分表与读写分离,结合负载均衡、熔断降级及监控告警,确保系统低延迟(目标延迟<200ms)和高可用(99.9%以上)。

2) 【原理/概念讲解】

  • 微服务拆分:将系统拆为前端提交、AI批改、结果反馈等独立服务,每个服务独立部署、扩展,提高系统灵活性和容错性(如用户提交作业时,前端服务快速响应,AI批改服务异步处理,避免阻塞用户)。
  • 分布式消息队列(如Kafka):用于异步解耦,用户提交作业后,先写入消息队列,批改服务异步消费,减少主流程延迟(类比:快递员把包裹先放快递柜,用户取包裹时再处理,减少等待时间)。
  • AI模型部署:边缘节点部署轻量模型(如作业批改预训练模型,通过剪枝、量化为INT8),处理实时请求(延迟<100ms);云端部署复杂模型(如深度学习模型),处理复杂任务,结果通过消息队列同步(如用户在本地APP快速得到批改结果,复杂任务交给云端处理,再返回)。
  • 数据库设计:作业数据存储在分库分表的MySQL(读写分离),常用数据缓存到Redis(减少数据库压力),按用户ID哈希分库(避免冷热不均,如用户A的所有作业都在一个库),按作业时间分表(如按月分表,2024年1月数据在表t_202401),读写分离实现主从复制,延迟控制在10ms内(主库写,从库读,缓存热点数据,如用户信息、常用模型参数)。

3) 【对比与适用场景】

  • 消息队列选型(Kafka vs RabbitMQ)
    | 特性 | Kafka | RabbitMQ | 适用场景 | | --- | --- | --- | --- | | 事务支持 | 支持(确保消息被消费前不丢失) | 支持(但复杂) | 实时数据流、大规模消息(如千万级作业提交) | | 延迟 | 低(微秒级) | 中等(毫秒级) | 高吞吐、低延迟场景 | | 扩展性 | 高(支持大规模分区,如1000个分区) | 中等(中等规模分区) | 需要水平扩展的场景 | | 副本机制 | 副本因子3,保证数据持久化 | 副本因子2,保证数据可靠性 | 高可用场景 |
  • 数据库分库分表策略
    | 策略 | 分库分表依据 | 优点 | 注意点 | | --- | --- | --- | --- | | 按用户ID哈希分库 | 用户ID取模(如user_id % 8) | 均匀分布,避免单库压力 | 可能导致冷热不均(如某个用户频繁提交作业,导致该库压力过大) | | 按时间分表 | 作业提交时间(如按月分表,t_202401) | 分离冷热数据,提高查询效率 | 需要定期清理旧表(如超过一年的数据归档) |
  • AI模型轻量化方法
    | 方法 | 具体操作 | 效果 | 适用场景 | | --- | --- | --- | --- | | 模型剪枝 | 去除冗余连接(如保留重要权重) | 减少模型参数(如从100M到10M) | 处理实时请求的边缘节点 | | 模型量化 | 将浮点数转换为INT8(如TensorFlow Lite) | 减少计算量,提升推理速度 | 移动端或边缘设备 |

4) 【示例】

  • 用户提交作业流程(HTTP请求示例)
    POST /api/submit_homework
    Content-Type: application/json
    {
      "user_id": "user_001",
      "homework_id": "hw_123",
      "content": "题目内容..."
    }
    
  • 消息队列交互(Kafka示例)
    生产者(用户提交服务):
    # 生产者发送作业提交消息
    kafka_producer.send(
        topic="homework_submit",
        value=json.dumps({
            "user_id": "user_001",
            "homework_id": "hw_123",
            "content": "题目内容..."
        })
    )
    
    消费者(AI批改服务):
    # 消费者处理作业并返回结果
    kafka_consumer.subscribe("homework_submit")
    while True:
        msg = kafka_consumer.poll()
        if msg:
            homework = json.loads(msg.value)
            # 调用边缘模型处理(轻量模型)
            result = edge_model.process(homework["content"])
            # 将结果发送到结果主题
            kafka_producer.send(
                topic="homework_grade",
                value=json.dumps({
                    "user_id": homework["user_id"],
                    "homework_id": homework["homework_id"],
                    "grade": result
                })
            )
    
  • 数据库分库分表示例(MySQL分表)
    分库:db_user_0, db_user_1, ..., db_user_7(用户ID % 8)
    分表:db_user_0.t_homework_202401(2024年1月数据),db_user_0.t_homework_202402(2024年2月数据)
    读写分离配置:
    主库:db_user_0(写操作)
    从库:db_user_0_slave(读操作,缓存热点数据如用户信息)

5) 【面试口播版答案】
面试官您好,针对千万级用户实时AI作业批改系统,我的设计核心是通过微服务拆分、分布式消息队列、AI模型边缘+云端协同、数据库分库分表与读写分离,实现低延迟和高可用。首先,系统拆分为前端提交、AI批改、结果反馈等微服务,通过负载均衡(如Nginx的round-robin算法)分发请求。用户提交作业后,先写入Kafka消息队列(分区数1000,副本因子3),批改服务异步消费,避免主流程阻塞。AI模型采用边缘节点部署轻量模型(剪枝、量化为INT8),处理实时请求(延迟<100ms);云端部署复杂模型,处理复杂任务,结果通过消息队列同步。数据库方面,作业数据存储在分库分表的MySQL(按用户ID哈希分库,按月分表),读写分离(主从延迟10ms内),常用数据缓存到Redis(减少数据库压力)。通过熔断降级、监控告警(如延迟>200ms或错误率>1%时告警),保证系统高可用。这样既能应对千万级用户的高并发,又能保证低延迟的批改体验。

6) 【追问清单】

  • 问:如何优化AI模型的延迟?
    回答要点:模型轻量化(剪枝、量化),边缘部署(减少网络延迟),模型预热(启动时预加载模型到边缘节点)。
  • 问:消息队列的可靠性如何保证?
    回答要点:消息持久化(Kafka日志持久化),事务支持(确保消息被消费前不丢失),重试机制(消费失败后重试)。
  • 问:数据库分库分表的具体策略?
    回答要点:按用户ID哈希分库,按作业时间分表(如按月分表),读写分离(主库写,从库读,缓存热点数据)。
  • 问:如何处理系统中的热点数据?
    回答要点:使用Redis缓存热点数据(如用户信息、常用模型参数),设置合理过期时间,结合缓存穿透/雪崩解决方案(如布隆过滤器、限流)。
  • 问:系统如何保证数据一致性?
    回答要点:数据库事务(ACID),消息队列事务支持(确保数据写入数据库和消息队列的原子性),最终一致性保证(通过补偿机制处理失败情况)。

7) 【常见坑/雷区】

  • 坑1:直接用单机部署AI模型,导致延迟高(边缘节点响应慢)。
  • 坑2:消息队列选择RabbitMQ处理高吞吐,导致延迟过高(Kafka更适合大规模消息)。
  • 坑3:数据库分库分表设计不合理(如按时间分表但未考虑查询效率,导致查询时需要扫描多个表)。
  • 坑4:未考虑缓存击穿问题,导致热点数据缓存失效时,大量请求访问数据库(如设置布隆过滤器,限流)。
  • 坑5:系统监控不足,无法及时发现性能瓶颈(如缺少关键指标监控,如QPS、P99延迟、数据库连接池状态)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1