news 2026/5/13 14:00:05

基于Spring AI的分布式在线考试系统-事件处理架构(续)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Spring AI的分布式在线考试系统-事件处理架构(续)

一、分布式在线考试系统完整架构图(细化版)

以下是包含服务分层、中间件、数据流向、事件通信的完整架构图,直观展示各组件的交互关系:

发布本地事件:考生进入考试

发送MQ事件:考生提交试卷

消费MQ事件:触发AI评分

发布本地事件:AI评分开始

发送MQ事件:评分完成

消费MQ事件:发送成绩通知

消费MQ事件:统计考试数据

考生端/管理端
Web/H5/小程序

Nginx
反向代理/负载均衡

Spring Cloud Gateway
路由转发/鉴权/限流

考试服务
核心业务:考试创建/进入/提交
技术:Spring Event+MQ生产者

题库服务
核心业务:题库CRUD/AI出卷
技术:MyBatis-Plus+Spring AI

用户服务
核心业务:用户/权限/资格审核
技术:Redis+JWT

评分服务
核心业务:AI评分/人工评分
技术:Spring AI+MQ消费者

通知服务
核心业务:短信/站内信/邮件
技术:MQ消费者+第三方API

统计服务
核心业务:数据统计/AI分析
技术:Spring AI+MQ消费者

Nacos
注册中心+配置中心

RocketMQ
分布式事件通信
Topic:EXAM_EVENT/SCORE_EVENT/NOTIFY_EVENT

Redis 7.0
缓存:题库/试卷
分布式锁:考试提交
限流器

MySQL 8.0
主库:考试/答题数据
分库分表:Sharding-JDBC(可选)

MinIO
对象存储:试题附件/答题截图/AI报告

Spring AI 1.0+
对接:智谱AI/文心一言/OpenAI
能力:出卷/评分/分析

监控运维层
Prometheus+Grafana:指标监控
SkyWalking:全链路追踪
XXL-Job:定时任务

考试服务本地逻辑
状态初始化/题库加载

评分服务本地逻辑
Spring AI调用大模型评分

架构图核心说明:
  1. 分层设计:严格遵循「客户端→网关→核心服务→中间件→持久化」的经典分布式分层架构,职责边界清晰;
  2. 事件通信:红色标注的RocketMQ是分布式事件通信的核心,所有跨服务事件(如提交试卷→评分→通知)均通过MQ流转;
  3. AI能力集成Spring AI作为独立能力层,对接各AI大模型,所有AI相关逻辑(评分/出卷/分析)均由专门的服务调用,与核心业务解耦;
  4. 高可用组件Nginx做负载均衡、Sentinel(网关/服务内)做限流、Redis做缓存/分布式锁、MQ做消息可靠性保障,覆盖考试高峰期的高并发需求。

二、核心业务时序图(考生提交试卷→AI评分→成绩通知)

以「考生提交试卷触发AI评分+成绩通知」为例,绘制时序图(Mermaid语法),展示「Spring Event+MQ」的完整执行流程,包含本地事件、MQ消息、AI评分、跨服务通知的全链路:

SpringAISpringAI[Spring AI+大模型]MySQLRedis通知服务评分服务RocketMQ考试服务考生端SpringAISpringAI[Spring AI+大模型]MySQLRedis通知服务评分服务RocketMQ考试服务考生端若AI评分失败1. 发送score:error MQ消息2. 触发人工评分流程提交试卷请求(userId=1001, examId=2001)1. 校验考生状态/试卷完整性2. 保存考生答题数据,更新考试状态为「已提交」3. 发布本地事件(如:更新考试统计快照)4. 生成事件ID(eventId=xxx),做幂等标记(SETNX)5. 发送MQ消息(Topic=EXAM_EVENT, Tag=exam:submit消息体=ExamSubmitEvent)确认消息发送成功返回「提交成功」推送exam:submit消息1. 幂等校验(检查eventId是否已消费)2. OpenFeign远程调用:获取考生答题数据3. 发布本地事件(AIScoreStartLocalEvent)4. 调用大模型(构造评分提示词,请求AI评分)返回AI评分结果(score=90, desc=xxx)5. 保存评分结果,更新评分状态为「已完成」6. 发送MQ消息(Topic=SCORE_EVENT, Tag=score:complete消息体=ScoreCompleteEvent)推送score:complete消息1. 幂等校验(检查eventId是否已消费)2. 组装通知内容(考生姓名+成绩+考试名称)3. 发送短信/站内信通知(成绩已发布)4. 保存通知记录
时序图核心说明:
  1. 核心流程:考生提交试卷 → 考试服务完成本地业务+发送MQ → 评分服务消费MQ+AI评分+发送MQ → 通知服务消费MQ+发送通知;
  2. 幂等性:每一步MQ消费前均做幂等校验(基于eventId),避免重复评分、重复发通知;
  3. 解耦设计
    • 考试服务不直接调用评分服务,仅发送MQ消息,无需关注评分逻辑;
    • 评分服务完成AI评分后,仅发送MQ消息,无需关注通知逻辑;
  4. 异步特性:AI评分、通知发送均为异步执行,考生提交试卷后立即返回结果,提升用户体验;
  5. 本地事件复用:评分服务消费MQ后,先转换为本地Spring Event再执行评分逻辑,解耦MQ消费和业务逻辑。

