跳到主要内容

架构介绍

本文档介绍 PveSphere 的系统架构和设计理念。

系统概述​

PveSphere 采用前后端分离的架构设计,前端使用 Vue 3 + TypeScript,后端使用 Go + Gin。

架构图​

┌─────────────────┐
│ Web Browser │
└────────┬────────┘
│
▼
┌─────────────────┐
│ PveSphere UI │ (Vue 3 + TypeScript)
│ (Frontend) │
└────────┬────────┘
│ HTTP/WebSocket
▼
┌─────────────────┐
│ PveSphere API │ (Go + Gin)
│ (Backend) │
└────────┬────────┘
│
┌────┴────┐
▼ ▼
┌────────┐ ┌─────────┐
│ MySQL │ │ Redis │
│ DB │ │ Cache │
└────────┘ └─────────┘
│
▼
┌─────────────────┐
│ Proxmox VE API │
│ (PVE Cluster) │
└─────────────────┘

技术栈​

前端架构​

  • 框架: Vue 3 (Composition API)
  • 构建工具: Vite 7
  • UI 库: Element Plus 2
  • 语言: TypeScript 5
  • 状态管理: Pinia 3
  • 路由: Vue Router 4
  • 国际化: Vue I18n
  • 图表: ECharts 6
  • 终端: xterm.js 5, noVNC

后端架构​

  • 语言: Go 1.23
  • Web 框架: Gin 1.10
  • ORM: GORM 1.30
  • 数据库: MySQL / PostgreSQL / SQLite
  • 认证: JWT (golang-jwt/jwt)
  • 缓存: Redis 9
  • WebSocket: Gorilla WebSocket
  • 任务调度: gocron
  • 日志: Zap

设计模式​

PveSphere 后端采用分层架构设计:

Handler Layer (API 层)
↓
Service Layer (业务逻辑层)
↓
Repository Layer (数据访问层)
↓
Model Layer (数据模型层)

Controller 模式​

使用 Kubernetes Controller 模式管理 PVE 资源,实现资源的自动同步和状态管理。

Repository 模式​

使用 Repository 模式封装数据访问逻辑,提供统一的数据操作接口。

部署架构​

Docker 部署​

使用 Docker Compose 管理多个服务:

  • api-server: API 服务
  • controller: Controller 服务
  • migration: 数据库迁移服务

Kubernetes 部署​

支持 Kubernetes 部署,实现高可用和自动扩缩容。

下一步​