简介

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

更多推荐