Agent实战 #01:Dream-SaaS 整体架构拆解

0 阅读10分钟

28 个 Java 模块 + 5 个独立部署 App,4C8G 单机全链路架构拆解

一、架构总览

Dream-SaaS 是一个双语言微服务架构的 AI Agent 平台。Java 负责业务逻辑与 API 治理,Python 负责 AI 编排与重计算,整体分为 6 层:


二、技术栈与版本

2.1 Java 侧

技术版本说明
JDK21全模块统一
Spring Boot3.5.5核心框架
Spring Cloud2025.0.0Northfields,对齐 Boot 3.5
Spring Cloud Alibaba2025.0.0.0Nacos 注册配置中心
Spring AI1.1.6AI 能力抽象(ChatClient / Advisor / Tool Calling / VectorStore)
Spring AI Alibaba1.1.2.2通义 DashScope 集成 + Graph 编排 + ReactAgent + MCP
MyBatis-Plus3.5.14ORM
Redisson3.40.2分布式锁与缓存
springdoc-openapi2.8.16API 文档
java-jwt4.4.0JWT 令牌
RocketMQ Spring Boot2.3.1消息队列
Apache POI5.4.0Office 文件处理
Fastjson22.0.61JSON 序列化
Hutool5.8.43工具集
PostgreSQL JDBC42.7.3数据库驱动
MySQL Connector/J8.0.33数据库驱动

2.2 Python 侧

技术版本说明
Python3.10+编排层运行时
FastAPI0.115.0异步 Web 框架,原生 SSE 流式支持
LangGraph0.2.0图编排引擎(对应 Java 侧 Spring AI Alibaba Graph)
LiteLLM1.55.0统一 LLM 调用,一个接口切换 100+ 模型
OpenAI SDK1.55.0DashScope 兼容模式直连
instructor1.7.0LLM 结构化输出(自动反序列化到 Pydantic Model)
Pydantic Settings2.6.0配置管理(.env + 环境变量自动映射)
MCP SDK1.2.0Model Context Protocol(stdio 工具进程)

2.3 前端

技术版本说明
Vue3.5.13渐进式前端框架
Element Plus2.9.4UI 组件库
Vite6.0.7构建工具
SPA 单页应用所有前端均采用 SPA 模式

2.4 基础设施

组件用途
PostgreSQL + pgvector向量存储与检索
Redis缓存、会话、分布式锁
MySQL业务数据持久化
RocketMQ异步事件通知(如内容任务生命周期)
NginxHTTPS 终端 + 静态资源 + 反向代理

2.5 选型决策

决策原因
Spring Cloud 2025.0与 Boot 3.5 同代,配套 Nacos 实现服务注册与配置管理
Spring AI + Alibaba原生 Spring 生态的 AI 抽象层,DashScope 直通通义模型
FastAPI + LangGraphPython 侧高性能 Web 框架 + 成熟的图编排能力
pgvector复用 PostgreSQL,不额外引入向量数据库,降低运维成本
单机 4C8G先跑通全链路验证架构,再按需横向扩展

2.6 Java / Python 分工原则

双语言不是重复造轮子,而是各取所长:

放在 Java放在 Python
API 网关、鉴权、配额管控LLM Tool Calling 深循环
数据库 CRUD、事务管理Web 搜索、网页爬取
向量 Schema 管理、RAG 检索Prompt 快速迭代与编排
Graph 声明式编排(复杂分支 / HITL)内容 Pipeline、定时批处理
MCP Server 聚合暴露MCP stdio 工具进程
Feign 服务间调用多模型 A/B 测试(LiteLLM)

三、前端架构

前端采用 Vue3 + Vite 构建,共有 4 个独立前端应用,全部由 Nginx 托管静态资源:

前端应用路由路径说明
主站/项目主入口
companion SPA/companion/AI 搭子交互界面
study-admin/study-admin/学习助手管理后台
content-admin/content-admin/内容管理后台

Nginx 同时承担 HTTPS 终端(Let's Encrypt 证书)、HTTP→HTTPS 重定向、安全响应头(HSTS / X-Content-Type-Options / X-Frame-Options)以及静态资源服务。API 请求通过 Nginx 反向代理分发到后端各服务。


四、网关层

采用 Nginx + Java Gateway 双层网关设计:

  • Nginx:HTTPS 终端、静态资源托管、反向代理路由分发
  • Java Gatewaydream-ai-gateway,:8090):统一鉴权、限流、配额管控,以及通过 Feign 调用后端服务

Nginx 按 URL 路径前缀将请求路由到不同后端服务,未匹配的请求兜底到 Gateway 统一接管。


五、业务层

5.1 五个独立部署的 Java App

