中文 / EN

使用

存储节点

只读与非只读、系统存储节点、任务与节点的关系,以及文件系统与 OSS 两类存储提供方的区别。

存储节点是 UniRhy 能够读写的一个具体存储位置。音频文件、封面与转码产物均存放于某个节点上;元数据解析与转码任务也以节点为单位发起。节点在「设置 → 存储节点」中挂载,数量不限,多个节点可被并行处理。

只读与非只读

每个节点在挂载时可标记为「只读」。

  • 只读节点:仅参与扫描与读取。UniRhy 不会向只读节点写入任何文件。适用于既有的音乐收藏目录、NAS 共享目录,或由第三方维护的存储桶。
  • 非只读节点:可读可写。除参与扫描外,还可承接运行期写入的数据,例如转码产物与提取出的封面。

推荐配置至少一个只读节点存放原始音乐库,并另设一个非只读节点承接系统写入。

系统存储节点

UniRhy 在所有已挂载节点中指定一个作为系统存储节点,作为系统自身写入数据时的默认落点。首次启动向导中填写的路径会被注册为初始的系统存储节点,参见 首次启动。

系统存储节点受以下约束:

  • 同一时刻有且仅有一个;
  • 不能为只读节点。

管理员可在「设置 → 存储节点」中切换至任意其他非只读节点。

任务与节点的关系

内置任务在提交时均需指定作用的节点,规则如下。

元数据解析

提交时选择一个被扫描的节点(系统存储节点除外),任务遍历该节点上的音频文件并解析内嵌元数据。

元数据解析不提供目标节点选项,也不会移动或复制音频文件。任务唯一的写入产物是从音频中提取的内嵌封面,其落点规则固定:

  • 被扫描节点为非只读节点:封面写回该节点;
  • 被扫描节点为只读节点:封面写入系统存储节点。

转码

提交时需分别指定源节点与目标节点:

  • 源节点:待转码音频所在的节点(系统存储节点除外);
  • 目标节点:转码产物的写入位置,可为任意非只读节点,包括系统存储节点。

转码完成后,产物在目标节点落盘,并注册为对应曲目的一份新音频文件。

两类存储提供方

存储节点在底层由存储提供方实现,当前提供两类,差异主要体现在数据物理存储方式、以及 server 如何访问。

文件系统存储提供方

指向 server 进程能直接访问的一个绝对路径。

项目 说明
关键字段 根路径
前置条件 server 进程对该路径有相应的读写权限
Docker 必须填容器内的挂载路径,非挂载路径会随容器销毁而丢失
适用场景 单节点部署、本地磁盘、NAS 挂载盘、局域网内的共享目录

OSS 存储提供方

指向一个 S3 兼容的对象存储桶。阿里云 OSS、AWS S3、Cloudflare R2、MinIO、自建 S3 网关等均可。

项目 说明
关键字段 Endpoint、Bucket、Access Key、Secret Key、可选的路径前缀
前置条件 网络可达;凭据具备对目标 Bucket 的相应读写权限
适用场景 云端归档、异地灾备、多实例共享同一份音乐库

对播放链路的影响

两种存储提供方对播放器呈现一致的接口——客户端从 API 获取一段 URL 并交给音频元素播放。差异在于 URL 的指向:

  • 文件系统节点:URL 指向 server 自身的媒体接口,音频流由 server 从磁盘读出后转发给客户端;
  • OSS 节点:server 返回一段短期有效的预签名 URL,客户端直接向对象存储拉取,播放流量不经过 server。

因此,OSS 节点在多用户或跨地域场景下可显著降低 server 的带宽压力;预签名的有效期同时限制了 URL 泄露后的滥用窗口。