项目结构
Hyac 项目采用模块化的微服务架构,主要由以下几个核心部分组成:
app: 函数代码加载与执行环境。server: 核心后端服务,负责 API、用户管理、函数调度等。web: 前端用户界面。uploader: 用于构建前端产物并上传至 MinIO 的服务。lsp: 语言服务器(开发中)。
以下是各主要目录的详细说明:
根目录文件
docker-compose.yml: 生产环境的 Docker Compose 配置文件。docker-compose.dev.yml: 开发环境的 Docker Compose 配置文件。README.md: 项目主说明文档。
app
此目录包含了函数运行环境的实现。当 server 调度一个函数执行时,它会通过 app 服务来加载并运行相应的函数代码。
main.py: 服务主入口。code_loader.py: 负责从 MongoDB 加载函数代码。core/: 包含缓存、数据库连接、MinIO 客户端等核心组件。Dockerfile: 用于构建函数运行环境的 Docker 镜像。
server
这是 Hyac 的核心后端,提供所有主要的 API 和业务逻辑。
main.py: FastAPI 应用主入口。routers/: 包含了所有 API 端点的路由定义,如applications.py,functions.py,users.py等。core/: 存放核心业务逻辑和组件,例如:docker_manager.py: 管理函数执行的 Docker 容器。faas_code.py: 用于初始化默认的函数模板。jwt_auth.py: JWT 用户认证。task_worker.py: 后台任务处理器。
models/: 定义了与 MongoDB 交互的数据模型。Dockerfile: 用于构建后端服务的 Docker 镜像。
web
前端项目,基于 Vue 3 和 Vite 构建。
src/: 前端源代码。views/: 页面组件。components/: 可复用的 UI 组件。router/: Vue Router 的路由配置。store/: Pinia 状态管理。service/: API 请求服务。
package.json: Node.js 依赖和脚本配置。vite.config.ts: Vite 配置文件。uno.config.ts: UnoCSS 配置文件。
uploader
一个 Node.js 服务,其主要职责是构建 web 目录下的前端项目,并将生成的静态文件(产物)上传到 MinIO 的 console Bucket 中。
uploader.js: 构建与上传逻辑的实现。package.json: Node.js 依赖配置。Dockerfile: 用于构建此服务的 Docker 镜像。
lsp
语言服务器,旨在为前端的在线代码编辑器提供代码补全、语法检查等高级功能。此服务目前仍在开发阶段,未正式启用。
server.js: LSP 服务主入口。package.json: Node.js 依赖配置。Dockerfile: 用于构建 LSP 服务的 Docker 镜像。