记录开题阶段的想法,链接,数据什么的。
1 初步设想
这个毕业设计一共包括两套系统:
- 针对个人、小型团队、家庭的类NAS系统
该系统的使用目标是在一个局域网内,为多人提供云端文件保存、备份和版本历史管理服务(可以通过 Nginx Proxy Manager等工具使其使用公网ip,使得该服务能够不局限在一个局域网内)。通过
该系统的主要功能:
- 将文件上传到云端,并且可以选择性地应用RAID策略进行备份。
- 可以通过加硬盘或者加服务器的方式进行横向扩展(?)。
- 关于文件管理,可以加tag和说明,可以构建虚拟路径,可以以用户手动上传的方式,进行文件的版本管理。
- 特别的,针对视频、音频、图片,提供在线预览。
- 针对markdown文档,提供在线编辑功能和查看文件版本详细改动的功能。
- 针对图片,提供做为图床的功能。
- 可以选择某些文件进行实时同步(网页端肯定是不能支持这个)
该系统的用户只分为两类:管理员和普通用户。
权限管理还没想好,想的是普通用户上传文件,该文件的所有权来自该用户。管理员可以读写该文件,但是对于其他普通用户的读写权限,只能由该文件的所有者控制。
关于虚拟文件夹,目前想的是每个用户有自己的个人文件夹,在该文件夹下可以任意控制文件夹的新建和删除。除了个人文件夹,还有一个共有文件夹,所有用户都可以进行文件夹的新建和删除,管理员可以控制这一权限。
- 为这个NAS系统提供外网访问能力的管理系统
该系统的主要功能:
- 系统1的所有用户,可以通过选中文件挂在这个系统下的方式,在公网进行访问。注意,这个系统主要的作用是类似生成短链接的功能,能够给用户一个入口,获取被选中的文件的最新版本。
- 该系统下不会保存文件,是通过和系统1通信的方式获取文件。
技术栈:语言是 Go,框架还没想好是单体服务还是微服务,再加上数据库两件套。客户端这边语言是 Kotlin,用的框架是 Kotlin Multiplatform 那一套和 Ktor,本地还会维护一个 SQLite 小数据库。
2 审题表
申报课题名称:基于Kotlin的中小型云端存储系统
课题简介和要求:
该系统由两部分组成:
- 在内网生效的,针对家庭或中小型团队的云端存储系统。该系统的主要功能有:
- 用户可以选择文件进行上传,系统会自动应用策略进行备份。支持通过增加硬盘或者增加服务器的方式进行横向扩展。
- 用户可以通过虚拟路径和标签管理文件。每个文件保存其版本历史。
- 针对Markdown文件,提供在线编辑功能和查看版本变化的功能。针对视频、音频、图片文件,提供在线预览功能。
- 提供多平台客户端和网页端。针对客户端,用户可以选择一些文件进行实时同步。
- 基于文件所有权的方式,进行权限管理。
- 提供针对内网的云端文件的外网访问能力的管理系统。
- 系统1可以有选择地和该系统进行通信。
- 用户可以在系统1内选择一部分文件,通过该系统使其具备外网访问能力。
本文作者:御坂19327号
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!