服务端口职责
dream-ai-gateway8090API 网关 + Agent 对话入口
dream-ai-code-review8095代码审查 Agent
dream-ai-rag8096RAG 向量检索服务
dream-ai-agent-content8097内容管理(Content OS)
dream-ai-agent-companion8098AI 搭子 + 学习助手 Java 侧

五个 App 生命周期独立,可分别启停、独立扩缩容。其中 agent-study(学习助手)Java 侧模块编译时嵌入 agent-companion App 中,不单独部署,其核心 AI 编排逻辑在 Python 侧(:8001)执行。

5.2 电商业务域 Agent(dream-ai-agent-business)

业务域职责
fulfillment履约 Agent(订单、物流、退款、售后)
seller卖家服务 Agent
ticketmgmt工单管理 Agent

每个业务域遵循统一的 Java 包结构规范:graph(图编排节点定义)→ integration/feign(外部服务调用)→ service(业务逻辑)→ web(REST API 入口)→ trace(链路追踪埋点)。这是模块内的目录分层约定,确保各业务域代码结构一致、可维护。


六、Agent 核心层(Java)

6.1 核心模块与 Spring AI 能力

模块职责
dream-ai-agent-coreAgent 框架核心(基类、生命周期、工具注册)
dream-ai-agent-runtimeAgent 运行时管理
dream-ai-agent-chat对话管理与会话记忆
dream-ai-agent-skills技能与工具注册中心
dream-ai-agent-platform平台管理(用户、配额、系统配置)

核心层基于 Spring AI 1.1.6 构建,关键能力:

  • ChatClient:高层 Fluent API,封装 LLM 调用全流程(Advisor 链 → Tool 自动循环 → 结构化输出),日常开发首选入口
  • Advisor 拦截器链:类似 Spring MVC Filter,在 LLM 调用前后插入逻辑。内置 QuestionAnswerAdvisor(RAG 检索注入)、MessageChatMemoryAdvisor(会话记忆)、SafeGuardAdvisor(安全过滤)等,支持自定义扩展
  • Tool Calling:通过 @Tool / @ToolParam 注解声明工具,ChatClient 自动完成 ReAct 循环(Think → 选 Tool → 执行 → Observe → 循环至最终回答)
  • ChatModel 装饰器:生产环境多层包装,如 InstrumentingTraceChatModel(Trace 追踪)→ RecoveryInstrumentingChatModel(自愈重试)→ 基础模型

6.2 AI Agent 能力模块

模块职责
dream-ai-agent-content内容创作 Agent
dream-ai-agent-companionAI 搭子 Agent
dream-ai-agent-study学习助手 Agent
dream-ai-agent-biBI 数据分析 Agent
dream-ai-agent-business电商业务域 Agent
dream-ai-agent-bug缺陷管理 Agent
dream-ai-agent-memory记忆管理 Agent
dream-ai-agent-repo仓库管理 Agent
dream-ai-agent-tech技术文档 Agent
dream-ai-agent-ragdocRAG 文档处理
dream-ai-agent-userhelp用户帮助 Agent

6.3 图编排(Spring AI Alibaba Graph)

模块职责
dream-ai-graph图编排引擎,作为共享库被 Gateway 和各业务 App 依赖,负责 Agent 节点编排与状态流转。不是独立部署的服务,而是嵌入到调用方的类库

dream-ai-graph 基于 Spring AI Alibaba 的 Graph 引擎构建,核心概念:

  • StateGraph(声明式图定义)→ CompiledGraph(编译后可执行),支持三种边类型:顺序边、并行边(CompletableFuture.allOf 并发执行)、条件边(路由函数动态分支)
  • OverAllState:全局状态黑板,各节点读写共享状态
  • CheckpointSaver(基于 Redisson):状态持久化,支持 HITL(Human-in-the-loop)——图执行到人工审核节点时暂停,审核通过后携带 threadId 从中断点恢复
  • Supervisor 多子图模式:意图路由节点将请求分发到不同子图(如通用对话子图、代码审查子图、RAG 问答子图),子图可作为节点嵌入主图
  • SSE 流式协议run.start → node.end → message.delta → message.done,前端可实时展示执行进度与 LLM 增量输出

此外,Spring AI Alibaba 还提供 ReactAgent(ReAct 模式:Think → Tool → Observe 循环)和 多 Agent 编排(SequentialAgent / ParallelAgent / RoutingAgent),用于更复杂的 Agent 协作场景。

6.4 MCP 模块(5 子模块)

子模块职责
dream-saas-mcp-clientMCP 客户端,调用外部 MCP 服务
dream-saas-mcp-commonMCP 公共定义
dream-saas-mcp-registryMCP 服务注册中心
dream-saas-mcp-serverMCP 服务端,暴露工具给外部
dream-saas-mcp-spiMCP SPI 扩展点

