ai-agent框架spring ai/alibaba源码原理分析(七)MAS II 分布式MAS
简介
saa是java的ai agent框架,本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理,不仅可以指导agent的开发,更可以改造框架,增加新特性
系列内容:
系列(一) 架构 完成
系列(三) 调用
I 工具 完成
II MCP
-1 MCP MCP能力,工具,资源,Prompts,sampling,。。。;springboot自动配置 完成
-2 分布式 MCP
-3 MCP security
III skills 完成
系列(四) RAG 完成
I 知识库,文档读取,分块;嵌入,向量store
II 检索,增强生成,模块化;混合检索,融合重排
系列(二) 模型 model模型 完成
chat模型,消息,提示词,结构化输出,记忆
chat client,advisor组件
系列(五) graph
I 图结构,节点和边;StateGraph;外部介入
推理框架 graph映射: ReAct,relection,CoT,Plan-And-Execute
II 图编译 CompiledGraph,扁平化图结构,邻接表结构
III 图执行,检查点,回溯/回放,中断和恢复,容错
系列(六) agent及组件 ReactAgent,AgentLlmNode,AgentToolNode,钩子和拦截器,记忆,结构化输出
系列(七) MAS
I MAS模式 flow模式 编排器-子智能体,智能体团队;简单介绍 agentic模式 消息总线,共享状态;数据交接
II 分布式MAS,远程通讯,负载均衡,注册发现,容错
系列(八) I 观测:观测组件(micrometer-observation);观测点:chatClient,chat模型,工具
II 评估
系列(九) agent管理平台 agent发现(a2a/nacos,local),agent列表
提示词管理,skill管理,MCP管理;聊天ui;会话(thread)
本文分析分布式MAS,分布式运行架构
based spring ai aliba ba v1.1.2.2,spring ai v1.1.2
关键词
缩写
spring ai 缩写sa
spring ai alibaba 本文缩写saa
参考资料
概览 | Spring AI Alibaba spring ai alibaba官网文档
https://docs.spring.io/spring-ai/reference/index.html spring ai官方文档
组件视图

上图是saa原理源码分析场景视图,每个包对应着saa/sa组件或特性,是本文分析的目录
model 大模型的封装,模型包括Chat,嵌入,audio,image等类型,其中chat模型包括,advisor组件,提示词,记忆等
agent/graph saa agent,多agent与图紧密相关,可以认为saa agent/多agent是一种既定的”图”形,实现推理框架,开发人员可以使用graph底层api直接构建graph,使用agent获得既定的图形,简化agent的开发
外部调用(calling) 工具,MCP,skills
RAG 检索增强生成
MAS A2A,FlowAgent,子agnet;分布式agent
studio 简易的agent管理工具,嵌入到agent,带有agent面板,列表agent;提供chat界面,用于调试agent,是开发agent的便利工具
admin 管理台, agent的发布,列表,管理,执行;提示词工程,评估和数据集,观测
分布式MAS
分布式MAS运行架构,高可用,高吞吐,高扩展
运行架构

上图mas运行架构图-a2a
低代码开发
- agent编辑器:开发人员编写Agent,拖拽预制agent,构建agent flow。
- 图编辑器:业务人员通过可视化界面,拖拽预制的节点,编写业务流程图
- 输出:开发者编写好的Agent和业务人员编写的”图”存入资源库(RR)进行统一管理。
注册中心
- agent注册与元数据管理中心,是动态扩缩容和故障转移,高扩展,高吞吐的机制
- agent发现,client定时扫描注册中心,获取agent列表,实现高可用和负载均衡
资源管理层(资源库 RR)
- 资源库 (RR) agent和图类型定义的持久化存储层,负责管理所有的agent node,Agent定义和业务图
- 分为两个独立的环境,支持持续集成和持续部署(CI/CD)的发布策略:
- 测试桶:存放开发和测试阶段的Agent与图
- 发布桶:存放上线的Agent与图
执行器目录和选择
- 包含执行器条目及执行器选择器,选择器负责接收来自网关的查询请求,根据负载策略决定具体的agent执行器实例
- 负责执行器心态管理,执行器注册,心跳处理(健康检测),业务metrics和性能metrics采集
执行层
- 执行器 (AE) 是Agent pipeline运行的节点
- 每个执行器内部包含执行容器,容器的职责是:
- 从资源库 (RR) 的发布桶中载入最新的Agent代码和流程图
- 执行Agent,本地或原创
- 管理Agent的运行生命周期
- 注入机制:执行器在启动或扩容时,向目录和索引(EDI)注册自身,发送心跳
接入与调用层(Client 与 ASG)
- Client(客户端):发起agent请求,图请求
- Agent服务网关 (ASG):系统面对外部的统一入口
- RPC 调用:Client 通过 RPC 协议请求 ASG 获取服务
- 路由分发:ASG 接收到请求后,不会直接执行,向 目录和索引 (EDI) 发起“选择执行器”的请求。EDI 的选择器根据当前集群状态和请求特性,按策略返回最优的 Agent执行器
- 转发执行:ASG 最终将 RPC 请求转发给选定的具体 Agent执行器完成处理。
容错
分布式执行架构agent/多agent执行是图驱动,图的检查点支持容错,重试,提告系统健壮性
- 故障检测与触发
当 agent执行器(AE) 节点因网络抖动、OOM(内存溢出)或硬件故障导致下线时,系统通过以下链路感知异常:
心跳丢失: 执行器目录和索引 (EDI) 监测到执行器实例的心跳超时,将其标记为不可用,推送到运维系统
调用超时/失败: ASG 在 RPC 调用过程中捕获到连接重置或响应超时异常,立即判定当前任务执行失败
- 重试与节点重选 (Rescheduling)
检测到执行失败,ASG 不会直接返回错误给 Client,而是启动内部的重试逻辑:
执行器获取检查点, 查询持久化存储,获取该最近一次成功保存的检查点,执行检查点系列-图分析
- 断点续传与状态恢复
执行器(AE)获取检查点后,从检查点中执行状态(例如:Pipeline 已经完成了 A->B 节点,正准备执行 C 节点),恢复全局状态,执行nextNode。
幂等性保障: 对于涉及外部副作用(如写数据库、发通知)的节点,系统会利用检查点中的事务 ID 进行幂等校验,防止重试导致的数据重复写入。
实现分析
本节分析架构实现
A2A
Agent2Agent (A2A) 协议是由 Google 开发,实现Agent之间的通信与协作和能力展示,Nacos提供了Agent注册的原生支持,管理(A2A Registry),实现 Agent 的注册、发现、命名空间隔离、版本管理等功能。
A2A+Nacos实现分布式架构的agent注册和发现,远程调用
saa的a2a实现较初级,其功能成熟度完整度未达到要求,agentcard作为agent调用令牌,绑定agent实例,提供了事件订阅更新agentcard,但只针对版本变更 ;nacos agent注册实例需设置首选项,但查所有资料未发现该选项说明,大概理解是权重设置;没有实现本地agent列表缓存,本地负载均衡;agent为注册服务单位粒度太小;a2a有自己的执行机制,与graph的执行机制兼容问题,如,saa graph的外部介入,中断和恢复
总的来说,saa的a2a实现,在高可用,高吞吐,容错未达到要求
微服务架构
java技术栈,微服务简单而高效实现分布式mas运行架构, agent服务负责按名称实例和运行agent/图,另外,可简化为整个pipeline在执行器运行(本地agent),无需agent服务注册和发现

上图是微服务实现的分布式mas运行架构
更多推荐
所有评论(0)