# matecloud **Repository Path**: matevip/matecloud ## Basic Information - **Project Name**: matecloud - **Description**: MateCloud是一款基于Spring Cloud Alibaba的微服务架构。目前已经整合Spring Cloud Gateway、Spring Security Oauth2、Feign、Dubbo、JetCache、RocketMQ等服务套件,支持多租户的低代码平台,Saas平台开发套件。升级至SpringBoot 4.0.7 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: dev - **Homepage**: https://mate.vip - **GVP Project**: No ## Statistics - **Stars**: 2673 - **Forks**: 1022 - **Created**: 2020-04-02 - **Last Updated**: 2026-07-01 ## Categories & Tags **Categories**: microservice **Tags**: nacos, SpringBoot, SpringCloud, SpringCloudAlibaba, rocketmq ## README

MateCloud

MateCloud Spring Boot Spring Cloud Spring AI Vue Java License PRs Welcome

## 系统说明 - **MateCloud** 是 **AI 原生 · 云原生**的 DDD 微服务脚手架,基于 **Spring Boot 4 + Spring Cloud 2025 + Dubbo 3 + Spring AI 2.0**,单体(`mate-monolith`)与微服务**双形态一键切换**。 - 开源版含 **网关 / 认证 / 系统管理 / 通知** 四个核心服务 + **27 个即插即用 Starter(18 核心 + 9 高级)**,完整展示 DDD 四层 + CQRS 读写分离。 - **AI 原生**:Spring AI 2.0 + `@Tool` 自动发现 + 会话记忆 + 流式对话,支持 6 个 LLM 提供商(Anthropic / OpenAI / 智谱 / Minimax / DeepSeek / Ollama)。 - **MCP 原生工程闭环(Loop Engineering)**:`mate --mcp` 把 `mate-cli` 与业务 `@Tool` 暴露为 MCP 工具,让 AI Agent 在「观察 → 推理 → 执行 → 反馈」闭环中操作集群——查服务、调 RPC、生成代码、迁移数据库。 - 认证基于 **Sa-Token**(密码 / 短信 / 验证码登录);**Docker Compose** 一键编排,`mate-cli` 提供脚手架、Nacos 配置、服务发现、健康检查与代码生成。 **设计理念:** 最小公共、各司其职、Starter = 即插即用能力。 ## 架构全景

MateCloud 架构全景

