SpringBoot分布式開發系列文章已經持續了一段時間了,每一篇都有核心內容講給大家。比如:分環境部署配置及服務端口號統一配置,子模塊版本號管理及第三方jar依賴管理,單點登錄實現,接口安全(簽名+令牌)及過濾器配置攔截,全局異常處理及日志打印、防SQL注入等。現在項目里只需添加你的業務代碼,就可用於生產環境,同時項目源碼也已共享到github。
但大家有沒有發現,我講了這么多,實際這個項目里還缺少一個最基本的服務功能。這也是我今天要給大家講的內容了。那到底是什么呢?
文件系統,對每個項目來說幾乎都必不可少。記着在N年前做傳統項目時,文件起初是直接存儲的項目里面的,后來慢慢通過配置運行項目的Tomact把文件從項目中分離了出去,存儲到項目所在機器的磁盤上。不管怎么,這種存儲完全受制於Web容器,肯定是不能使用於分布式環境。那么,我現在主要說說分布式文件系統FastDFS的的實現。
FastDFS服務搭建實現
FastDFS是一個開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。它充分考慮了冗余備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。
FastDfs文件系統原理及搭建我不再過多的去介紹,我之前已有過一篇文章,里面有詳細演示FastDFS文件服務系統的搭建,大家可以閱讀參考:FastDFS文件服務器原理及搭建。現在我們直接進入項目,編寫代碼演示分布式文件系統FastDFS在項目里實現的文件上傳下載。
首先在父級項目的pom里添加fastDFS的依賴。
版本號:1.26.2
再在公共模塊lyn-common的pom里添加依賴
然后寫FastDFS的文件上傳服務Service接口。
Service接口實現:
在接口層(lyn-web)的properties配置里添加配置信息:
接口層的啟動類里添加注解。
這里對過濾器有專門針對上傳文件接口做了驗證token處理。並在Aop里不對上傳接口進行切面處理。
此刻,所有配置已完成,我們啟動項目測試。
查看上傳的圖片:
存儲文件路徑處理
分布式文件服務已經實現,接下來你就可以上傳文件實現你的業務代碼了。那么文件的路徑在數據庫怎么存儲呢?實際這個有經驗的開發者基本都知道,文件路徑存入數據庫時要去掉域名,在接口查詢出來又需要補全域名。為什么這樣做呢?在我們的生產環境,一般文件肯定是帶域名訪問,比如我配的是http域名,但使用小程序后,分享時圖片無法使用(不支持http域名下載),必須要用https才可正常使用,那我是不是得改文件訪問域名呢。如果你把帶域名的文件路徑存到了數據庫,那么是不是查出來的路勁無法訪問了。所以,存儲時去域名查詢加域名這看似麻煩的操作,但在實際項目中更有利於日過的擴展和維護。編寫的文件工具類:
添加數據時,去文件域名
查詢時補全域名
今天講了分布式文件系統的搭建及應用,希望能幫到那些正在准備開發或正在開發的小伙伴們。
獲取項目源代碼,請掃碼關注公眾號,並發送Springboot獲取。