1. 程式人生 > >從零搭建Spring Boot腳手架(7):整合OSS作為檔案伺服器

從零搭建Spring Boot腳手架(7):整合OSS作為檔案伺服器

![](https://img2020.cnblogs.com/other/1739473/202008/1739473-20200825100851012-1750121591.png) ## 1. 前言 檔案伺服器是一個應用必要的元件之一。最早我搞過**FTP**,然後又用過**FastDFS**,接私活的時候我用**MongoDB**也湊合湊合。現如今時代不同了,開始流行起了**OSS**。 > Gitee: https://gitee.com/felord/kono day06 分支 歡迎Star > GitHub: https://github.com/NotFound403/kono day06 分支 歡迎Star ## 2. 什麼是OSS 全稱為**Object Storage Service**,也叫**物件儲存服務**,是一種解決和處理離散單元的方法,可提供基於分散式系統之上的物件形式的資料儲存服務,具有可拓展、可管理、低成本等特點,支援中心和邊緣儲存,能夠實現儲存需求的彈性伸縮,主要應用於海量資料管理的各類場景。 這概念真是夠難以理解的。簡單說點我知道的吧,平常我們的檔案地址都是 `/User/felord/video/xxx.mp4`的目錄樹結構,系統先要找到`User`,然後一級一級往下找一直到目標為止,這是一種結構化的儲存方式。物件儲存就不一樣了,所有的檔案都放在一個特定的池子裡,只不過檔案的攜帶有它自己的元資訊,通過元資訊去檢索檔案。這裡舉一個形象的例子: ```json {"oss":[ {"file":"xxxxx","meta":{"id":"1111"},"type":""}, {"content":"xxxxx","meta":{"id":"1211"},"type":"","created":"","name":""}, ]} ``` 上圖的`oss`就是一個物件儲存,它裡面存了攜帶資訊不一樣、甚至結構都不一樣的東西,我們可以根據其元資訊`meta`檢索它們。**OSS**具有以下特點: - 效率更高。不受複雜目錄系統對效能的影響。 - 可擴充套件性更強。分散式架構,更便於進行水平擴充套件,從而容納進任意大規模的資料。 - 可用性更強。資料一般都會有多個位於不同機器的複製,確保資料不丟失。 - 平臺無關,可以通過**Restful**介面進行操作物件。 > **OSS**通常被用來儲存圖片、音視訊等檔案,以及對這些檔案的處理。 ## 3. 哪些OSS可以使用 通常我們有兩種選擇,花錢買或者自己搞。 ### 充錢才能變得更強 這句話這裡也是很實用的,目前幾乎所有的雲廠商都有自己的物件儲存產品,你可以對比一下花錢購買它們,通過配合**CDN**能達到非常好的使用者體驗,胖哥的**felord.cn**就使用了雲廠商的物件儲存。購買他們的服務 - 可靠性強,資料丟失可能性低。 - 免維護,不需要自行維護。 - 可配合其它一些特色功能,比如縮圖、CDN等等。 ### 自己動手豐衣足食 不想花錢就只能自己動手了,目前我知道的開源方案有兩種。 一種是**Ceph**,一個分散式儲存系統,高可用,高擴充套件性。但是一般人玩不轉,就連**開源中國**的**紅薯**都被坑慘了