摘要:優點開發成本低,可以配置加速網絡三分布式文件系統方案常見的分布式文件系統有,等。它們都不是系統級的分布式文件系統,而是應用級的分布式文件存儲服務。
一、小應用存儲方案
在開發中上傳文件存儲是個問題,而一般小應用開發會選擇服務器本地目錄做為存儲地址,通過保存文件的相對路徑來獲取文件,在應用不要求高可用的情況下這是一種普遍的方案。
問題: 在每次更新Java版本時,都需要將文件目錄做一次備份,不然直接將打包好的war包替換原來的版本時可能會丟失文件(有時可能會直接刪除原來的版本目錄然后在將新版本放到tomcat的webapps目錄)。
解決方案: 使用 linux (windows的快捷方式) 的軟連接方式將文件目錄存儲在tomcat webapps文件目錄之外,這樣應用程序只需要讀取軟連接的目錄即可上傳文件到真正的文件目錄地址,而讀取文件還是從軟連接的目錄讀取,這樣整個應用目錄被刪除文件也不會丟失。這里需要提一下在tomcat中讀取軟連接文件需要在context.xml文件配置一個allowLinking屬性(只要添加屬性即可,不要刪除其他配置)。
二、云存儲方案
隨著文件系統規模越來越大,以及對應用的高可用與高并發需求。特別在應用需要快速迭代時可以選擇比較成熟云存儲解決方案。
云存儲是在云計算(cloud computing)概念上延伸和發展出來的一個新的概念,是指通過集群應用、網格技術或分布式文件系統等功能,應用存儲虛擬化技術將網絡中大量各種不同類型的存儲設備通過應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統。所以云存儲可以認為是配置了大容量存儲設備的一個云計算系統。
現國內較成熟的云存儲有阿里云的Oss,騰訊的Cos (本人并沒有使用過) 即其他云服務提供商,云計算的基本特點是對外提供的海量、安全、低成本、高可靠的云存儲服務。您可以通過本文檔提供的簡單的REST接口,在任何時間、任何地點、任何互聯網設備上進行上傳和下載數據。
基于大存儲優勢,您可以搭建出各種多媒體分享網站、網盤、個人和企業數據備份等基于大規模數據的服務。
缺點: 運營會產生額外的費用。
優點: 開發成本低,可以配置cdn加速網絡...
三、分布式文件系統方案
常見的分布式文件系統有,GFS、HDFS、FastDFS等。各自適用于不同的領域。它們都不是系統級的分布式文件系統,而是應用級的分布式文件存儲服務。
1.GFS(Google File System)
Google公司為了滿足本公司需求而開發的基于Linux的專有分布式文件系統,盡管Google公布了該系統的一些技術細節,但Google并沒有將該系統的軟件部分作為開源軟件發布。
2.HDFS
Hadoop分布式文件系統(HDFS)被設計成適合運行在通用硬件(commodity hardware)上的分布式文件系統。它和現有的分布式文件系統有很多共同點。但同時,它和其他的分布式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。
3.FastDFS
FastDFS是一個開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。
FastDFS為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等指標,使用
FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。
FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。
FastDFS原理
FastDFS通過客戶端連接tracker集群,tracker返回一個集群中可用的storage節點給客戶端,客戶端直接與storage連接傳輸文件,當storage文件保存成功并將信息同步到tracker時,storage將返回一個fileId給客戶端(fileId 字段中的 group可以計算出對應服務器IP,M00是軟連接文件存儲的目錄),客戶端可以通過這個fileId直接訪問到文件,也可以通過fileId下載圖片。
FastDFS集群線性擴容
由于FastDFS通過tracker來管理存儲節點,要實現線性擴容只要添加storage然后配置新的group即可,這里可以只要使用默認的負載方案(根據存儲節點大小決定)將文件存儲在高容量節點,注意兩相同group中采取最小的節點為準。
FastDFS冗余備份
FastDFS文件備份根據相同的group個數來決定備份的個數,當有兩個group相同,上傳文件時將在另外一臺機器上進行同步操作,以此類推。如果另一臺機器宕機了,那將在恢復工作后繼續同步。如果在新增的節點上配置已有的group,并且group已經有文件,那么新的節點也將同步已有的文件。
FastDFS架構圖
FastDFS安裝
FastDFS具體安裝請參照 https://github.com/happyfish1... 注意:在配置tracker_server時配置多個就是多節點。
案例地址: https://github.com/tzling/fas...
FastDFS與HDFS的區別
定位和應用場合不一樣,Hadoop的文件系統HDFS主要解決并行計算中分布式存儲數據的問題,其單個數據文件通常很大,采用了分塊(切分)存儲的方式。
FastDFS主要用于大中網站,為文件上傳和下載提供在線服務,在負載均衡、動態擴容等方面都支持得比較好,FastDFS不會對文件進行分快(切分)存儲。
優點:高容錯性能,高擴張性。
缺點:開發成功高,配置難度較復雜。
部分信息來自網絡。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71588.html
摘要:對象創建與訪問指令雖然類實例和數組都是對象,但虛擬機對類實例和數組的創建和操作使用了不同的字節碼指令。異常處理指令在虛擬機中,處理異常語句不是由字節碼指令來實現的,而是采用異常表的方式。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見面試題總結 本節常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到): 簡單介紹一下Class類文件結構(常量池主要存放的是...
摘要:那方法區里都存著什么呢先拋結論靜態變量常量類信息構造方法接口定義運行時常量池存在方法區中。動態常量池運行時常量池是方法區的一部分,是一塊內存區域。文件常量池將在類加載后進入方法區的運行時常量池中存放。 一、方法區與永久代 這兩個是非常容易混淆的概念,永久代的對象放在方法區中,就會想當然地認為,方法區就等同于持久代的內存區域。事實上兩者是這樣的關系: 《Java虛擬機規范》只是規定了有方...
閱讀 3218·2023-04-26 02:27
閱讀 2143·2021-11-22 14:44
閱讀 4092·2021-10-22 09:54
閱讀 3199·2021-10-14 09:43
閱讀 752·2021-09-23 11:53
閱讀 12714·2021-09-22 15:33
閱讀 2711·2019-08-30 15:54
閱讀 2685·2019-08-30 14:04