注册服务

This commit is contained in:
2026-02-09 23:59:25 +08:00
parent f145df4fa6
commit 3c03777b97
11 changed files with 865 additions and 456 deletions

View File

@@ -0,0 +1,67 @@
# 执行服务注册管理解决方案
## 1. 任务概述
根据服务注册管理解决方案文档,执行相应的实现步骤,确保服务注册管理功能正常工作。
## 2. 执行步骤
### 2.1 检查后端服务状态
- **任务**:检查后端服务是否正常运行
- **操作**:查看后端服务的运行状态,确保服务在 http://0.0.0.0:8001 上运行
- **验证**:服务启动成功,无错误信息
### 2.2 检查前端服务状态
- **任务**:检查前端服务是否正常运行
- **操作**:查看前端服务的运行状态,确保服务在 http://localhost:3000 上运行
- **验证**:服务启动成功,无错误信息
### 2.3 测试服务注册功能
- **任务**:测试服务注册功能是否正常
- **操作**:使用管理员账号登录系统,进入服务注册页面,填写注册信息并提交
- **验证**:服务注册成功,返回 201 Created 状态码
### 2.4 测试服务管理功能
- **任务**:测试服务管理功能是否正常
- **操作**:进入服务管理页面,测试服务列表、服务详情、服务操作(启动、停止、重启)、服务删除、服务状态、服务日志等功能
- **验证**:所有功能正常工作,返回相应的成功状态码
### 2.5 测试服务分组功能
- **任务**:测试服务分组功能是否正常
- **操作**:进入服务分组页面,测试创建分组、分组列表、分组详情、更新分组、删除分组等功能
- **验证**:所有功能正常工作,返回相应的成功状态码
## 3. 预期结果
- **服务注册**能够成功注册新的AI算法服务
- **服务管理**:能够正常管理已注册的服务,包括查看、操作、删除等
- **服务分组**:能够正常管理服务分组,包括创建、查看、更新、删除等
- **系统稳定性**:所有功能正常工作,无错误信息
## 4. 注意事项
- **权限检查**:确保使用管理员账号登录系统
- **Docker服务**确保Docker服务正在运行因为服务部署需要使用Docker
- **数据库连接**确保PostgreSQL数据库连接正常
- **网络连接**:确保网络连接正常,避免因网络问题导致操作失败
## 5. 故障排除
- **服务启动失败**检查Docker服务是否正常运行
- **权限不足**:确保使用管理员账号登录系统
- **数据库错误**检查PostgreSQL数据库连接是否正常
- **网络错误**:检查网络连接是否正常
- **依赖缺失**:确保项目包含所有必要的依赖
## 6. 执行顺序
1. 检查后端服务状态
2. 检查前端服务状态
3. 测试服务注册功能
4. 测试服务管理功能
5. 测试服务分组功能
6. 验证所有功能正常工作
---
按照以上步骤执行服务注册管理解决方案,确保所有功能正常工作。

View File

@@ -1,125 +0,0 @@
# 服务注册管理实施计划
## 项目现状分析
当前项目使用Vue 3 + FastAPI + PostgreSQL技术栈已经实现了基本的服务注册功能但存在以下问题
1. **前端认证机制不完善**API调用缺少认证导致加载仓库列表失败
2. **服务注册功能不完整**:使用模拟数据,缺少真实的仓库信息获取
3. **服务管理能力有限**:缺少服务分组、批量管理和监控功能
4. **数据库管理界面缺失**:无法直接查看数据库中的服务和仓库信息
## 实施计划
### 第一阶段:修复基础功能(已完成)
#### 1. 完善前端认证机制
- **修改前端API调用**确保所有API调用都使用axios并自动携带认证token
- **实现token管理**添加token过期检测和自动刷新机制
- **优化登录状态**:实现用户登录状态持久化和自动恢复
#### 2. 修复服务注册流程
- **实现真实仓库列表加载**调用后端API获取数据库中的仓库信息
- **完善服务注册表单**:移除算法选择,添加仓库描述和地址展示
- **优化表单验证**:添加更严格的表单验证和错误提示
#### 3. 增强后端服务注册API
- **实现真实仓库信息获取**:从数据库中查询仓库详细信息
- **完善服务注册逻辑**:实现真实的服务创建和部署
- **添加错误处理**增强API错误处理和异常捕获
### 第二阶段:核心功能实现
#### 1. 服务分组前端界面
- **分组管理功能**:创建、编辑、删除分组的弹窗界面
- **服务分类展示**:左侧分组树状结构,右侧对应分组的服务列表
- **服务与分组关联**:服务编辑时选择分组的下拉菜单
- **界面设计**:清晰的视觉层次和交互反馈
#### 2. 服务监控功能
- **健康检查机制**后端定时任务检查服务状态支持HTTP、TCP和自定义检查方式
- **实时状态监控**使用WebSocket实现前端实时数据更新减少轮询开销
- **监控指标**CPU使用率、内存使用、响应时间、请求次数等核心指标
- **前端展示**:实时状态卡片、异常告警弹窗、监控指标列表
- **异常处理**:服务状态异常时触发告警,支持邮件通知(可选)
### 第三阶段:系统集成和优化
#### 1. 系统集成测试
- **测试范围**:服务分组管理、服务监控功能、服务注册流程、用户认证等核心功能
- **测试方法**单元测试pytest、API测试requests、前端集成测试Vue Test Utils
- **测试重点**:功能实现验证,确保所有核心功能正常运行
- **测试目标**:确保系统稳定性和可靠性,不做复杂的性能测试
#### 2. 功能优化和完善
- **数据库管理界面**:实现服务和仓库数据展示
- **服务列表优化**:实现分页、筛选和详情展示
- **API文档自动生成**使用FastAPI内置文档功能
- **文档完善**API文档和使用说明
## 技术实现细节
### 前端技术实现
- **使用Pinia管理状态**:实现用户登录状态和服务数据管理
- **使用Element Plus组件**构建美观的服务管理界面包括Tree、Table、Dialog等组件
- **使用axios拦截器**实现API调用的统一认证处理
- **使用WebSocket**:实现服务状态实时更新,减少轮询开销
### 后端技术实现
- **使用FastAPI构建API**实现高性能的服务管理API
- **使用SQLAlchemy操作数据库**:实现服务和仓库的持久化
- **使用JWT进行认证**:实现安全的用户认证
- **使用Docker管理服务**:实现服务的容器化部署
- **使用apscheduler**:实现后端定时任务,用于服务健康检查
- **使用websockets**实现后端WebSocket服务用于实时数据推送
### 数据库设计
- **服务表**:存储服务基本信息、配置和状态
- **服务分组表**:存储服务分组信息,与服务表建立一对多关系
- **仓库表**:存储算法仓库信息,包括名称、描述和地址
- **监控数据表**:存储服务监控指标和健康检查结果
### 核心API设计
#### 服务分组API
- `GET /api/service-groups`:获取所有服务分组
- `POST /api/service-groups`:创建新的服务分组
- `GET /api/service-groups/{group_id}`:获取单个服务分组详情
- `PUT /api/service-groups/{group_id}`:更新服务分组信息
- `DELETE /api/service-groups/{group_id}`:删除服务分组
#### 服务监控API
- `GET /api/services/{service_id}/status`:获取单个服务状态
- `GET /api/services/status`:获取所有服务状态
- `GET /api/services/{service_id}/metrics`:获取服务监控指标
- `GET /api/services/metrics`:获取所有服务监控指标
#### WebSocket API
- `ws://{host}:{port}/ws/services`:实时服务状态更新
- `ws://{host}:{port}/ws/metrics`:实时监控指标更新
## 预期效果
1. **稳定的服务注册**:用户可以正常注册新服务,系统能正确处理认证和数据存储
2. **高效的服务管理**:支持服务分组管理和服务分类展示,提供清晰的服务组织方式
3. **实时的服务监控**通过WebSocket实现服务状态实时更新及时发现和处理异常
4. **完整的数据展示**:可以查看数据库中的所有服务和仓库信息,支持服务详情查看
5. **良好的用户体验**:界面简洁直观,操作流程顺畅,响应速度快
6. **可扩展的架构**:支持后续服务数量的增加和功能扩展
## 风险评估
1. **认证问题**需要确保所有API调用都正确处理认证避免401错误
2. **WebSocket连接**需要处理WebSocket连接的稳定性和断线重连
3. **数据库性能**:需要优化数据库查询,确保服务管理的响应速度
4. **服务部署**:需要确保服务部署的可靠性和稳定性
5. **系统集成**:需要确保前后端和数据库的无缝集成
## 成功指标
1. **服务注册成功率**100%的服务注册请求能够成功处理
2. **服务管理响应时间**服务列表加载时间小于2秒操作响应时间小于1秒
3. **监控数据更新**监控数据更新延迟小于0.5秒,实现准实时监控
4. **系统稳定性**连续运行7天无故障服务监控功能正常运行
5. **用户满意度**:操作流程顺畅,界面美观易用,功能完整
6. **功能完整性**:所有核心功能(服务分组、服务监控、系统集成)都能正常实现

View File

@@ -0,0 +1,53 @@
# 服务部署方案 - 无Docker支持
## 问题分析
当前的ServiceOrchestrator类完全依赖Docker来部署和管理服务当环境中没有Docker时服务部署会失败返回"Docker连接失败"的错误。
## 解决方案
修改ServiceOrchestrator类添加一个本地进程部署模式在没有Docker的情况下直接在本地启动服务进程。
## 实现步骤
### 1. 修改ServiceOrchestrator类
1. **添加部署模式配置**:在初始化方法中添加部署模式配置,支持"docker"和"local"两种模式。
2. **修改deploy_service方法**:根据部署模式选择不同的部署策略。
- 当部署模式为"docker"时使用现有的Docker部署逻辑。
- 当部署模式为"local"时,使用本地进程部署逻辑。
3. **实现本地进程部署逻辑**
- 创建服务目录结构
- 生成服务包装器
- 使用subprocess模块启动服务进程
- 验证服务启动
4. **修改服务管理方法**
- 修改start_service、stop_service、restart_service等方法使其支持本地进程管理。
- 修改get_service_status、get_service_logs等方法使其支持本地进程状态查询和日志获取。
### 2. 修改服务注册端点
修改services.py中的register_service函数添加部署模式参数允许用户选择使用Docker或本地进程部署。
### 3. 更新配置文件
在settings.py中添加部署模式配置默认值为"local"以便在没有Docker的环境中也能正常工作。
## 关键技术点
1. **进程管理**使用subprocess模块创建和管理服务进程确保进程能够正常启动和停止。
2. **端口管理**:确保每个服务使用唯一的端口,避免端口冲突。
3. **服务包装器**复用现有的服务包装器生成逻辑确保本地部署的服务与Docker部署的服务具有相同的接口。
4. **状态管理**:实现本地进程的状态管理,包括启动、停止、重启等操作。
5. **日志管理**:实现本地进程的日志获取,确保能够查看服务运行日志。
## 预期效果
修改后服务注册管理功能将能够在没有Docker的环境中正常工作用户可以选择使用Docker或本地进程部署服务。