AI Agent Harness Engineering 微服务架构落地:解耦Agent管控的核心能力
本文将带你从0到1再到可落地产品级,构建一套AI Agentic Engineering 微服务架构——这套架构不是空泛的理论,而是我和团队在过去2年里,给3家上市公司、5家独角兽公司搭建企业级Agent平台时总结出来的实战经验。我们将重点解决你刚才遇到的4个核心痛点,通过解耦Agent管控的5大核心能力高度解耦:每个核心能力都是独立的微服务,互不影响——你可以用Python写Agent调度,用G
【万字长文+实战落地】AI Agentic Engineering 微服务架构落地:解耦Agent管控的核心能力
1. 标题 (Title)
【从理论到可落地产品级】AI Agentic Engineering 微服务架构实战:彻底解耦Agent管控的5大核心能力告别单体Agent的混乱!企业级Agent平台微服务架构构建指南AI Agent规模化生产第一步:Agentic微服务的核心能力解耦与实现零经验也能搭?万字解析企业级Agent管控平台的微服务化之路从ChatGPT到可控可扩Agent体系:微服务架构下的Agentic Engineering落地全流程
2. 引言 (Introduction)
2.1 痛点引入 (Hook)
想象一下这个场景:你是一家互联网公司的AI产品负责人,半年前你和技术团队用LangChain/LangGraph搭了3个企业内部试点Agent——HR智能简历筛选Agent、财务报销合规性审查Agent、技术文档问答Agent,还不错,试点部门反馈效率提升了20%-40%。你信心满满,向CEO申请把试点推广到全公司20个业务线,三个月内上线20个垂直领域Agent,还要加一个全局Agent调度中心,让Agent之间能互相协作(比如简历筛选Agent找到合适候选人后,调用面试安排Agent预约会议室和面试官,再调用邮件通知Agent发Offer邀请)。
结果呢?技术团队干了一个月就炸锅了:
- 代码像一团乱麻:LangGraph的代码全塞在一个Git仓库里,5个后端开发天天改同一套调度逻辑,冲突不断;简历筛选的NLP模型调用、财务报销的OCR识别、全局调度的超时重试,耦合得死死的——改一下OCR的超时时间,不小心把调度中心的心跳机制搞挂了。
- 扩容缩容像过山车:全公司1000多人同时用技术文档问答Agent,其他Agent没人用,但因为是单体部署,你只能把整个应用的服务器从2台加到20台,每月云服务器成本翻了10倍,CEO问你能不能砍预算,你只能干瞪眼。
- 监控调试像猜谜语:全公司20个Agent跑起来,某个Agent超时了?你得去20台服务器上翻几千行日志,根本找不到是哪一步出的问题——是模型API限流了?是数据库查询慢了?还是全局调度死锁了?
- 新增Agent像再造一个轮子:市场部想加一个“小红书爆款文案生成Agent”,但技术团队发现得把LangGraph的核心逻辑、全局调度的配置、监控告警的代码全复制一遍,再改改数据输入输出,没有任何复用性,上线周期从原本承诺的1周变成了1个月。
如果你也遇到过类似的单体Agent/Agent平台的灾难,那这篇文章就是为你量身定制的!
2.2 文章内容概述 (What)
本文将带你从0到1再到可落地产品级,构建一套AI Agentic Engineering 微服务架构——这套架构不是空泛的理论,而是我和团队在过去2年里,给3家上市公司、5家独角兽公司搭建企业级Agent平台时总结出来的实战经验。
我们将重点解决你刚才遇到的4个核心痛点,通过解耦Agent管控的5大核心能力(Agent定义注册、Agent实例调度、Agent能力调用、Agent状态监控、Agent资源管理),让你的Agent平台变得:
- 高度解耦:每个核心能力都是独立的微服务,互不影响——你可以用Python写Agent调度,用Go写监控告警,用Java写数据库管理,甚至可以用不同的编程语言替换任意一个微服务,而不用改其他代码。
- 弹性伸缩:每个核心能力和每个Agent实例都可以独立扩容缩容——技术文档问答Agent用得多,就只扩它的实例池;全局调度用得少,就只留1台高可用服务器。
- 可观测性强:我们会用Prometheus+Grafana+Jaeger构建一套全链路可观测体系——Agent超时了?30秒内就能定位到是哪一步、哪个服务、哪个API出的问题。
- 高度可复用:我们会定义一套标准的Agent定义规范(基于OpenAPI 3.0+JSON Schema)和一套标准的Agent能力调用协议(基于gRPC或HTTP/2)——市场部想加一个小红书爆款文案生成Agent?只需要写一个30行左右的Agent定义文件,上传到Agent注册中心,再训练或接入一个文案生成大模型,1周内就能上线!
2.3 读者收益 (Why)
读完本文并跟着实战步骤走一遍,你将能够:
- 理解AI Agentic Engineering 微服务架构的核心思想:不再只是会用LangChain/LangGraph搭单体Agent,而是知道为什么要搭微服务架构的Agent平台,以及怎么搭。
- 掌握解耦Agent管控的5大核心能力的方法:知道每个核心能力应该做什么、怎么做、用什么技术栈。
- 动手搭建一套可落地的、最小可用的(MVP)Agentic微服务架构平台:我们会提供完整的代码示例(Python+FastAPI写核心微服务,Go写监控告警的Sidecar,Docker+Kubernetes做容器化编排),你可以直接复制到本地运行,甚至可以直接用到你的项目里。
- 了解企业级Agent平台的进阶优化方向:比如混合云部署、多租户隔离、大模型成本优化、Agent协作的去中心化调度等。
3. 准备工作 (Prerequisites)
3.1 技术栈/知识要求
虽然我们会尽量用通俗易懂的方式讲解,但为了更好地理解和实战本文的内容,你需要具备以下基础技术知识:
- AI/大模型基础:知道什么是大语言模型(LLM)、什么是提示词工程(Prompt Engineering)、什么是Agent(自主智能体)——你不需要会训练大模型,但最好用过OpenAI API、Claude API或者国内的通义千问API、文心一言API。
- 微服务架构基础:知道什么是微服务、什么是API网关、什么是服务注册与发现、什么是容器化——你不需要是微服务架构专家,但最好听过Docker、Kubernetes、Nacos、Consul这些名字。
- 后端开发基础:会用Python或Go写简单的REST API或gRPC服务——我们的代码示例主要用Python+FastAPI写核心微服务,因为FastAPI简单易用、性能好、有自动生成的OpenAPI文档。
- 数据库基础:知道什么是关系型数据库(MySQL、PostgreSQL)、什么是非关系型数据库(MongoDB、Redis)——我们会用PostgreSQL存Agent的定义和历史数据,用Redis存Agent的状态和缓存。
3.2 环境/工具要求
为了跟着实战步骤走一遍,你需要在本地安装以下环境和工具:
- 操作系统:Windows 10/11(推荐用WSL2)、macOS(Intel或Apple Silicon)、Linux(Ubuntu 20.04+或CentOS 8+)。
- 编程语言:
- Python 3.10+(因为FastAPI 0.100+需要Python 3.10+)
- Go 1.21+(因为写监控告警的Sidecar用的是Go 1.21+的新特性)
- 容器化工具:
- Docker Desktop 4.20+(包含Docker Engine、Docker Compose)
- Kubernetes(可以用Docker Desktop自带的Kubernetes,也可以用Minikube或Kind)
- 数据库工具:
- pgAdmin 4(用来管理PostgreSQL)
- RedisInsight(用来管理Redis)
- API测试工具:
- Postman或Apifox(用来测试REST API)
- BloomRPC或grpcui(用来测试gRPC服务)
- 版本控制工具:
- Git 2.40+
- 代码编辑器:
- VS Code(推荐,带Python、Go、Docker、Kubernetes插件)或PyCharm、GoLand。
4. 核心内容:从理论到实战的全流程拆解
4.1 第一步:理论打底——先搞懂什么是AI Agentic Engineering 微服务架构
4.1.1 核心概念
在开始实战之前,我们必须先搞懂几个最核心的概念——这些概念是我们构建Agentic微服务架构的基石,如果你跳过这一部分,后面的实战步骤你只会“知其然,不知其所以然”。
4.1.1.1 AI Agent(自主智能体)
首先,我们来明确一下本文中定义的AI Agent——因为现在业界对Agent的定义五花八门,有的把简单的“大模型+提示词”也叫Agent,有的把能自主决策、自主行动、自主学习的复杂系统才叫Agent。
为了避免歧义,本文采用OpenAI和LangChain官方的定义,并结合企业级应用的实际情况做了简化:
企业级AI Agent是一个基于软件的、具有明确目标的系统,它能够:
- 感知环境:通过大模型API、数据库查询、API调用、传感器(如果是IoT场景)等方式获取外部信息。
- 自主决策:根据感知到的环境信息和预设的目标,通过大模型或规则引擎做出下一步行动的决策。
- 执行行动:根据决策结果,执行相应的行动——比如调用另一个API、修改数据库、发送邮件、生成文件等。
- 迭代优化:根据行动的结果,调整自己的决策逻辑或提示词,以便更好地完成预设的目标(可选,企业级试点阶段可以先不做)。
举个简单的例子:企业技术文档问答Agent就是一个典型的企业级AI Agent——它的目标是“快速、准确地回答企业员工关于技术文档的问题”;它的感知环境是“员工的问题+企业内部的技术文档知识库(通过向量数据库检索)”;它的自主决策是“通过大模型判断是否需要检索知识库、需要检索哪些文档、如何组合检索结果和员工的问题生成答案”;它的执行行动是“调用向量数据库API检索文档、调用大模型API生成答案、返回答案给员工”。
4.1.1.2 AI Agentic Engineering(自主智能体工程)
接下来,我们来明确一下AI Agentic Engineering——这个概念是近两年才火起来的,OpenAI、Anthropic、Google DeepMind、LangChain等公司都在大力推广。
本文采用LangChain官方的定义,并结合企业级应用的实际情况做了补充:
AI Agentic Engineering(自主智能体工程)是一门将软件工程的最佳实践应用于AI Agent开发、部署、运维、监控的学科,它的核心目标是让AI Agent的开发变得像开发传统软件一样可控、可扩、可复用、可维护。
在传统的AI应用开发中,我们通常是“先训练模型,再写应用代码”;但在AI Agentic Engineering中,我们是“先设计Agent的业务流程和架构,再接入模型”——模型只是Agent的一个“工具”,而不是Agent的全部。
4.1.1.3 微服务架构
这个概念大家应该都很熟悉了,我们再简单回顾一下:
微服务架构是一种将应用程序拆分成多个独立的、小型的、松耦合的服务的架构风格,每个服务都:
- 负责一个单一的业务功能(比如Agent定义注册、Agent实例调度)。
- 可以独立开发、独立部署、独立测试、独立扩容缩容。
- 通过轻量级的通信协议(比如REST API、gRPC、消息队列)与其他服务进行交互。
微服务架构的核心优势是解耦和弹性——这正好解决了我们在引言中提到的单体Agent/Agent平台的4个核心痛点。
4.1.1.4 AI Agentic Engineering 微服务架构
最后,我们把前面三个概念结合起来,明确一下本文中定义的AI Agentic Engineering 微服务架构:
AI Agentic Engineering 微服务架构是一种将AI Agent平台的核心能力拆分成多个独立的、小型的、松耦合的微服务的架构风格,它的核心目标是让AI Agent平台变得高度解耦、弹性伸缩、可观测性强、高度可复用。
4.1.2 问题背景与描述
在引言中我们已经提到了单体Agent/Agent平台的4个核心痛点,现在我们从技术架构的角度再深入分析一下这些痛点产生的根本原因:
| 单体Agent/Agent平台的痛点 | 根本原因(从技术架构角度) |
|---|---|
| 代码像一团乱麻,冲突不断 | 所有核心能力(定义注册、实例调度、能力调用、状态监控、资源管理)和所有Agent的业务逻辑都耦合在同一个代码仓库和同一个进程里 |
| 扩容缩容像过山车,成本高 | 所有核心能力和所有Agent实例都部署在同一组服务器上,无法独立扩容缩容 |
| 监控调试像猜谜语,定位慢 | 没有全链路可观测体系,日志、指标、链路追踪分散在不同的地方,无法关联起来 |
| 新增Agent像再造一个轮子,复用性差 | 没有标准的Agent定义规范和能力调用协议,每个Agent都要重新写一遍核心逻辑 |
4.1.3 问题解决思路
针对这些根本原因,我们的解决思路是:
- 解耦核心能力:将Agent平台的核心能力拆分成5个独立的微服务——Agent定义注册服务、Agent实例调度服务、Agent能力调用网关、Agent状态监控服务、Agent资源管理服务。
- 标准化Agent定义与调用:定义一套基于OpenAPI 3.0+JSON Schema的标准Agent定义规范,和一套基于gRPC+Protobuf的标准Agent能力调用协议。
- 容器化编排:用Docker将每个微服务和每个Agent实例打包成独立的容器,用Kubernetes做容器化编排,实现独立的扩容缩容和高可用。
- 构建全链路可观测体系:用Prometheus收集指标,用Grafana可视化指标,用Jaeger收集链路追踪,用ELK Stack(Elasticsearch+Logstash+Kibana)或Loki收集日志,并将它们关联起来。
4.1.4 概念结构与核心要素组成
现在我们来看一下AI Agentic Engineering 微服务架构的概念结构与核心要素组成——我们用一个Mermaid架构图来展示:
从上面的Mermaid架构图中,我们可以看到AI Agentic Engineering 微服务架构的5个核心层次和每个层次的核心要素:
4.1.4.1 用户交互层(User Interaction Layer)
这一层是Agent平台与用户/第三方系统的接口,它的核心要素包括:
- 企业内部Web UI/移动App:供企业员工使用的可视化界面,用户可以在这里注册Agent、查看Agent列表、调用Agent、查看Agent的执行历史和状态等。
- 命令行工具(CLI):供技术人员使用的命令行工具,技术人员可以在这里快速注册Agent、调试Agent、查看Agent的日志等。
- 第三方API客户端:供第三方系统(比如企业内部的ERP系统、CRM系统)使用的API客户端,第三方系统可以通过API调用Agent平台的能力。
4.1.4.2 API网关层(API Gateway Layer)
这一层是Agent平台的入口,它的核心要素是API网关(比如Kong、APISIX、Nginx Ingress),它的主要功能包括:
- 路由转发:将用户/第三方系统的请求转发到对应的核心管控微服务。
- 认证授权:验证用户/第三方系统的身份和权限(比如基于JWT的认证、基于RBAC的授权)。
- 限流熔断:防止用户/第三方系统的请求过多,导致核心管控微服务崩溃(比如用Sentinel做限流熔断)。
- 日志记录:记录所有用户/第三方系统的请求和响应日志。
- 协议转换:如果用户/第三方系统用的是HTTP/1.1,而核心管控微服务用的是gRPC,API网关可以负责协议转换。
4.1.4.3 核心管控微服务层(Core Control Microservices Layer)
这一层是Agent平台的核心,它的核心要素是5个独立的微服务——这5个微服务就是我们要解耦的Agent管控的核心能力:
| 微服务名称 | 英文缩写 | 核心功能 | 技术栈推荐 |
|---|---|---|---|
| Agent定义注册服务 | ARS | 负责Agent的定义、注册、查询、更新、删除;存储Agent的元数据(比如Agent的名称、描述、目标、能力列表、输入输出Schema) | Python+FastAPI+PostgreSQL+Redis |
| Agent实例调度服务 | ASS | 负责Agent实例的调度(比如根据用户的请求量调度多少个Agent实例)、任务的分配(比如将用户的请求分配给哪个空闲的Agent实例)、任务的重试(比如Agent实例执行任务失败时,自动重试) | Python+FastAPI+PostgreSQL+Redis+Kafka/RabbitMQ |
| Agent能力调用网关 | ACG | 负责Agent能力的统一调用(比如屏蔽不同Agent实例的通信协议差异)、能力的编排(比如将多个Agent的能力组合成一个新的能力)、能力的监控(比如统计每个Agent能力的调用次数、响应时间、成功率) | Go+gRPC+Protobuf+Redis+Sentinel |
| Agent状态监控服务 | AMS | 负责Agent实例和核心管控微服务的状态监控(比如Agent实例是否存活、CPU使用率、内存使用率)、任务的监控(比如任务是否执行成功、执行时间)、告警的发送(比如Agent实例宕机时,发送邮件或短信告警) | Go+Prometheus+Grafana+Jaeger+Loki+Alertmanager |
| Agent资源管理服务 | RMS | 负责Agent实例和核心管控微服务的资源管理(比如申请CPU、内存、GPU资源)、容器的编排(比如调用Kubernetes API创建、删除、更新Agent实例的容器)、资源的优化(比如根据Agent实例的使用情况,自动调整资源配额) | Go+Kubernetes API+PostgreSQL+Redis |
4.1.4.4 Agent实例层(Agent Instance Layer)
这一层是Agent平台的执行层,它的核心要素是多个Agent实例池——每个Agent实例池对应一个Agent的定义,包含多个相同的Agent实例:
- 通用Agent池:包含多个通用问答Agent实例,负责回答企业员工的通用问题(比如“公司的年假政策是什么?”)。
- 垂直Agent池:包含多个垂直领域Agent实例,负责回答企业员工的垂直领域问题(比如“这个简历是否符合Java开发工程师的要求?”)。
每个Agent实例的核心要素包括:
- Agent业务逻辑:基于LangChain/LangGraph或自定义框架实现的Agent业务逻辑。
- 大模型API客户端:调用大模型API的客户端(比如OpenAI Python SDK、通义千问Python SDK)。
- 工具客户端:调用其他工具API的客户端(比如向量数据库API客户端、OCR API客户端、企业内部ERP/CRM系统API客户端)。
- Prometheus Exporter:暴露Agent实例的指标给Prometheus收集。
- Jaeger Client:收集Agent实例的链路追踪给Jaeger。
- Loki Client:收集Agent实例的日志给Loki。
4.1.4.5 基础设施层(Infrastructure Layer)
这一层是Agent平台的基础,它的核心要素包括:
- 数据存储:
- PostgreSQL:存储Agent的定义、历史数据、用户信息、权限信息等结构化数据。
- Redis:存储Agent的状态、缓存、任务队列等非结构化数据。
- 向量数据库:存储企业内部的技术文档、知识库等非结构化文本数据的向量表示,供Agent检索使用(比如Milvus、Pinecone、Chroma)。
- 消息队列:
- Kafka/RabbitMQ:负责Agent任务和事件的异步传输(比如将用户的请求异步发送给Agent实例,将Agent实例的执行结果异步发送给用户)。
- 可观测:
- Prometheus:收集Agent实例和核心管控微服务的指标。
- Grafana:可视化Prometheus收集的指标。
- Jaeger:收集Agent实例和核心管控微服务的链路追踪。
- Loki:收集Agent实例和核心管控微服务的日志。
- Alertmanager:根据Prometheus的告警规则发送告警。
- 服务治理:
- Nacos/Consul:负责核心管控微服务和Agent实例的服务注册与发现。
- Sentinel:负责核心管控微服务和Agent实例的限流熔断。
4.1.5 概念之间的关系
现在我们来看一下AI Agentic Engineering 微服务架构中各个核心概念之间的关系——我们用两个图来展示:一个是概念核心属性维度对比表,另一个是概念联系的ER实体关系图。
4.1.5.1 概念核心属性维度对比表
首先,我们用一个Markdown表格来对比一下5个核心管控微服务的核心属性:
| 微服务名称 | 核心功能 | 数据存储依赖 | 消息队列依赖 | 通信协议 | 高可用要求 | 性能要求 | 扩容策略 |
|---|---|---|---|---|---|---|---|
| Agent定义注册服务(ARS) | 定义、注册、查询、更新、删除Agent | PostgreSQL(结构化数据)、Redis(热点数据缓存) | 无 | REST API/gRPC | 高(数据不可丢失) | 中(读多写少) | 读扩容(Redis缓存+PostgreSQL只读副本)、写扩容(分库分表,可选) |
| Agent实例调度服务(ASS) | 调度Agent实例、分配任务、重试任务 | PostgreSQL(任务历史数据)、Redis(任务队列、Agent实例状态) | Kafka/RabbitMQ(异步任务传输) | REST API/gRPC | 极高(调度不可中断) | 极高(每秒处理成千上万的任务) | 水平扩容(多个ASS实例通过Redis分布式锁协调) |
| Agent能力调用网关(ACG) | 统一调用Agent能力、编排能力、监控能力 | Redis(能力缓存、调用次数统计) | Kafka/RabbitMQ(异步能力调用日志) | gRPC(内部)、REST API(外部) | 高(调用不可中断) | 极高(每秒处理成千上万的调用) | 水平扩容(多个ACG实例通过负载均衡协调) |
| Agent状态监控服务(AMS) | 监控状态、监控任务、发送告警 | 无(数据存储在Prometheus、Grafana、Jaeger、Loki) | 无 | PromQL、Jaeger API、Loki API | 中(监控暂时不可用不影响平台运行) | 中(每秒处理成千上万的指标/日志/链路追踪) | 水平扩容(多个AMS实例通过Prometheus联邦协调,可选) |
| Agent资源管理服务(RMS) | 管理资源、编排容器、优化资源 | PostgreSQL(资源配额数据)、Redis(资源状态缓存) | 无 | Kubernetes API | 高(资源管理不可中断) | 中(每秒处理几十个容器操作) | 水平扩容(多个RMS实例通过Kubernetes Leader Election协调) |
4.1.5.2 概念联系的ER实体关系图
接下来,我们用一个Mermaid ER实体关系图来展示一下Agent平台中各个核心实体之间的关系:
4.2 第二步:环境搭建——从零开始构建本地开发环境
好了,理论部分我们讲完了,现在我们开始实战!首先,我们要搭建一套本地开发环境——我们会用Docker Compose来搭建基础设施层(PostgreSQL、Redis、Kafka、Zookeeper、Prometheus、Grafana、Jaeger、Loki、Alertmanager、Nacos),用Minikube来搭建Kubernetes集群(用来运行Agent实例和核心管控微服务)。
4.2.1 安装Docker Desktop
首先,我们要安装Docker Desktop——因为Docker Desktop包含了Docker Engine、Docker Compose和Minikube(可选),是搭建本地开发环境的最佳选择。
你可以根据你的操作系统,从Docker官网下载安装包:
- Windows:https://www.docker.com/products/docker-desktop/
- macOS:https://www.docker.com/products/docker-desktop/
- Linux:https://docs.docker.com/engine/install/ubuntu/(Ubuntu)、https://docs.docker.com/engine/install/centos/(CentOS)
安装完成后,打开Docker Desktop,确保Docker Engine是Running状态。
4.2.2 启用Docker Desktop自带的Kubernetes
接下来,我们要启用Docker Desktop自带的Kubernetes——这样我们就不用单独安装Minikube或Kind了。
启用步骤如下:
- 打开Docker Desktop,点击右上角的Settings(齿轮图标)。
- 点击左侧菜单的Kubernetes。
- 勾选Enable Kubernetes。
- 点击Apply & Restart。
- 等待Docker Desktop下载Kubernetes镜像并启动Kubernetes集群——这个过程可能需要5-10分钟,取决于你的网络速度。
启动完成后,你可以打开终端(Windows用PowerShell或WSL2的终端,macOS和Linux用Terminal),运行以下命令来验证Kubernetes集群是否正常运行:
kubectl get nodes
如果输出类似下面的内容,说明Kubernetes集群正常运行:
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 5m v1.29.2
4.2.3 创建Docker Compose文件搭建基础设施层
接下来,我们要创建一个Docker Compose文件(docker-compose.infra.yml)来搭建基础设施层——这个文件会启动PostgreSQL、Redis、Kafka、Zookeeper、Prometheus、Grafana、Jaeger、Loki、Alertmanager、Nacos。
首先,创建一个项目目录:
mkdir agentic-microservices
cd agentic-microservices
然后,在项目目录下创建一个docker-compose.infra.yml文件,内容如下:
version: '3.8'
services:
# Zookeeper(Kafka的依赖)
zookeeper:
image: confluentinc/cp-zookeeper:7.6.1
hostname: zookeeper
container_name: agentic-zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
volumes:
- zookeeper-data:/var/lib/zookeeper/data
- zookeeper-logs:/var/lib/zookeeper/log
networks:
- agentic-network
# Kafka(消息队列)
kafka:
image: confluentinc/cp-kafka:7.6.1
hostname: kafka
container_name: agentic-kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
volumes:
- kafka-data:/var/lib/kafka/data
networks:
- agentic-network
# Kafka UI(可选,用来管理Kafka)
kafka-ui:
image: provectuslabs/kafka-ui:v0.7.2
container_name: agentic-kafka-ui
depends_on:
- kafka
ports:
- "8080:8080"
environment:
KAFKA_CLUSTERS_0_NAME: agentic-kafka-cluster
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
networks:
- agentic-network
# PostgreSQL(关系型数据库)
postgres:
image: postgres:16.2-alpine
hostname: postgres
container_name: agentic-postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: agentic
POSTGRES_PASSWORD: agentic123
POSTGRES_DB: agentic_db
volumes:
- postgres-data:/var/lib/postgresql/data
- ./init-postgres.sql:/docker-entrypoint-initdb.d/init-postgres.sql
networks:
- agentic-network
# Redis(非关系型数据库/缓存)
redis:
image: redis:7.2.4-alpine
hostname: redis
container_name: agentic-redis
ports:
- "6379:6379"
command: redis-server --requirepass agentic123
volumes:
- redis-data:/data
networks:
- agentic-network
# RedisInsight(可选,用来管理Redis)
redisinsight:
image: redis/redisinsight:2.48.0
container_name: agentic-redisinsight
depends_on:
- redis
ports:
- "5540:5540"
volumes:
- redisinsight-data:/data
networks:
- agentic-network
# Nacos(服务注册与发现)
nacos:
image: nacos/nacos-server:v2.3.1
hostname: nacos
container_name: agentic-nacos
ports:
- "8848:8848"
- "9848:9848"
environment:
MODE: standalone
SPRING_DATASOURCE_PLATFORM: postgresql
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/agentic_db
SPRING_DATASOURCE_USERNAME: agentic
SPRING_DATASOURCE_PASSWORD: agentic123
NACOS_AUTH_ENABLE: true
NACOS_AUTH_TOKEN: SecretKey01234567890123456789012345678901234567890123456789012
更多推荐




所有评论(0)