接入层 → 网关(:9010)→ 业务服务(auth / system / notice,Dubbo RPC + DDD 四层)→ 能力层 Starter → 基础设施(MySQL / Redis / RabbitMQ / Nacos / MinIO),可观测性(Actuator / Prometheus / Tracing)横切。详见 [总体架构文档](mate-ui/apps/docs/architecture/overview.md)。 ## 界面预览 > 真实运行截图(前端 admin `:3000` + 后端网关 `:9010`),基于 mate-ui 设计系统。
工作台
工作台 · 概览 / 服务健康
菜单管理
菜单管理 · RBAC 菜单树
角色管理
角色管理 · 菜单 / 数据权限
管理员
管理员 · 分配角色
数据字典
数据字典 · 类型 / 数据
参数配置
参数配置 · 系统键值
身份接入
身份接入 · 企微/钉钉/飞书/LDAP
灰度发布
微服务 · 灰度发布 / 路由测试
登录审计
登录审计 · 日志 / UA / 状态
## 使用文档 MateCloud 提供了完整的部署与开发文档,涵盖架构设计、Starter 使用、CLI 命令、前端开发和生产部署等内容。 ```bash cd mate-ui && pnpm dev:docs # → http://localhost:5174 ``` ## 快速开始 ### 基础环境 - JDK 21+ - Maven 3.9+ - Docker & Docker Compose - Node.js 20+(运行 `mate-ui` 前端时需要) ### 启动服务 在项目根目录执行完整编译,再构建并启动本地服务栈: ```bash # 1. 编译 mvn clean install -DskipTests # 2. 启动基础设施(MySQL + Redis + RabbitMQ + Nacos + MinIO) make infra-up # 3. 初始化 Nacos 配置 java -jar mate-cli/target/mate-cli.jar config init # 4. 启动所有服务 make up ``` 服务启动后,通过网关端口 `9010` 访问后端接口,Nacos 控制台端口为 `8848`。 > **数据库自动初始化**:无需手动建表。`mate-system` 首次启动时,Flyway 自动执行 > `db/migration/` 下的迁移(`V1.0.0` 建表 → `V1.0.1` 种子数据 → ……),完成建表、 > 内置账号 `admin/admin123`、角色、菜单与字典的初始化。每个服务有独立的版本历史表 > `flyway_history_`。详见 [数据库迁移](mate-ui/apps/docs/deploy/database.md) 与 > [菜单配置](mate-ui/apps/docs/guide/menu-config.md)。 ### 启动前端 ```bash cd mate-ui pnpm install pnpm dev # → http://localhost:3000 ``` 默认开发账号:`admin` / `admin123` ## 核心依赖 | 依赖 | 版本 | | --- | --- | | Java | 21 | | Spring Boot | 4.0.7 | | Spring Cloud | 2025.1.2 | | Spring Cloud Alibaba | 2025.1.0.0 | | Spring AI | 2.0.0 | | Dubbo | 3.3.6 | | MyBatis Plus | 3.5.16 | | Sa-Token | 1.45.0 | | Redisson | 4.5.0 | | Vue | 3.5 | | Element Plus | latest | | Vite | latest | ## 功能特性 | 功能 | 说明 | | --- | --- | | **DDD 四层架构** | trigger / application / domain / infrastructure,领域层零框架依赖 | | **CQRS 读写分离** | CommandService 写 + QueryService 读,职责清晰 | | **微服务 · 单体双形态** | Spring Cloud + Dubbo 3 RPC + Nacos;`mate-monolith` 单体一键切换;灰度 · 限流 · Seata | | **27 个 Starter** | 18 核心 + 9 高级:持久化、缓存、锁、MQ、任务、分片、租户、安全、可观测、AI、测试…… | | **多租户 SaaS** | 行级隔离 / Schema 隔离 / 独立数据源三种模式 | | **AI 原生集成** | Spring AI 2.0 + @Tool 自动发现 + 会话记忆 + 流式对话 + 6 个 LLM 提供商 | | **MCP 原生工程闭环** | `mate --mcp` + 业务 @Tool 暴露为 MCP 工具,AI Agent 闭环操作集群(Loop Engineering)| | **分布式锁** | `@DistributedLock` 注解,Redisson 实现 | | **接口签名** | `@ApiSign` 防篡改,HMAC-SHA256 签名验证 | | **限流降级** | `@RateLimit` 注解限流 + Sentinel 动态规则 | | **审计日志** | `@AuditLog` 自动记录操作日志 | | **数据权限** | `@DataPermission` 注解式行级数据过滤 | | **幂等控制** | `@Idempotent` 防重复提交 | | **灰度发布** | Dubbo + Gateway 双链路灰度路由 | | **代码生成** | CLI 一键生成 DDD 四层代码 + Flyway 迁移 | | **MCP Server** | `mate-cli --mcp`,Claude Code / Claude Desktop 直接调用业务工具 | ## 模块说明 ```lua mate-ui -- Vue 3 前端 (pnpm monorepo) ├── apps/admin -- 管理后台 SPA [3000] ├── apps/docs -- VitePress 文档站 [5174] └── packages/ -- 共享包 (core, hooks, ui, utils) matecloud ├── mate-common -- 纯类型库(零自动配置) │ ├── mate-base -- BaseEntity, Result, BizException, ErrorCode │ └── mate-api -- RPC 接口、命令、响应、枚举 ├── mate-starters -- 13 个即插即用 Starter(7 核心 + 6 业务) │ ├── mate-ds-starter -- MyBatis Plus + Druid + Flyway │ ├── mate-web-starter -- 全局异常 + Jackson + DevTools │ ├── mate-cache-starter -- Caffeine L1 + Redis L2 + @DistributedLock │ ├── mate-nacos-starter -- Nacos 注册发现 + 配置中心 │ ├── mate-rpc-starter -- Dubbo RPC │ ├── mate-sa-token-starter -- Sa-Token(Servlet + Reactor) │ ├── mate-monitor-starter -- Actuator + Prometheus + Tracing │ ├── mate-mq-starter -- RabbitMQ + 延迟队列 │ ├── mate-job-starter -- XXL-Job 执行器 │ ├── mate-security-starter -- @ApiSign @RateLimit @AuditLog @Idempotent │ ├── mate-file-starter -- MinIO 上传/下载/预签名 │ ├── mate-excel-starter -- EasyExcel 导入导出 │ └── mate-tenant-starter -- 多租户(行级/Schema/独立数据源) ├── mate-starters-contrib -- 8 个高级 Starter(按需引入) │ ├── mate-seata-starter -- 分布式事务 │ ├── mate-sharding-starter -- ShardingSphere 分库分表 │ ├── mate-sentinel-starter -- Sentinel 限流降级 │ ├── mate-gray-starter -- 灰度发布 │ ├── mate-flow-starter -- 轻量工作流引擎 │ ├── mate-rule-starter -- Aviator 规则引擎 │ ├── mate-ai-starter -- Spring AI 2.0 + @Tool + MCP │ └── mate-test-starter -- Testcontainers + @MateTest ├── mate-gateway -- API 网关 [9010] ├── mate-auth -- 认证服务 [9020] ├── mate-cli -- CLI 工具 + MCP Server └── mate-biz ├── mate-system -- 系统管理(DDD 示范 + RBAC + 字典 + AI)[9030] └── mate-notice -- 通知服务(短信/邮件适配器)[9050] ``` ## 配置说明 - MateCloud 使用 **5 层配置**策略,服务的 `application.yml` 只需约 15 行。 - 环境变量 → Nacos 服务级配置 → Nacos 共享配置 → classpath 默认值 → 服务入口文件,优先级从高到低。 - 默认数据库脚本通过 Flyway 自动迁移,业务表前缀 `mate_`;每服务独立版本线(`flyway_history_`),详见 [数据库迁移文档](mate-ui/apps/docs/deploy/database.md)。 - 包名统一为 `vip.mate.*`,Starter 包名 `vip.mate.starter.*`。 - 详细配置策略参见 [`docs/conventions/config-strategy.md`](docs/conventions/config-strategy.md)。 ## AI 集成 `mate-ai-starter` 封装 Spring AI 2.0,提供三大能力: 1. **`@Tool` 自动发现** — 任何 Spring Bean 方法标注 `@Tool` 即可被 LLM 调用 2. **多提供商支持** — 一个环境变量切换 Anthropic / OpenAI / 智谱 / Minimax / DeepSeek / Ollama 3. **MCP Server 桥接** — Claude Code / Claude Desktop 可以直接调用集群中的 `@Tool` 方法 ```java @Component @RequiredArgsConstructor public class DictAiTools { private final IDictQueryService dictQueryService; @Tool(description = "List all dict entries for a given dictType.") public List listDictByType( @ToolParam(description = "Dict type code, e.g. 'user_status'") String dictType) { return dictQueryService.findByType(dictType); } } ``` ```bash # CLI 直接对话 java -jar mate-cli/target/mate-cli.jar ai chat "列出所有用户状态字典" # 启动 MCP Server(集成 Claude Code) java -jar mate-cli/target/mate-cli.jar --mcp ``` ## CLI 工具 ```bash mate new module mate-order --port 9060 # 新建业务模块(DDD 四层骨架) mate new aggregate Order --module mate-order # 新建聚合 mate service list # Nacos 注册的服务 mate service health # 健康检查 mate config init # 初始化 Nacos 共享配置 mate gen code --table mate_order # 代码生成 mate ai chat "..." # AI 对话 mate --mcp # 启动 MCP Server ``` ## 开源共建 ### 开源协议 MateCloud 开源软件遵循 [Apache 2.0 协议](https://www.apache.org/licenses/LICENSE-2.0.html),允许商业使用,但务必保留类作者、Copyright 信息。 ### 其他说明 1. 欢迎提交 [PR](https://github.com/matevip/matecloud/pulls),请基于 `dev` 分支提交,详见 [贡献指南](CONTRIBUTING.md)。 2. 欢迎提交 [Issue](https://github.com/matevip/matecloud/issues),请写清楚问题现象、开发环境和复现步骤。 3. 本项目遵循 [Contributor Covenant 行为准则](CODE_OF_CONDUCT.md)。 4. 安全漏洞请参阅 [安全策略](SECURITY.md) — **不要**创建公开 Issue。