三、关键补充说明

1. 架构图核心要点
  • 服务边界:每个微服务职责单一(考试服务仅处理考试核心流程,评分服务仅处理评分),符合「高内聚、低耦合」的微服务设计原则;
  • 中间件定位
    • Nacos:统一管理服务注册和配置,所有服务启动时自动注册,配置动态刷新;
    • RocketMQ:分布式事件通信的唯一通道,替代硬编码的远程调用;
    • Redis:核心缓存+分布式锁,解决考试高峰期的数据库压力和并发问题;
  • AI能力集成:Spring AI作为独立能力层,所有服务通过标准化API调用AI能力,支持无缝切换大模型(如从智谱AI切换为文心一言)。
2. 时序图核心要点
  • 同步vs异步:考生提交试卷的核心流程(保存数据、更新状态)是同步的,保证数据一致性;跨服务的评分、通知是异步的,提升系统吞吐量;
  • 可靠性保障
    • 生产者(考试服务):MQ消息同步发送+重试,确保消息不丢失;
    • 消费者(评分/通知服务):消费失败后自动重试,多次失败进入死信队列,人工介入处理;
  • 监控埋点:在MQ发送/消费、AI评分、核心数据库操作处添加埋点,接入SkyWalking实现全链路追踪,便于定位问题(如考生提交试卷后未评分的问题)。

总结

  1. 架构图价值:清晰展示了从客户端到微服务、中间件、AI层的完整链路,明确了「Spring Event+MQ」的事件通信在架构中的核心位置,以及各组件的职责边界;
  2. 时序图价值:还原了「考生提交试卷→AI评分→成绩通知」的核心业务流程,直观体现了「本地事件解耦服务内、MQ解耦服务间」的设计思路,以及幂等性、异步性、可靠性的落地方式;
  3. 核心设计原则
    • 分布式事件通信:MQ是跨服务事件的唯一通道,替代硬编码的Feign调用;
    • 本地事件复用:服务内逻辑通过Spring Event解耦,降低代码耦合度;
    • AI能力解耦:AI评分/出卷等逻辑通过MQ事件触发,与核心业务分离,便于扩展。

这两张图完整覆盖了分布式在线考试系统的静态架构动态流程

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 12:06:03

java.lang.RuntimeException: Image generation still pending

一、问题描述 1、异常信息 java.lang.RuntimeException: Image generation still pendingat com.alibaba.cloud.ai.dashscope.image.DashScopeImageModel.lambda$call$1(DashScopeImageModel.java:165) ~[spring-ai-alibaba-core-1.0.0.2.jar:1.0.0.2]at org.springframework.r…

作者头像 李华
网站建设 2026/5/13 12:58:41

航空航天领域PHP如何处理视频大文件的秒传与切片?

【一个PHP外包仔的2G文件上传血泪史:从WebUploader到自救之路】 "老板,这个2G的文件上传需求…要不咱们先聊聊预算?"我擦着额头的汗,盯着客户发来的需求文档。作为一个月接3个外包的野生PHP工程师,我深知这次…

作者头像 李华
网站建设 2026/5/13 12:58:42

教育网站如何利用UEDITOR实现微信公众号内容迁移?

程序员的外包奇遇记:Word一键粘贴大作战 大家好,我就是那个在安徽码PHP的"秃"出程序员!最近接了个CMS企业官网的活儿,客户爸爸突然甩来一个需求… 需求来了! “小张啊,我们这个新闻发布系统啊…

作者头像 李华
网站建设 2026/5/12 15:10:08

jsp滇中山宝中药网站6767h(程序+源码+数据库+调试部署+开发环境)

本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,药材分类,药材信息,小贴士开题报告内容一、项目背景滇中地区以其得天独厚的自然条件和丰富的生物资源&#xff0…

作者头像 李华
网站建设 2026/5/13 12:58:41

机器学习十年演进

机器学习(Machine Learning) 的十年(2015–2025),经历了从“特征工程”到“深度学习”,再到“大模型与具身智能”的史诗级跨越。 这十年中,机器学习不仅从实验室走向了全行业,更完成…

作者头像 李华
网站建设 2026/5/11 16:09:40

论文写作步骤全攻略:从选题到定稿,AI工具让学术写作效率翻倍

作为写过3篇核心期刊2篇毕业论文的过来人,每次想起论文写作的过程都忍不住叹气——选题纠结一周,大纲改到崩溃,参考文献找得眼花缭乱,最后查重降重更是身心俱疲。后来试了各种方法,发现把传统写作逻辑和智能工具结合起…

作者头像 李华