# snail_clouds **Repository Path**: snail_tech/snail_clouds ## Basic Information - **Project Name**: snail_clouds - **Description**: 一个利用天翼云盘模拟超大存储空间的模拟网盘的工具,网盘只作为临时存储下载的中间商 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-22 - **Last Updated**: 2026-01-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # snail_clouds #### 介绍 一个基于天翼云盘的虚拟文件系统,通过本地虚拟文件系统缓存云存储数据,减少对云存储的直接请求。只有在文件上传或下载时才与云存储交互,其他操作(如查看、列表)仅在虚拟文件系统层完成。 #### 软件架构 本项目采用多模块架构,包含以下7个模块: - clouds_storage: 对接各个云存储服务(如天翼云、阿里云OSS、AWS S3等) - clouds_application: 应用启动模块,用于一键启动所有服务(主要集成后端服务模块 clouds_api、clouds_webdav, 前端编译结构 clouds_web ) - clouds_web: 前端代码存放目录 整体架构如下: ``` 客户端应用 ↓ ┌─────────────────────────────┐ │ WebDAV (/dav/*) │ │ REST API (/api/*) │ │ Web界面 (/, /admin等) │ └─────────────────────────────┘ ↓ ┌─────────────────────────────┐ │ 虚拟文件系统 (VFS) │ │ 数据库存储文件/目录元数据 │ └─────────────────────────────┘ ↓ ┌─────────────────────────────┐ │ 云存储服务 │ │ (天翼云/阿里云/AWS等) │ └─────────────────────────────┘ ``` 核心设计理念: - 目录浏览、属性查询等操作仅在VFS层完成,不访问云存储 - 只有文件上传和下载操作才会真正与云存储交互 - 使用数据库记录完整的云存储文件夹结构 #### 技术栈 - 主框架:Spring Boot - WebDAV实现: - 数据库访问:JPA/Hibernate或MyBatis - 云存储SDK:根据具体云服务商选择相应SDK - 缓存(可选):Redis用于缓存路径到文件ID的映射,提高查找速度 #### 数据库设计(VFS元数据) ```sql -- 虚拟文件/目录表 CREATE TABLE vfs_node ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, -- 文件或目录名 parent_id BIGINT, -- 父节点ID(null表示根目录) is_directory BOOLEAN NOT NULL, -- 是否为目录 size BIGINT, -- 文件大小(目录为null) mime_type VARCHAR(100), -- MIME类型 cloud_key VARCHAR(512), -- 云存储中的唯一标识符 created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW(), UNIQUE(parent_id, name) -- 同一目录下不能重名 ); ``` #### 模块详细设计 ##### 1. clouds_vfs(虚拟文件系统) 实现本地虚拟文件系统,负责: - 维护文件/目录的层级结构 - 处理文件元数据的增删改查 - 提供路径解析功能 - 与数据库交互存储文件结构信息 ##### 3. clouds_storage(云存储适配器) 抽象不同云存储服务的统一接口: - 定义通用存储接口(上传、下载、删除等) - 实现各类云存储的具体适配器 - 处理不同云存储的认证和连接 ##### 5. clouds_application(应用启动模块) 用于一键启动所有服务: - 集成API服务和WebDAV服务 - 提供统一的配置入口 - 为将来集成前端代码做好准备 ##### 6. clouds_web(前端界面) 实现Web管理界面: - 文件浏览器界面 - 用户登录认证 - 文件上传组件 - 管理后台界面 #### 安全设计 - WebDAV认证:在ResourceFactory中集成认证逻辑 - API/Web认证:使用Spring Security保护/api/**和/admin路径 - 权限控制:基于角色的访问控制(RBAC) #### 部署注意事项 - 确保反向代理(如Nginx)正确配置以支持WebDAV方法: ```nginx location /dav/ { proxy_pass http://backend; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; } ``` #### 性能优化 ##### 1. 数据库索引优化 - 添加了复合索引以提高常用查询的性能 - 优化了查询语句以更好地利用索引 ##### 2. 一级缓存(Caffeine) - 使用Caffeine实现本地缓存,减少数据库访问频率 - 缓存热点数据,提高响应速度 - 设置合适的缓存过期策略,保证数据一致性 ##### 3. 查询优化 - 优化了路径查找算法 - 减少了不必要的数据库查询 #### 安装教程 1. 配置各模块间的依赖关系 2. 初始化数据库并执行建表脚本 3. 配置云存储服务连接参数 4. 构建并启动Spring Boot应用 #### 使用说明 1. 通过Web界面浏览和管理文件 2. 使用WebDAV客户端(如Windows资源管理器、macOS Finder)挂载网络驱动器 3. 通过REST API进行程序化文件操作