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