圖片展示模塊---使用FastDFS上傳圖片


1、背景分析

對於傳統項目來說,所有模塊都在一個項目中開飯,包括所有的靜態資源文件如圖片等,都存儲在這一個tomcat服務器上,

  如果訪問量小的話,這樣做的問題不大,但是對於互聯網項目來說,用戶訪問量很大,這樣一個tomcat服務器是遠遠不能滿足業務需求的。這時就需要部署tomcat集群,有集群就需要用到負載均衡,我們一般都會使用nginx來作為負載均衡服務器。

但是這種tomcat集群的缺點也很明顯,假如我們把一張a.jpg的圖片上傳到了tomcat1的目錄下了,由於nginx負責均衡處理請求,當用戶去請求訪問這張圖片的時候,假設第一次,nginx把請求交給tomcat1去處理,它到自己的images目錄下找這張圖片,發現是可以找到的,可以看到這張圖片;當我們第二次通過nginx去請求訪問該圖片時,nginx把請求交給tomcat2去處理,這時tomcat2去自己的目錄下查找這張圖片,發現沒有這張圖片,因此看不到這張圖片。作為用戶來講,一次訪問能看到,再刷新看不到,再刷新就看不到,這樣體驗感很差。

針對此問題,搭建一個圖片服務器,所有的tomcat都將用戶上傳的圖片上傳到圖片服務器上,tomcat本身並不保存圖片。我們采用http的方式來訪問圖片,這樣就需要使用http服務器,能作為http服務器的有很多種選擇。

  • Tomcat可以作為http服務器,但是由於Tomcat服務器的強項並不在於處理靜態資源(它的強項是處理servlet和jsp等動態頁面),因此我們不選擇tomcat
  • 使用Apache作為http服務器,Apache是由c語言編寫的一款服務器。
  • nginx因為其獨特的優勢,作為http服務器是目前最火的。我們使用Nginx來統一管理這些圖片,這樣用戶要訪問圖片的時候,Nginx直接把服務器上的圖片返回就可以了,這樣就解決了tomcat集群資源無法共享的問題。

此時存在一個問題,既然是服務器,容量是有限制的,而且服務器有可能掛了,這時使用FastDFS集群來解決,FastDFS是一個開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。FastDFS存儲資源的設備是按組來區分的,當存儲空間不足時,便可以通過水平增加分組並相應添加設備來達到擴容的目的,而且是沒有上限的。它還有個優勢是高可用,也就是說FastDFS集群能夠做到當提供服務的nginx發生故障時,自動切換到另一台nginx設備上,保障服務的穩定。 

2、上傳文件的步驟

  1. 創建一個配置文件,配置文件的內容是指定TrackerServer的地址
  2. 使用全局方法加載配置文件
  3. 創建一個TrackerClient對象
  4. 通過TrackerClient對象獲得TrackerServer對象
  5. 創建StorageServer的引用,null就可以了
  6. 創建StorageClient對象,需要兩個參數,一個是trackerserver,一個是storageserver
  7. 使用StorageClient對象,上傳圖片。

  此時創建一個工具類FastDFSUtils工具類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM