ai-agent框架spring ai/alibaba源码原理分析MAS II 分布式MAS

简介

saa是java的ai agent框架,本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理,不仅可以指导agent的开发,更可以改造框架,增加新特性

系列内容:

系列( 一) 架构

系列( 二) **模型,**chat模型,chat client,advisor组件,提示词,消息,结构化转换,记忆

系列( 三) agent&graph,ReactAgent;StateGraph,CompiledGraph,图执行,钩子和拦截器,上下文工程

系列( 四) 外部调用 工具/MCP skills

系列( 五) RAG,ETL,文档读写,向量,向量库

系列( **六)**评估

系列( **七)**可观测

系列(八) 多agent,FlowAgent,a2a agent,模式 handoffs,toolcalling;agent团队

系列(九) agent管理运行平台apring ai alibaba admin分析,重点:agent发布,执行,提示词管理,评估,观测

其他:多模态

本文分析分布式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,而是启动内部的重试逻辑:

执行器获取检查点, 查询持久化存储,获取该最近一次成功保存的检查点,执行检查点系列-图分析

  • 3. 断点续传与状态恢复

执行器(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运行架构