目录
- 文件存储服务
- 1. 需求背景
- 2. 核心功能
- 3. 存储策略
- 3.1 本地存储
- 3.2 FastDFS存储
- 3.3 云存储
- 3.4 minio
- 4. 技术设计
1. 需求背景文件的上传、下载功能是软件系统常见的功能,包括上传文件、下载文件、查看文件等 。例如:电商系统中需要上传商品的图片、广告视频,办公系统中上传附件,社交类系统中上传用户头像等等 。
文件上传下载大致流程为:

文章插图
这种方式开发起来简单、直接,但是有一些问题:
- 重复开发: 比如对接某个OSS(Object Storage Service,简称OSS)服务商,每个应用都需要对接该服务商,重复工作
- 扩展性差: 当需要切换服务商时,所有涉及到的应用都需要修改、测试、上线

文章插图
这种方式提供一个独立的文件微服务,该微服务向应用系统提供统一的上传、下载、查看接口,应用系统调用方式相同,并且屏蔽了底层对外调用OSS服务的接口,即使以后迁移OSS服务商,应用层面的系统也不需要变动 。
这种模式也有一个小问题,比如我们调用了阿里云的OSS服务,如果所有的下载、查看功能都调用文件服务,那么文件服务的网络流量将会有非常大的压力 。所以常用的做法是这样的:

文章插图
2. 核心功能文件存储服务的核心功能是:上传和下载 。除了这两个核心功能,还具有:
- 可用性:作为基础性服务,通过集群化部署实现高可用
- 配置性:结合nacos配置中心,可动态配置上传下载的方式等配置
- 扩展性:采用策略设计模式能方便的进行扩展,如添加新的OSS服务商等
? 1、面对应用系统的通用附件服务
?提供统一的上传接口,屏蔽底层的存储方案(本地存储、FastDFS、MinIo、阿里云存储、七牛云存储等),可独立运行服务
? 2、面对用户的网盘服务
?有文件夹和文件的概念,支持大文件分片上传、合并
? 3、面对大屏展示的数据统计服务
?有云盘首页数据概览,按照类型/时间等维度统计各种类型文件的大小和数量等
3. 存储策略3.1 本地存储本地存储,即将上传的文件存储在本地磁盘,并通过本地提供的Nginx服务来对外提供文件的下载和查看等功能 。
3.2 FastDFS存储【第2-3-1章 文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss】FastDFS存储,即将上传的文件存储在FastDFS分布式文件存储系统中,并通过FastDFS结合Nginx提供的服务来对外提供文件的下载和查看等功能 。
3.3 云存储云存储,即将上传的文件存储在第三方云平台上,例如阿里云OSS、七牛云OSS服务等,并通过这些第三方提供的OSS服务来对外提供文件的下载和查看等功能 。
3.4 minioMinIO 是一个基于Apache License v2.0开源协议的对象存储服务 。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等 。
经验总结扩展阅读
- 回门酒第几天办 回门酒的步骤和流程
- 小欢喜小金第几集被开除?
- 电视剧炩妃第几集下线?
- 小欢喜手机坏了是第几集?
- 我的宝贝若男第几集生孩子?
- 天涯明月刀捏脸数据放在哪,捏脸导出到哪个文件夹
- 新锅第一次用怎么处理不生锈不粘锅
- 世界上第一个航天器是哪一个
- 胸肌怎么练 胸肌怎么练最有效最快
- 东南第一佳味天下之美的菜系是
