目錄
- 文件存儲服務(wù)
- 1. 需求背景
- 2. 核心功能
- 3. 存儲策略
- 3.1 本地存儲
- 3.2 FastDFS存儲
- 3.3 云存儲
- 3.4 minio
- 4. 技術(shù)設(shè)計(jì)
1. 需求背景文件的上傳、下載功能是軟件系統(tǒng)常見的功能,包括上傳文件、下載文件、查看文件等 。例如:電商系統(tǒng)中需要上傳商品的圖片、廣告視頻,辦公系統(tǒng)中上傳附件,社交類系統(tǒng)中上傳用戶頭像等等 。
文件上傳下載大致流程為:

文章插圖
這種方式開發(fā)起來簡單、直接,但是有一些問題:
- 重復(fù)開發(fā): 比如對接某個OSS(Object Storage Service,簡稱OSS)服務(wù)商,每個應(yīng)用都需要對接該服務(wù)商,重復(fù)工作
- 擴(kuò)展性差: 當(dāng)需要切換服務(wù)商時,所有涉及到的應(yīng)用都需要修改、測試、上線

文章插圖
這種方式提供一個獨(dú)立的文件微服務(wù),該微服務(wù)向應(yīng)用系統(tǒng)提供統(tǒng)一的上傳、下載、查看接口,應(yīng)用系統(tǒng)調(diào)用方式相同,并且屏蔽了底層對外調(diào)用OSS服務(wù)的接口,即使以后遷移OSS服務(wù)商,應(yīng)用層面的系統(tǒng)也不需要變動 。
這種模式也有一個小問題,比如我們調(diào)用了阿里云的OSS服務(wù),如果所有的下載、查看功能都調(diào)用文件服務(wù),那么文件服務(wù)的網(wǎng)絡(luò)流量將會有非常大的壓力 。所以常用的做法是這樣的:

文章插圖
2. 核心功能文件存儲服務(wù)的核心功能是:上傳和下載 。除了這兩個核心功能,還具有:
- 可用性:作為基礎(chǔ)性服務(wù),通過集群化部署實(shí)現(xiàn)高可用
- 配置性:結(jié)合nacos配置中心,可動態(tài)配置上傳下載的方式等配置
- 擴(kuò)展性:采用策略設(shè)計(jì)模式能方便的進(jìn)行擴(kuò)展,如添加新的OSS服務(wù)商等
? 1、面對應(yīng)用系統(tǒng)的通用附件服務(wù)
?提供統(tǒng)一的上傳接口,屏蔽底層的存儲方案(本地存儲、FastDFS、MinIo、阿里云存儲、七牛云存儲等),可獨(dú)立運(yùn)行服務(wù)
? 2、面對用戶的網(wǎng)盤服務(wù)
?有文件夾和文件的概念,支持大文件分片上傳、合并
? 3、面對大屏展示的數(shù)據(jù)統(tǒng)計(jì)服務(wù)
?有云盤首頁數(shù)據(jù)概覽,按照類型/時間等維度統(tǒng)計(jì)各種類型文件的大小和數(shù)量等
3. 存儲策略3.1 本地存儲本地存儲,即將上傳的文件存儲在本地磁盤,并通過本地提供的Nginx服務(wù)來對外提供文件的下載和查看等功能 。
3.2 FastDFS存儲【第2-3-1章 文件存儲服務(wù)系統(tǒng)-nginx/fastDFS/minio/阿里云oss/七牛云oss】FastDFS存儲,即將上傳的文件存儲在FastDFS分布式文件存儲系統(tǒng)中,并通過FastDFS結(jié)合Nginx提供的服務(wù)來對外提供文件的下載和查看等功能 。
3.3 云存儲云存儲,即將上傳的文件存儲在第三方云平臺上,例如阿里云OSS、七牛云OSS服務(wù)等,并通過這些第三方提供的OSS服務(wù)來對外提供文件的下載和查看等功能 。
3.4 minioMinIO 是一個基于Apache License v2.0開源協(xié)議的對象存儲服務(wù) 。它兼容亞馬遜S3云存儲服務(wù)接口,非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等 。
經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀
- 回門酒第幾天辦 回門酒的步驟和流程
- 小歡喜小金第幾集被開除?
- 電視劇炩妃第幾集下線?
- 小歡喜手機(jī)壞了是第幾集?
- 我的寶貝若男第幾集生孩子?
- 天涯明月刀捏臉數(shù)據(jù)放在哪,捏臉導(dǎo)出到哪個文件夾
- 新鍋第一次用怎么處理不生銹不粘鍋
- 世界上第一個航天器是哪一個
- 胸肌怎么練 胸肌怎么練最有效最快
- 東南第一佳味天下之美的菜系是