6.5 跨语言协作模式

Java 与 Python 两层之间通过四种模式协作:

模式说明典型场景
HTTP RESTPython httpx → Java Internal API会话读写、数据持久化
SSE 直通Nginx → Python 流式响应搭子/学习助手的实时对话
共享数据库Java/Python 各读写自己的 Schema向量数据、业务表
消息队列RocketMQ 事件通知内容任务生命周期、异步解耦

Python 侧通过 core/nacos_integration.py 接入 Nacos 注册中心,与 Java 侧共享服务发现,实现统一的服务治理。


七、Java 模块全景(28 个模块)

28 个模块按职责分为 8 个分类,明细如下:

分类模块名小计
基础设施dream-ai-common1
Agent 核心agent-coreagent-runtimeagent-chatagent-skillsagent-platform5
业务域 Agentagent-contentagent-companionagent-studyagent-biagent-businessagent-bugagent-memoryagent-repoagent-techagent-ragdocagent-userhelp11
图编排dream-ai-graph1
独立服务gatewaycode-reviewragtest4
MCP 协议栈(5)mcp-clientmcp-commonmcp-registrymcp-servermcp-spi(详见 6.4 节)5
前端dream-ai-content-admin1
Python 桥接dream-ai-python(Java 侧 Python 进程的配置入口与启动管理)1
合计28

补充说明: 另有根工程 dream-saas 下的 dream-saas-coredream-saas-gatewaydream-saas-edgedream-saas-commondream-saas-cachedream-saas-message 等业务基座模块,提供跨项目的公共能力(缓存、消息、通用实体等)。这些基座模块属于平台底座,未计入上述 28 个 AI 业务模块。

上表中 test 模块为运维守护进程,部署方式详见第八节。


八、部署拓扑(4C8G 单机)

关于 dream-ai-test:该模块作为运维守护进程常驻,由 Systemd 管理,负责每 10 分钟健康检查和异常自动拉起。不暴露 API 端口,不参与业务请求,因此不在上述 5 个业务 App 之列。

公网域名:www.dream-saas.com,已备案,HTTPS + HTTP/2。


九、关键设计决策

决策原因
5 个独立 App 部署Gateway / CodeReview / RAG / Content / Companion 生命周期独立,互不影响
Nginx 直路由 + Gateway 兜底性能敏感路径直达后端,其余走 Gateway 统一治理
MCP 完整协议栈5 个子模块分层设计(详见 6.4 节),Java 侧聚合暴露、Python 侧 stdio 进程,通过标准协议互通
跨语言四种协作模式HTTP REST / SSE 直通 / 共享数据库 / RocketMQ,按场景选用而非一刀切
RocketMQ 异步解耦内容任务通过消息队列异步通知,避免同步调用阻塞
pgvector 而非独立向量库复用 PostgreSQL,降低运维复杂度
4C8G 单机部署成本优先,验证架构可行性后再横向扩展
Gateway 不依赖业务 App网关只依赖 dream-ai-agent-platform(平台管理模块,负责用户鉴权、配额等),不依赖 content / companion / study 等业务 App,保证网关与业务解耦

十、小结

Dream-SaaS 的架构设计体现了几个核心思路:

  1. 分层清晰、各司其职:前端 → 网关 → 业务 → Agent 核心 → Python 编排 → 基础设施,6 层边界明确
  2. 5 个独立 App 解耦:Gateway / CodeReview / RAG / Content / Companion 生命周期独立,可分别启停
  3. MCP 协议栈分层:5 个子模块覆盖完整链路,对外暴露工具、对内注册服务
  4. 网关轻、业务重:Nginx + Gateway 只做鉴权限流路由,不碰业务逻辑
  5. 单机先行、成本可控:4C8G 跑通全链路,验证后再扩展

项目地址dream-saas.com
系列文章:Agent 实战 #01
技术栈:Spring Boot 3.5.5 + Spring Cloud 2025.0 + Spring Cloud Alibaba 2025.0.0.0 + Spring AI 1.1.6 + Spring AI Alibaba 1.1.2.2 + FastAPI + LangGraph + PostgreSQL/pgvector


📎 附:配套资料

本文涉及的技术栈版本对照、Spring AI 核心接口用法、Graph 编排代码示例、Python 编排层速查、Java↔Python 语法对照表等内容,我整理了一份 《Agent 开发技术栈扩展参考手册》,覆盖从 Spring Cloud 微服务到 Python AI 编排栈的完整知识链路。

获取方式:关注作者,私信"Agent手册"即可获取。

适合正在从传统 Java 后端转型 Agent 开发的同学,拿来对照着用,少走弯路。

有问题评论区见,欢迎交流~