这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
快速开始
5 分钟快速部署 DataMate
本指南将帮助您在 5 分钟内快速部署 DataMate 平台。
DataMate 支持两种主要的部署方式:
- Docker Compose:适合快速体验、开发测试环境
- Kubernetes/Helm:适合生产环境部署
前置条件
Docker Compose 部署
- Docker 20.10+
- Docker Compose 2.0+
- 至少 4GB 内存
- 至少 10GB 磁盘空间
Kubernetes 部署
- Kubernetes 1.20+
- Helm 3.0+
- kubectl 配置好集群连接
- 至少 8GB 内存
- 至少 20GB 磁盘空间
5 分钟快速部署(Docker Compose)
1. 拉取代码
git clone https://github.com/ModelEngine-Group/DataMate.git
cd DataMate
2. 启动服务
使用提供的 Makefile 进行一键部署:
执行命令后,系统会提示选择部署方式:
Choose a deployment method:
1. Docker/Docker-Compose
2. Kubernetes/Helm
Enter choice:
输入 1 选择 Docker Compose 部署。
3. 验证部署
服务启动后,可以通过以下方式访问:
- 前端界面:http://localhost:30000
- API 网关:http://localhost:8080
- 数据库:localhost:5432
4. 查看服务状态
您应该能看到以下容器在运行:
- datamate-frontend (前端服务)
- datamate-backend (后端服务)
- datamate-backend-python (Python 后端服务)
- datamate-gateway (API 网关)
- datamate-database (PostgreSQL 数据库)
- datamate-runtime (算子运行时)
可选组件安装
安装 Milvus 向量数据库
Milvus 用于知识库的向量存储和检索:
选择 Docker Compose 部署方式。
安装 Label Studio 标注工具
Label Studio 用于数据标注功能:
make install-label-studio
访问地址:http://localhost:30001
默认账号:
- 用户名:admin@demo.com
- 密码:demoadmin
安装 MinerU PDF 处理服务
MinerU 用于增强 PDF 文档处理能力:
make build-mineru
make install-mineru
安装 DeerFlow 服务
DeerFlow 用于工作流编排增强功能:
使用本地镜像开发
如果您修改了本地代码,可以使用本地镜像进行部署:
make build
make install dev=true
离线环境部署
对于离线环境,可以预先下载所有镜像:
镜像将保存在 dist/ 目录下。在目标机器上加载镜像:
卸载
卸载 DataMate
系统会提示是否删除数据卷:
- 选择
1:删除所有数据(包括数据集、配置等) - 选择
2:保留数据卷
仅卸载特定组件
# 卸载 Label Studio
make uninstall-label-studio
# 卸载 Milvus
make uninstall-milvus
# 卸载 DeerFlow
make uninstall-deer-flow
下一步
常见问题
Q: 服务启动失败怎么办?
A: 首先检查端口是否被占用:
# 检查端口占用
lsof -i :30000
lsof -i :8080
如果端口被占用,可以修改 deployment/docker/datamate/docker-compose.yml 中的端口映射。
Q: 如何查看服务日志?
# 查看所有服务日志
docker compose -f deployment/docker/datamate/docker-compose.yml logs
# 查看特定服务日志
docker compose -f deployment/docker/datamate/docker-compose.yml logs -f datamate-backend
Q: 数据存储在哪里?
数据通过 Docker 卷进行持久化存储:
datamate-dataset-volume:数据集文件datamate-postgresql-volume:数据库数据datamate-log-volume:日志文件
可以使用以下命令查看所有卷:
docker volume ls | grep datamate
1 - 安装部署指南
详细的 DataMate 安装和配置说明
本文档提供 DataMate 平台的详细安装和配置说明。
系统要求
最低配置
| 组件 | 最低要求 | 推荐配置 |
|---|
| CPU | 4 核 | 8 核+ |
| 内存 | 8 GB | 16 GB+ |
| 磁盘 | 50 GB | 100 GB+ |
| 操作系统 | Linux/macOS/Windows | Linux (Ubuntu 20.04+) |
软件依赖
Docker Compose 部署
- Docker 20.10+
- Docker Compose 2.0+
- Git (可选,用于克隆代码)
- Make (可选,用于使用 Makefile)
Kubernetes 部署
- Kubernetes 1.20+
- Helm 3.0+
- kubectl (与集群版本匹配)
- Git (可选,用于克隆代码)
- Make (可选,使用 Makefile)
部署方式对比
| 特性 | Docker Compose | Kubernetes |
|---|
| 部署难度 | ⭐ 简单 | ⭐⭐⭐ 复杂 |
| 资源利用 | ⭐⭐ 一般 | ⭐⭐⭐⭐ 高 |
| 高可用 | ❌ 不支持 | ✅ 支持 |
| 扩展性 | ⭐⭐ 一般 | ⭐⭐⭐⭐ 强 |
| 适用场景 | 开发测试、小规模部署 | 生产环境、大规模部署 |
Docker Compose 部署
基础部署
1. 准备工作
# 克隆代码仓库
git clone https://github.com/ModelEngine-Group/DataMate.git
cd DataMate
# 检查 Docker 和 Docker Compose 版本
docker --version
docker compose version
2. 使用 Makefile 部署
# 一键部署(包括 Milvus)
make install
在提示中选择 1. Docker/Docker-Compose。
3. 直接使用 Docker Compose
如果没有安装 Make,可以直接使用 Docker Compose:
# 设置镜像仓库(可选)
export REGISTRY=ghcr.io/modelengine-group/
# 启动基础服务
docker compose -f deployment/docker/datamate/docker-compose.yml --profile milvus up -d
4. 验证部署
# 检查容器状态
docker ps
# 查看服务日志
docker compose -f deployment/docker/datamate/docker-compose.yml logs -f
# 访问前端界面
open http://localhost:30000
可选组件部署
Milvus 向量数据库
Milvus 用于知识库的向量存储和检索。
# 使用 Makefile
make install-milvus
# 或使用 Docker Compose
docker compose -f deployment/docker/datamate/docker-compose.yml --profile milvus up -d
组件包括:
- milvus-standalone (19530, 9091)
- milvus-minio (9000, 9001)
- milvus-etcd
Label Studio 标注工具
# 使用 Makefile
make install-label-studio
# 或使用 Docker Compose
docker compose -f deployment/docker/datamate/docker-compose.yml --profile label-studio up -d
访问地址:http://localhost:30001
默认账号:
- 用户名:admin@demo.com
- 密码:demoadmin
MinerU PDF 处理服务
MinerU 提供增强的 PDF 文档解析能力,支持 NPU 加速。
# 构建 MinerU 镜像
make build-mineru
# 部署 MinerU
make install-mineru
支持的平台:
- mineru (默认,910B)
- mineru-910C
- mineru-310P
DeerFlow 工作流服务
# 使用 Makefile
make install-deer-flow
# 或使用 Docker Compose
docker compose -f deployment/docker/datamate/docker-compose.yml --profile deer-flow up -d
Redis 缓存
# 使用 Makefile
make install-redis
# 或使用 Docker Compose
docker compose -f deployment/docker/datamate/docker-compose.yml --profile redis up -d
环境变量配置
可以在 deployment/docker/datamate/docker-compose.yml 中配置以下环境变量:
| 变量名 | 默认值 | 说明 |
|---|
DB_PASSWORD | password | 数据库密码 |
DATAMATE_JWT_ENABLE | false | 是否启用 JWT 认证 |
REGISTRY | ghcr.io/modelengine-group/ | 镜像仓库地址 |
VERSION | latest | 镜像版本 |
LABEL_STUDIO_HOST | - | Label Studio 访问地址 |
数据卷管理
DataMate 使用以下 Docker 卷进行数据持久化:
# 查看所有卷
docker volume ls | grep datamate
# 查看卷详情
docker volume inspect datamate-dataset-volume
# 备份卷数据
docker run --rm -v datamate-dataset-volume:/data -v $(pwd):/backup \
ubuntu tar czf /backup/dataset-backup.tar.gz /data
# 恢复卷数据
docker run --rm -v datamate-dataset-volume:/data -v $(pwd):/backup \
ubuntu tar xzf /backup/dataset-backup.tar.gz -C /
Kubernetes/Helm 部署
前置准备
# 检查集群连接
kubectl cluster-info
kubectl get nodes
# 检查 Helm 版本
helm version
# 创建命名空间(可选)
kubectl create namespace datamate
使用 Makefile 部署
# 部署 DataMate
make install INSTALLER=k8s
# 或直接部署到指定命名空间
make install NAMESPACE=datamate INSTALLER=k8s
使用 Helm 部署
1. 部署基础服务
# 添加 Helm 仓库(如果需要)
# helm repo add datamate https://charts.datamate.io
# 部署 DataMate
helm upgrade datamate deployment/helm/datamate/ \
--install \
--namespace datamate \
--create-namespace \
--set global.image.repository=ghcr.io/modelengine-group/
# 查看部署状态
kubectl get pods -n datamate
2. 配置 Ingress(可选)
# 编辑 values.yaml
cat >> deployment/helm/datamate/values.yaml << EOF
ingress:
enabled: true
className: nginx
hosts:
- host: datamate.example.com
paths:
- path: /
pathType: Prefix
EOF
# 重新部署
helm upgrade datamate deployment/helm/datamate/ \
--namespace datamate \
-f deployment/helm/datamate/values.yaml
3. 部署可选组件
# 部署 Milvus
helm upgrade milvus deployment/helm/milvus \
--install \
--namespace datamate
# 部署 Label Studio
helm upgrade label-studio deployment/helm/label-studio/ \
--install \
--namespace datamate
# 部署 DeerFlow
helm upgrade deer-flow deployment/helm/deer-flow \
--install \
--namespace datamate \
--set global.image.repository=ghcr.io/modelengine-group/
Helm 配置选项
主要配置项(deployment/helm/datamate/values.yaml):
# 镜像配置
global:
image:
repository: ghcr.io/modelengine-group/
pullPolicy: IfNotPresent
tag: latest
# 服务配置
services:
frontend:
port: 30000
gateway:
port: 8080
backend:
port: 8092
# 资源配置
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2000m"
# 存储配置
persistence:
enabled: true
storageClass: standard
size: 50Gi
查看日志和调试
# 查看 Pod 状态
kubectl get pods -n datamate
# 查看服务日志
kubectl logs -f deployment/datamate-backend -n datamate
# 查看所有资源
kubectl get all -n datamate
# 端口转发进行本地调试
kubectl port-forward svc/datamate-gateway 8080:8080 -n datamate
离线环境部署
准备离线镜像包
1. 下载镜像
# 下载所有镜像到本地
make download SAVE=true
# 下载指定版本
make download VERSION=v1.0.0 SAVE=true
# 指定平台下载
make download PLATFORM=linux/amd64 SAVE=true
镜像将保存在 dist/ 目录。
2. 打包传输
# 打包
tar czf datamate-images.tar.gz dist/
# 传输到目标服务器
scp datamate-images.tar.gz user@target-server:/tmp/
离线安装
1. 加载镜像
# 在目标服务器上解压
tar xzf datamate-images.tar.gz
# 加载所有镜像
make load-images
# 或手动加载
for img in dist/*.tar; do
docker load -i $img
done
2. 修改配置
使用本地镜像时,设置 REGISTRY 为空:
# Docker Compose 部署
REGISTRY= docker compose -f deployment/docker/datamate/docker-compose.yml up -d
# 或使用 Makefile
make install dev=true
3. 离线依赖
某些组件可能需要额外的离线资源:
- Python 包:预装在运行时镜像中
- Node 包:预装在前端镜像中
- Java 包:预装在后端镜像中
升级指南
Docker Compose 升级
# 1. 备份数据
docker run --rm -v datamate-postgresql-volume:/data -v $(pwd):/backup \
ubuntu tar czf /backup/postgres-backup.tar.gz /data
# 2. 拉取新镜像
docker pull ghcr.io/modelengine-group/datamate-backend:latest
docker pull ghcr.io/modelengine-group/datamate-frontend:latest
# ... 其他镜像
# 3. 停止服务
docker compose -f deployment/docker/datamate/docker-compose.yml down
# 4. 启动新版本
docker compose -f deployment/docker/datamate/docker-compose.yml up -d
# 5. 验证升级
docker ps
docker logs -f datamate-backend
或使用 Makefile:
make datamate-docker-upgrade
Kubernetes 升级
# 1. 备份数据
kubectl exec -n datamate deployment/datamate-database -- \
pg_dump -U postgres datamate > backup.sql
# 2. 更新 Helm Chart
helm upgrade datamate deployment/helm/datamate/ \
--namespace datamate \
--set global.image.tag=new-version
# 3. 监控升级状态
kubectl rollout status deployment/datamate-backend -n datamate
# 4. 查看新 Pod 状态
kubectl get pods -n datamate
卸载
Docker Compose 完全卸载
# 使用 Makefile
make uninstall
# 选择删除数据卷以完全清理
或手动卸载:
# 停止并删除容器
docker compose -f deployment/docker/datamate/docker-compose.yml --profile milvus --profile label-studio down -v
# 删除所有卷
docker volume rm datamate-dataset-volume \
datamate-postgresql-volume \
datamate-log-volume \
# ... 其他卷
# 删除网络
docker network rm datamate-network
Kubernetes 完全卸载
# 卸载所有组件
make uninstall INSTALLER=k8s
# 或使用 Helm
helm uninstall datamate -n datamate
helm uninstall milvus -n datamate
helm uninstall label-studio -n datamate
helm uninstall deer-flow -n datamate
# 删除命名空间
kubectl delete namespace datamate
# 删除 PV/PVC(根据存储类)
kubectl delete pvc -n datamate --all
故障排查
常见问题
1. 服务无法启动
# 检查端口占用
netstat -tlnp | grep -E '30000|8080|5432'
# 检查磁盘空间
df -h
# 检查内存使用
free -h
# 查看详细日志
docker logs datamate-backend --tail 100
2. 数据库连接失败
# 检查数据库容器
docker ps | grep database
# 测试数据库连接
docker exec -it datamate-database psql -U postgres -d datamate
# 检查数据库日志
docker logs datamate-database
3. 前端无法访问后端
# 检查网关配置
docker logs datamate-gateway
# 检查网络连接
docker network inspect datamate-network
# 测试 API 连接
curl http://localhost:8080/api/v1/health
4. Milvus 连接失败
# 检查 Milvus 状态
docker logs milvus-standalone
# 检查依赖服务
docker logs milvus-etcd
docker logs milvus-minio
# 测试 Milvus 连接
curl http://localhost:19530/healthz
日志位置
| 服务 | 日志位置 |
|---|
| 前端 | /var/log/datamate/frontend |
| 后端 | /var/log/datamate |
| 数据库 | /var/log/datamate/database |
| Ray 运行时 | /tmp/ray |
获取帮助
如果遇到问题:
- 查看 故障排查文档
- 搜索 GitHub Issues
- 提交新的 Issue 并附上详细的错误日志
2 - 系统架构
DataMate 系统架构设计说明
本文档详细介绍 DataMate 的系统架构、技术栈和设计理念。
整体架构
DataMate 采用微服务架构,将系统拆分为多个独立的服务,每个服务负责特定的业务功能。这种架构提供了良好的可扩展性、可维护性和容错性。
┌─────────────────────────────────────────────────────────────────┐
│ 前端层 │
│ (React + TypeScript) │
│ Ant Design + Tailwind │
└────────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ API 网关层 │
│ (Spring Cloud Gateway) │
│ 端口: 8080 │
└────────────────────────┬────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Java 后端 │ │ Python 后端 │ │ 运行时服务 │
│ 服务组 │ │ 服务 │ │ (Ray) │
├──────────────┤ ├──────────────┤ ├──────────────┤
│· Main App │ │· RAG Service │ │· Operator │
│· Data Mgmt │ │· LangChain │ │ Execution │
│· Collection │ │· FastAPI │ │ │
│· Cleaning │ │ │ │ │
│· Annotation │ │ │ │ │
│· Synthesis │ │ │ │ │
│· Evaluation │ │ │ │ │
│· Operator │ │ │ │ │
│· Pipeline │ │ │ │ │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────────────┼────────────────┘
▼
┌──────────────┴──────────────┐
│ │
┌────▼────┐ ┌─────────┐ ┌─────▼────┐
│PostgreSQL│ │ Redis │ │ Milvus │
│ (5432) │ │ (6379) │ │ (19530) │
└──────────┘ └─────────┘ └──────────┘
│
┌─────▼─────┐
│ MinIO │
│ (9000) │
└───────────┘
技术栈
前端技术栈
| 技术 | 版本 | 用途 |
|---|
| React | 18.x | UI 框架 |
| TypeScript | 5.x | 类型安全 |
| Ant Design | 5.x | UI 组件库 |
| Tailwind CSS | 3.x | 样式框架 |
| Redux Toolkit | 2.x | 状态管理 |
| React Router | 6.x | 路由管理 |
| Vite | 5.x | 构建工具 |
后端技术栈(Java)
| 技术 | 版本 | 用途 |
|---|
| Java | 21 | 运行时环境 |
| Spring Boot | 3.5.6 | 应用框架 |
| Spring Cloud | 2023.x | 微服务框架 |
| MyBatis Plus | 3.x | ORM 框架 |
| PostgreSQL Driver | 42.x | 数据库驱动 |
| Redis | 5.x | 缓存客户端 |
| MinIO | 8.x | 对象存储客户端 |
后端技术栈(Python)
| 技术 | 版本 | 用途 |
|---|
| Python | 3.11+ | 运行时环境 |
| FastAPI | 0.100+ | Web 框架 |
| LangChain | 0.1+ | LLM 应用框架 |
| Ray | 2.x | 分布式计算 |
| Pydantic | 2.x | 数据验证 |
数据存储
| 技术 | 版本 | 用途 |
|---|
| PostgreSQL | 15+ | 主数据库 |
| Redis | 8.x | 缓存和消息队列 |
| Milvus | 2.6.5 | 向量数据库 |
| MinIO | RELEASE.2024+ | 对象存储 |
微服务架构
服务列表
| 服务名称 | 端口 | 技术栈 | 功能描述 |
|---|
| API Gateway | 8080 | Spring Cloud Gateway | 统一入口、路由、认证 |
| Frontend | 30000 | React | 前端界面 |
| Main Application | - | Spring Boot | 核心业务逻辑 |
| Data Management Service | 8092 | Spring Boot | 数据集管理 |
| Data Collection Service | - | Spring Boot | 数据采集任务 |
| Data Cleaning Service | - | Spring Boot | 数据清洗任务 |
| Data Annotation Service | - | Spring Boot | 数据标注任务 |
| Data Synthesis Service | - | Spring Boot | 数据合成任务 |
| Data Evaluation Service | - | Spring Boot | 数据评估任务 |
| Operator Market Service | - | Spring Boot | 算子市场 |
| RAG Indexer Service | - | Spring Boot | 知识库索引 |
| Runtime Service | 8081 | Python + Ray | 算子执行引擎 |
| Backend Python Service | 18000 | FastAPI | Python 后端服务 |
| Database | 5432 | PostgreSQL | 数据库 |
服务通信
同步通信
- API Gateway → 后端服务:HTTP/REST
- 前端 → API Gateway:HTTP/REST
- 后端服务之间:HTTP/REST (Feign Client)
异步通信
- 任务执行:通过数据库任务队列
- 事件通知:Redis Pub/Sub
服务发现与注册
DataMate 使用简单的服务注册机制:
- 服务启动时向数据库注册
- API Gateway 从数据库获取服务列表
- 支持服务的动态扩缩容
数据架构
数据流转
┌─────────────┐
│ 数据采集 │ 采集任务配置
│ Collection │ → DataX → 原始数据
└──────┬──────┘
│
▼
┌─────────────┐
│ 数据管理 │ 数据集管理、文件上传
│ Management │ → 结构化存储
└──────┬──────┘
│
├──────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 数据清洗 │ │ 知识库 │
│ Cleaning │ │ Knowledge │
│ │ │ Base │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 数据标注 │ │ 向量索引 │
│ Annotation │ │ Milvus │
└──────┬──────┘ └──────┬──────┘
│ │
▼ │
┌─────────────┐ │
│ 数据合成 │ │
│ Synthesis │ │
└──────┬──────┘ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 数据评估 │ │ RAG 检索 │
│ Evaluation │ │ Retrieval │
└─────────────┘ └─────────────┘
数据存储模型
PostgreSQL
- 业务数据:用户、数据集、任务、配置
- 关系数据:服务间的关联关系
- 事务数据:需要强一致性的数据
Redis
- 缓存数据:热点数据缓存
- 会话数据:用户会话信息
- 任务队列:异步任务队列
Milvus
- 向量数据:文档向量 embeddings
- 向量索引:高效的相似度搜索
MinIO
- 文件存储:原始文件、处理结果
- 大数据文件:不适合数据库存储的文件
部署架构
Docker Compose 部署
┌────────────────────────────────────────────────┐
│ Docker Network │
│ datamate-network │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Frontend │ │ Gateway │ │ Backend │ │
│ │ :30000 │ │ :8080 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Backend │ │ Runtime │ │Database │ │
│ │ Python │ │ :8081 │ │ :5432 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Milvus │ │ MinIO │ │ etcd │ │
│ │ :19530 │ │ :9000 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────────┘
Kubernetes 部署
┌────────────────────────────────────────────────┐
│ Kubernetes Cluster │
│ │
│ Namespace: datamate │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ Deployment │ │ Deployment │ │
│ │ Frontend │ │ Gateway │ │
│ │ (3 Pods) │ │ (2 Pods) │ │
│ └─────┬──────┘ └─────┬──────┘ │
│ │ │ │
│ ┌─────▼────────────────▼──────┐ │
│ │ Service (LoadBalancer) │ │
│ └──────────────────────────────┘ │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ StatefulSet│ │ Deployment │ │
│ │ Database │ │ Backend │ │
│ └────────────┘ └────────────┘ │
└────────────────────────────────────────────────┘
安全架构
认证与授权
JWT 认证(可选)
datamate:
jwt:
enable: true # 启用 JWT 认证
secret: your-secret-key
expiration: 86400 # 24 小时
API Key 认证
datamate:
api-key:
enable: false
数据安全
传输加密
- API Gateway 支持 HTTPS/TLS
- 内部服务通信可配置加密
存储加密
- 数据库支持透明数据加密 (TDE)
- MinIO 支持服务端加密
- Milvus 支持加密存储
网络隔离
- Docker Network 隔离
- Kubernetes Network Policy
- VPC 隔离(云环境)
访问控制
基于角色的访问控制 (RBAC)
- 管理员:所有权限
- 数据管理员:数据管理权限
- 标注员:标注权限
- 查看者:只读权限
数据权限
扩展性设计
水平扩展
无状态服务
- 前端:支持多副本
- Gateway:支持多副本
- Backend 服务:支持多副本
有状态服务
- 数据库:主从复制、分库分表
- Milvus:分布式部署
- MinIO:分布式纠删码
垂直扩展
资源配置
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "4Gi"
cpu: "2000m"
缓存策略
多级缓存
- 浏览器缓存:静态资源
- CDN 缓存:公共资源
- Redis 缓存:热点数据
- 数据库缓存:查询缓存
监控与可观测性
日志管理
日志级别
- DEBUG:详细调试信息
- INFO:一般信息
- WARN:警告信息
- ERROR:错误信息
日志存储
/var/log/datamate/
├── frontend/
├── backend/
├── database/
└── runtime/
性能监控
指标收集
- JVM 指标
- HTTP 指标
- 数据库指标
- 自定义业务指标
监控工具(可选)
- Prometheus + Grafana
- ELK Stack (Elasticsearch + Logstash + Kibana)
高可用设计
服务高可用
健康检查
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
自动重启
- Docker restart policy
- Kubernetes restart policy
数据高可用
数据库
对象存储
向量数据库
性能优化
前端优化
后端优化
数据库优化
下一步
3 - 开发环境搭建
DataMate 本地开发环境配置指南
本文档介绍如何搭建 DataMate 的本地开发环境。
前置要求
必需软件
| 软件 | 版本要求 | 用途 |
|---|
| Node.js | 18.x+ | 前端开发 |
| pnpm | 8.x+ | 前端包管理 |
| Java | 21 | 后端开发 |
| Maven | 3.9+ | 后端构建 |
| Python | 3.11+ | Python 服务开发 |
| Docker | 20.10+ | 容器化部署 |
| Docker Compose | 2.0+ | 服务编排 |
| Git | 2.x+ | 版本控制 |
| Make | 4.x+ | 构建自动化 |
推荐软件
- IDE:IntelliJ IDEA (后端) + VS Code (前端/Python)
- 数据库客户端:DBeaver、pgAdmin
- API 测试工具:Postman、curl
- Git 客户端:GitKraken、SourceTree
代码结构
DataMate/
├── backend/ # Java 后端
│ ├── services/ # 微服务模块
│ │ ├── main-application/
│ │ ├── data-management-service/
│ │ ├── data-cleaning-service/
│ │ ├── data-collection-service/
│ │ ├── data-annotation-service/
│ │ ├── data-synthesis-service/
│ │ ├── data-evaluation-service/
│ │ ├── operator-market-service/
│ │ └── rag-indexer-service/
│ ├── openapi/ # OpenAPI 规范
│ └── scripts/ # 构建脚本
├── frontend/ # React 前端
│ ├── src/
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API 服务
│ │ ├── store/ # Redux store
│ │ └── routes/ # 路由配置
│ └── package.json
├── runtime/ # Python 运行时
│ ├── deer-flow/ # DeerFlow 集成
│ └── datamate/ # DataMate 运行时
└── deployment/ # 部署配置
├── docker/ # Docker 配置
└── helm/ # Helm Charts
后端开发环境
1. 安装 Java 21
# macOS (使用 Homebrew)
brew install openjdk@21
# Linux (Ubuntu/Debian)
sudo apt update
sudo apt install openjdk-21-jdk
# 验证安装
java -version
2. 安装 Maven
# macOS
brew install maven
# Linux
sudo apt install maven
# 验证安装
mvn -version
3. 配置 IDE(IntelliJ IDEA)
安装插件
- Lombok Plugin
- MyBatis Plugin
- Rainbow Brackets
- GitToolBox
导入项目
- 打开 IntelliJ IDEA
- 选择
File → Open - 选择
backend 目录 - 等待 Maven 依赖下载完成
配置运行配置
创建 Spring Boot 运行配置:
- 主类:对应服务的 Application 类
- 工作目录:服务模块目录
- VM 参数:
-Dspring.profiles.active=dev
4. 配置数据库
启动本地数据库(Docker)
# 仅启动数据库
docker compose -f deployment/docker/datamate/docker-compose.yml up -d datamate-database
# 查看数据库连接信息
docker logs datamate-database
默认连接信息:
- 主机:localhost
- 端口:5432
- 数据库:datamate
- 用户名:postgres
- 密码:password
初始化数据库
# 使用 Flyway 迁移(如果配置)
mvn flyway:migrate
# 或执行 SQL 脚本
psql -h localhost -U postgres -d datamate -f schema.sql
5. 运行后端服务
使用 Maven 运行
cd backend/services/main-application
mvn spring-boot:run
使用 IDE 运行
- 找到对应的 Application 类
- 右键 → Run
- 访问 http://localhost:8080
6. 开发配置
编辑 application-dev.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/datamate
username: postgres
password: password
jpa:
show-sql: true
hibernate:
ddl-auto: update
logging:
level:
com.datamate: DEBUG
前端开发环境
1. 安装 Node.js
# macOS (使用 Homebrew)
brew install node@18
# Linux (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# 验证安装
node -v
npm -v
2. 安装 pnpm
npm install -g pnpm
# 验证安装
pnpm -v
3. 安装依赖
cd frontend
# 安装依赖
pnpm install
4. 配置开发环境
创建 .env.development:
# API 地址
VITE_API_BASE_URL=http://localhost:8080
VITE_API_TIMEOUT=30000
# 其他配置
VITE_APP_TITLE=DataMate Dev
5. 启动开发服务器
# 启动开发服务器
pnpm dev
# 或指定端口
pnpm dev --port 3000
访问 http://localhost:3000
6. 构建生产版本
# 构建
pnpm build
# 预览构建结果
pnpm preview
7. 前端开发技巧
热更新
- 修改
.tsx 或 .css 文件会自动热更新 - 修改配置文件需要重启
代理配置
在 vite.config.ts 中配置代理:
server: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
}
}
}
路径别名
import MyComponent from '@/components/MyComponent';
import { useStore } from '@/store/hooks';
Python 服务开发环境
1. 安装 Python 3.11
# macOS
brew install python@3.11
# Linux
sudo apt install python3.11 python3.11-venv
# 验证安装
python3.11 --version
2. 创建虚拟环境
# 进入项目目录
cd runtime/datamate
# 创建虚拟环境
python3.11 -m venv venv
# 激活虚拟环境
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
3. 安装依赖
# 安装依赖
pip install -r requirements.txt
# 或使用 uv(更快)
pip install uv
uv pip install -r requirements.txt
4. 配置环境变量
创建 .env 文件:
# 数据库配置
PG_HOST=localhost
PG_PORT=5432
PG_USER=postgres
PG_PASSWORD=password
PG_DATABASE=datamate
# 日志级别
log_level=DEBUG
# JWT 配置
datamate_jwt_enable=false
5. 运行 Python 服务
# 运行运行时服务
python /opt/runtime/datamate/operator_runtime.py --port 8081
# 或使用 FastAPI
uvicorn main:app --reload --port 18000
6. Python 开发工具
推荐插件
- Python (VS Code)
- Pylance
- Python Test Explorer
代码格式化
# Black
pip install black
black .
# isort
pip install isort
isort .
# 自动格式化
pip install autopep8
本地调试
1. 启动所有服务
使用 Docker Compose
# 启动基础服务(数据库、Redis 等)
docker compose -f deployment/docker/datamate/docker-compose.yml up -d \
datamate-database \
datamate-redis
# 启动 Milvus(可选)
docker compose -f deployment/docker/datamate/docker-compose.yml --profile milvus up -d
启动后端服务
# 终端 1:启动 Main Application
cd backend/services/main-application
mvn spring-boot:run
# 终端 2:启动 Data Management Service
cd backend/services/data-management-service
mvn spring-boot:run
# ... 其他服务
启动前端
启动 Python 服务
# 终端 N:启动运行时服务
cd runtime/datamate
python operator_runtime.py --port 8081
# 终端 N+1:启动后端 Python 服务
cd backend-python
uvicorn main:app --reload --port 18000
2. 调试技巧
后端调试
在 IntelliJ IDEA 中:
- 在代码行号处点击设置断点
- 右键 → Debug 运行配置
- 发送请求触发断点
前端调试
在浏览器中:
- 按 F12 打开开发者工具
- 使用
console.log 或 debugger 语句 - React DevTools 查看组件状态
Python 调试
在 VS Code 中:
- 安装 Python 扩展
- 创建
launch.json 配置 - 设置断点并 F5 启动调试
3. 日志查看
# Docker 容器日志
docker logs -f datamate-backend
# 应用日志
tail -f /var/log/datamate/backend/app.log
# 只查看错误日志
tail -f /var/log/datamate/backend/app.log | grep ERROR
代码规范
Java 代码规范
命名规范
- 类名:大驼峰
UserService - 方法名:小驼峰
getUserById - 常量:全大写
MAX_SIZE - 变量:小驼峰
userName
注释规范
/**
* 用户服务
*
* @author Your Name
* @since 1.0.0
*/
public class UserService {
/**
* 根据用户 ID 获取用户信息
*
* @param userId 用户 ID
* @return 用户信息
* @throws UserNotFoundException 用户不存在异常
*/
public User getUserById(Long userId) {
// ...
}
}
TypeScript 代码规范
命名规范
- 组件:大驼峰
UserProfile - 类型/接口:大驼峰
UserData - 函数:小驼峰
getUserData - 常量:全大写
API_BASE_URL
组件规范
interface UserProfileProps {
userId: string;
onUpdate?: () => void;
}
export const UserProfile: React.FC<UserProfileProps> = ({
userId,
onUpdate
}) => {
// 组件逻辑
return <div>...</div>;
};
export default UserProfile;
Python 代码规范
遵循 PEP 8
def get_user(user_id: int) -> dict:
"""
获取用户信息
Args:
user_id: 用户 ID
Returns:
用户信息字典
"""
# ...
测试
后端测试
# 单元测试
mvn test
# 集成测试
mvn verify
# 生成测试报告
mvn jacoco:report
前端测试
# 单元测试
pnpm test
# E2E 测试
pnpm test:e2e
# 测试覆盖率
pnpm test:coverage
常见问题
后端启动失败
- 检查 Java 版本:
java -version - 检查端口占用:
lsof -i :8080 - 查看详细日志
- 清理并重新构建:
mvn clean install
前端启动失败
- 检查 Node 版本:
node -v - 删除 node_modules 重新安装:
rm -rf node_modules && pnpm install - 检查端口占用:
lsof -i :3000 - 清理缓存:
pnpm store prune
数据库连接失败
- 检查数据库是否启动:
docker ps | grep postgres - 测试连接:
psql -h localhost -U postgres -d datamate - 检查防火墙设置
- 验证连接配置
下一步