ADK-gateway/A2A需求分析-网关-K8s全链路架构详细设计方案.md
2026-08-04 17:20:08 +08:00

232 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# A2A需求分析\-网关\-K8s全链路架构详细设计方案
## 一、架构整体概述
### 1\.1 核心架构分层
整体采用**三层解耦架构:需求分析层 → 智能网关层 → K8s Agent算力层**完全贴合你的设计思路兼顾本地IDE/CLI异步任务、云端Agent弹性调度、全链路任务管控。
- **需求分析层(前端调度端)**CLI终端、VSCode IDE、Claude Code/CodeBuddy等AI终端负责自然语言需求解析、复杂任务拆解、本地轻量任务异步执行、结构化任务上报网关。
- **智能网关层(核心中枢)**基于FastAPI\+ElementUI\+Redis搭建核心能力为任务池管理、Agent池管理、心跳保活、任务\-Agent规则匹配、全链路通信中转、任务生命周期管控、可视化运维。
- **K8s算力层执行端**全权负责Agent容器的生命周期管理创建、扩容、销毁、重启Agent启动/销毁主动通知网关,实现集群弹性伸缩。
### 1\.2 核心设计理念
- 分层解耦:需求拆解、任务调度、算力执行完全隔离,支持独立迭代扩容;
- 异步协同本地CLI可自主处理轻量编程任务复杂任务上云调度K8s Agent轻重任务分流
- 动态感知网关实时维护在线Agent池通过定时心跳剔除异常节点适配K8s动态扩缩容
- 精准匹配基于自定义规则实现任务与Agent能力精准绑定支持负载均衡、优先级调度
- 统一通信网关作为唯一通信中枢承接CLI与云端Agent的双向交互通过AgentID精准关联任务链路。
## 二、各层级详细能力设计
### 2\.1 需求分析层CLI/IDE/AI终端
#### 2\.1\.1 核心角色
包含自研CLI、VSCode插件、Claude Code、CodeBuddy等所有前端需求入口作为**顶层任务调度者**具备LLM自主拆解能力。
#### 2\.1\.2 核心能力
1. **需求智能拆解**:接收用户自然语言需求,自主拆分出可独立执行的原子任务,区分轻量本地任务、重型云端任务;
2. **本地异步执行**简单代码补全、语法校验、本地文件修改等轻量任务由CLI/IDE本地异步处理无需上云
3. **云端任务上报**:编译构建、批量测试、数据分析、流媒体处理等复杂任务,结构化封装后提交至网关;
4. **结果接收与聚合**接收网关转发的Agent执行结果LLM聚合输出最终答案反馈给用户
5. **全链路追踪**每个任务生成全局唯一RequestID贯穿网关、Agent全链路用于结果精准匹配、日志溯源。
#### 2\.1\.3 任务上报协议
采用标准HTTP JSON协议适配所有AI终端工具调用规范请求体核心字段RequestID、任务类型、任务标签、任务载荷、超时时间、本地工作目录信息。
### 2\.2 智能网关层(核心中枢)
技术栈:**FastAPI高性能接口服务\+ ElementUI可视化后台\+ Redis内存数据存储**无状态服务设计支持水平扩容核心维护两大核心资源池Task任务池、Agent算力池。
#### 2\.2\.1 核心模块拆分
- **API接入模块**接收CLI/IDE任务提交、Agent注册/注销、心跳上报、任务结果回传;
- **任务池管理模块**:缓存所有待执行/执行中/已完成任务,维护任务全生命周期状态;
- **Agent池管理模块**维护所有K8s在线Agent信息基于定时心跳保活、剔除异常节点
- **规则调度模块**实现任务与Agent的标签匹配、负载均衡、优先级调度
- **通信中转模块**基于AgentID关联CLI与Agent双向转发任务指令、执行日志、最终结果
- **可视化运维模块**ElementUI实现任务列表、Agent在线状态、执行日志、异常告警可视化展示。
#### 2\.2\.2 Task任务池设计Redis存储
网关接收CLI任务后立即写入Redis任务池同步返回「任务受理成功」响应不阻塞CLI实现异步调度。
**任务数据结构**RequestID、TaskType、TaskTags、Payload、Statuspending/running/success/failed、AgentID、CliSessionID、CreateTime、Timeout、Progress、Result、ErrorInfo。
**任务状态流转**:待受理 → 待调度 → 执行中 → 执行成功/执行失败 → 任务归档TTL自动清理
#### 2\.2\.3 Agent算力池设计Redis存储
全权管理K8s集群所有Agent实例适配K8s动态生命周期实现动态注册、失效剔除。
**Agent数据结构**AgentID、EndpointK8s内部访问地址、AgentTags能力标签、MaxConcurrent最大并发、CurrentLoad当前负载、LastHeartbeat最后心跳时间、Statusonline/offline、CreateTime。
#### 2\.2\.4 心跳保活机制(核心设计)
严格遵循你的设计:**网关定时每分钟轮询维持心跳**,补充工程化容错逻辑:
1. 网关后台启动定时任务每60s扫描一次Redis Agent池
2. 判定规则连续2个周期120s未上报心跳 → 标记Agent为offline从可用算力池剔除
3. 被动更新Agent启动主动注册、销毁主动注销实时更新Agent池状态优先覆盖定时轮询结果
4. 负载同步:心跳同步上报当前任务并发数,为调度算法提供依据。
#### 2\.2\.5 任务\-Agent匹配调度规则
网关核心调度逻辑,实现精准任务分发,优先级从高到低:
1. **标签精准匹配**根据任务TaskTags筛选具备对应能力标签的Agent如代码编译、日志分析、流媒体处理
2. **负载过滤**剔除当前负载已满CurrentLoad ≥ MaxConcurrent的Agent
3. **最优算力选择**优先选择负载最低、在线时间最稳定的Agent
4. **任务绑定**匹配成功后将AgentID写入任务池对应任务标记任务为running下发任务至目标Agent。
#### 2\.2\.6 双向通信机制(核心闭环)
完全贴合你的设计:**网关作为唯一中转携带AgentID完成CLI与Agent双向通信**
1. 正向链路CLI → AgentCLI提交任务 → 网关入库匹配Agent → 携带AgentID下发任务指令
2. 反向链路Agent → CLIAgent执行完成/产生日志 → 结果回传网关 → 网关通过RequestID\+AgentID关联对应CLI会话 → 精准返回结果;
3. 链路隔离多任务、多Agent、多CLI会话通过RequestID\+AgentID双维度隔离杜绝消息错乱。
### 2\.3 K8s算力层
#### 2\.3\.1 核心职责
专注Agent容器生命周期管理不参与业务调度职责单一Agent镜像部署、弹性扩缩容、故障重启、资源配额管控、节点销毁。
#### 2\.3\.2 Agent生命周期联动网关机制
1. **Agent创建启动**Pod启动后自动读取K8s环境变量网关地址、Pod信息主动调用网关`/agent/register`接口完成注册上报能力标签、并发上限、访问地址网关更新Agent池纳入算力调度。
2. **Agent运行中**每10s主动上报心跳同步当前负载网关定时轮询兜底校验
3. **Agent销毁/缩容**Pod收到SIGTERM信号后主动调用网关`/agent/unregister`接口优雅注销网关立即剔除该Agent终止其未完成任务避免任务调度失效
4. **Agent异常崩溃**无主动注销时依赖网关120s心跳超时机制自动剔除实现故障自愈。
## 三、全链路完整执行流程
整合所有模块,端到端闭环流程如下:
1. **需求拆解上报**用户在CLI/IDE输入需求AI终端自主拆解任务轻量任务本地异步执行复杂任务结构化后提交网关
2. **网关任务受理**:网关接收任务,生成/复用RequestID写入Redis任务池立即返回受理响应避免CLI阻塞
3. **算力匹配调度**网关遍历在线Agent池通过标签\+负载规则匹配最优Agent绑定AgentID下发任务
4. **Agent执行任务**K8s Agent接收任务开始执行定时上报执行进度、日志至网关
5. **结果回传中转**Agent执行完成后将结果/错误信息回传网关网关通过AgentID\+RequestID匹配原CLI会话
6. **结果聚合反馈**网关推送结果至CLIAI终端聚合结果、整理答案最终反馈给用户
7. **状态归档清理**:网关更新任务为成功/失败状态,留存日志,到期自动清理冗余数据。
## 四、核心数据存储设计Redis
### 4\.1 任务池存储结构
- Hash结构`task:info:{RequestID}`存储任务全量信息;
- Set结构`task:pending` 待调度任务集合、`task:running` 执行中任务集合;
- TTL策略任务数据默认保留24小时自动过期清理释放资源。
### 4\.2 Agent池存储结构
- Hash结构`agent:info:{AgentID}` 存储Agent全量信息
- ZSet结构`agent:heartbeat` score=最后心跳时间,用于网关定时清理失效节点;
- Set索引`agent:tag:{tag}` 按能力标签索引Agent加速任务匹配效率。
## 五、容错与异常处理机制
### 5\.1 任务异常容错
- 任务超时网关自定义任务超时时间超时自动标记失败释放Agent算力反馈CLI
- Agent离线执行中Agent失联网关立即终止任务标记异常支持CLI重提任务
- 幂等性基于RequestID实现任务幂等避免CLI重试导致重复调度。
### 5\.2 Agent容错
- 心跳兜底:主动心跳\+网关定时轮询双机制,杜绝僵尸节点;
- 重启自愈K8s负责Agent故障重启重启后自动重新注册纳入算力池。
### 5\.3 通信容错
- 断连不丢任务任务数据持久化Redis网关重启、网络波动不丢失任务状态
- 精准重连匹配重连后通过RequestID\+AgentID恢复任务链路继续推送结果。
## 六、可视化运维能力ElementUI
基于ElementUI搭建后台提供全维度可视化管控
- 任务管理查看所有任务状态、进度、关联AgentID、执行日志、结果详情
- Agent管理在线Agent列表、能力标签、实时负载、心跳状态、异常节点告警
- 日志审计全链路任务操作日志、Agent注册注销日志、通信记录溯源
- 手动管控支持手动取消任务、下线异常Agent、重置任务状态。
## 七、架构核心优势
1. **极简解耦**三层架构职责清晰K8s只管生命周期网关只管调度通信CLI只管需求拆解
2. **弹性适配**完美适配K8s扩缩容Agent动态上下线自动感知无需人工干预
3. **高低速任务分流**:本地轻量异步处理,云端重型算力调度,资源利用率最大化;
4. **精准链路管控**AgentID\+RequestID双维度绑定通信不错乱、任务可溯源
5. **轻量易落地**FastAPI\+Redis技术栈轻量化部署简单、开发成本低配套可视化运维
6. **可扩展性强**:后续可扩展多租户、权限管控、负载均衡优化、大文件中转、本地文件远程读写等能力。
## 八、落地实施步骤
1. 搭建网关基础服务FastAPI接口、Redis数据结构、ElementUI可视化基础页面
2. 实现Agent注册、注销、心跳上报、网关定时轮询保活能力
3. 开发任务池管理、任务\-Agent匹配调度核心逻辑
4. 打通CLI任务上报、网关调度、Agent执行、结果回传全链路
5. 完善异常容错、日志审计、可视化运维功能;
6. 压测优化适配K8s大规模Agent集群调度。
> (注:部分内容可能由 AI 生成)