MogileFS_系統(tǒng)_應(yīng)用在EshangTu項(xiàng)目的可行性分析_第1頁
MogileFS_系統(tǒng)_應(yīng)用在EshangTu項(xiàng)目的可行性分析_第2頁
MogileFS_系統(tǒng)_應(yīng)用在EshangTu項(xiàng)目的可行性分析_第3頁
MogileFS_系統(tǒng)_應(yīng)用在EshangTu項(xiàng)目的可行性分析_第4頁
MogileFS_系統(tǒng)_應(yīng)用在EshangTu項(xiàng)目的可行性分析_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、MogileFS 系統(tǒng)應(yīng)用在EshangTu項(xiàng)目的可行性分析摘要1關(guān)鍵詞1涉及的關(guān)鍵概念1分布式文件系統(tǒng)2MogileFs2正文3選擇MogileFs的理由3MogileFS 特性就介紹,官方介紹3MogileFS 的結(jié)構(gòu)4MogileFS 的三個(gè)大的部分5MogileFS 的二個(gè)服務(wù)進(jìn)程6MogileFS 的其它7MogileFS 中的存儲(chǔ)節(jié)點(diǎn)7MogileFS 內(nèi)部的管理關(guān)系8MogileFS 的安裝與配置 詳細(xì)參考文檔9MogileFS 的客戶端和API9MogileFs應(yīng)用到eshangtu項(xiàng)目的設(shè)想14 摘要 描述了MogileFS 系統(tǒng)涉及的計(jì)算機(jī)概念,該系統(tǒng)能解決的問題,運(yùn)行結(jié)構(gòu)

2、,原理。并討論了當(dāng)應(yīng)用在eshangtu項(xiàng)目上時(shí),要解決的幾個(gè)問題,和初步的解決方案。 關(guān)鍵詞MogileFS 分布式文件系統(tǒng) perl 存儲(chǔ)節(jié)點(diǎn)(store node) 跟蹤節(jié)點(diǎn)(tracker) 跟蹤數(shù)據(jù)庫 涉及的關(guān)鍵概念分布式文件系統(tǒng) 分布式系統(tǒng)圖示分布式+文件系統(tǒng)。它包含這兩個(gè)方面的內(nèi)涵,從文件系統(tǒng)的客戶使用的角度來看,它就是一個(gè)標(biāo)準(zhǔn)的文件系統(tǒng),提供了一系列API,由此進(jìn)行文件或目錄的創(chuàng)建、移動(dòng)、刪除,以及對(duì)文件的讀寫等操作。從內(nèi)部實(shí)現(xiàn)來看,分布式的系統(tǒng)則不再和普通文件系統(tǒng)一樣負(fù)責(zé)管理本地磁盤,它的文件內(nèi)容和目錄結(jié)構(gòu)都不是存儲(chǔ)在本地磁盤上,而是通過網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)端系統(tǒng)上。并且,同一個(gè)文件

3、存儲(chǔ)不只是在一臺(tái)機(jī)器上,而是在一簇機(jī)器上分布式存儲(chǔ),協(xié)同提供服務(wù),正所謂分布式。因此,考量一個(gè)分布式文件系統(tǒng)的實(shí)現(xiàn),其實(shí)不妨可以從這兩方面來分別剖析,而后合二為一。首先,看它如何去實(shí)現(xiàn)文件系統(tǒng)所需的基本增刪改查的功能。然后,看它如何考慮分布式系統(tǒng)的特點(diǎn),提供更好的容錯(cuò)性,負(fù)載平衡,等等之類的。這二者合二為一,就明白了一個(gè)分布式文件系統(tǒng),整體的實(shí)現(xiàn)模式。MogileFs MogileFS 是一個(gè)開源的分布式文件系統(tǒng),用于組建分布式文件集群,由 LiveJournal 旗下 Danga Interactive 公司開發(fā),Danga 團(tuán)隊(duì)開發(fā)了包括 Memcached、MogileFS、Perlba

4、l 等不錯(cuò)的開源項(xiàng)目:(注:Perlbal 是一個(gè)強(qiáng)大的 Perl 寫的反向代理服務(wù)器)。目前國內(nèi)使用 MogileFS 的有圖片托管網(wǎng)站 yupoo 等。 MogileFS由3個(gè)部分組成: 第1個(gè)部分是server端,包括mogilefsd和mogstored兩個(gè)程序。前者即是mogilefsd的tracker,它將一些全局信息保存在數(shù)據(jù)庫里,例如站點(diǎn)domain,class,host等。后者即是存儲(chǔ)節(jié)點(diǎn)(store node),它其實(shí)是個(gè)HTTP Daemon,默認(rèn)偵聽在7500端口,接受客戶端的文件備份請(qǐng)求。在安裝完后,要運(yùn)行mogadm工具將所有的store node注冊(cè)到mogile

5、fsd的數(shù)據(jù)庫里,mogilefsd會(huì)對(duì)這些節(jié)點(diǎn)進(jìn)行管理和監(jiān)控。 第2個(gè)部分是utils(工具集),主要是MogileFS的一些管理工具,例如mogadm等。 第3個(gè)部分是客戶端API,用這個(gè)模塊可以編寫客戶端程序,實(shí)現(xiàn)文件的備份管理功能。正文選擇MogileFs的理由MogileFS系統(tǒng)的分布式存儲(chǔ)可以解決Web服務(wù)器負(fù)載過大的問題。Eshangtu項(xiàng)目中需要存儲(chǔ)大量的圖片,并對(duì)用戶提供存取服務(wù),IO吞吐量較大。為了減輕Web服務(wù)器壓力,考慮采用分布式文件系統(tǒng),分流圖片文件的讀寫操作。圖片是靜態(tài)內(nèi)容,有如下需求:1, 需要集中存儲(chǔ),也就是對(duì)服務(wù)的需求者,只有一個(gè)統(tǒng)一的接口。2, 圖片需要的存

6、儲(chǔ)量比較大3, 要穩(wěn)定,文件不能丟失根據(jù)上述要求我們可以采用如下模式:可以使用眾多的網(wǎng)絡(luò)協(xié)議來使用File Server上的文件,可以是NFS或是CIFS,甚至可以是SAN(當(dāng)然,這東東比較貴的說)。但是為了滿足上面提出的3個(gè)要求,我更傾向于用分布式文件來取代File Server。MogileFS就是這樣一種系統(tǒng)。MogileFS 特性就介紹,官方介紹(1. 應(yīng)用層 不需要特殊的核心組件(2. 無單點(diǎn)失敗 MogileFS分布式文件存儲(chǔ)系統(tǒng)安裝的三個(gè)組件(存儲(chǔ)節(jié)點(diǎn)、跟蹤器、跟蹤用的數(shù)據(jù)庫),均可運(yùn)行在多個(gè) 機(jī)器上,因此沒有單點(diǎn)失敗。(你也可以將跟蹤器和存儲(chǔ)節(jié)點(diǎn)運(yùn)行在同一臺(tái)機(jī)器上,這樣你就沒有

7、必要用4臺(tái)機(jī)器)推薦至少兩臺(tái)機(jī)器。(3. 自動(dòng)的文件復(fù)制 基于不同的文件“分類”,文件可以被自動(dòng)的復(fù)制到多個(gè)有足夠存儲(chǔ)空間的存儲(chǔ)節(jié)點(diǎn)上,這樣可以滿足這個(gè)“類別”的最少復(fù)制要求。比如你有一個(gè)圖片網(wǎng)站,你可以設(shè)置原始的JPEG圖片需要復(fù)制 至少三份,但實(shí)際只有1or2份拷貝,如果丟失了數(shù)據(jù),那么MogileFS分布式文件存儲(chǔ)系統(tǒng)可以重新建立遺失的拷貝數(shù)。用這種辦法,MogileFS(不做RAID)可以節(jié)約磁盤,否則你將存儲(chǔ)同樣的拷貝多份,完全沒有必要。(4. “比RAID好多了” 在一個(gè)非存儲(chǔ)區(qū)域網(wǎng)絡(luò)的RAID(non-SAN RAID)的建立中,磁盤是冗余的,但主機(jī)不是,如果你整個(gè)機(jī)器壞了,那么

8、文件也將不能訪問。 MogileFS分布式文件存儲(chǔ)系統(tǒng)在不同的機(jī)器之間進(jìn)行文件復(fù)制,因此文件始終是可用的。(5.傳輸中立,無特殊協(xié)議 MogileFS分布式文件存儲(chǔ)系統(tǒng)客戶端可以通過NFS或HTTP來和MogileFS的存儲(chǔ)節(jié)點(diǎn)來通信,但首先需要告知跟蹤器一下。(6. 簡單的命名空間 文件通過一個(gè)給定的key來確定,是一個(gè)全局的命名空間。你可以自己生成多個(gè)命名空間,只要你愿意,不過這樣可能在同一MogileFS中會(huì)造成key沖突。(7. 不用共享任何東西 MogileFS分布式文件存儲(chǔ)系統(tǒng)不需要依靠昂貴的SAN來共享磁盤,每個(gè)機(jī)器只用維護(hù)好自己的磁盤。(8. 不需要RAID 在MogileFS

9、中的磁盤可以是做了RAID的也可以是沒有,如果是為了安全性著想的話RAID沒有必要買了,因?yàn)镸ogileFS分布式文件存儲(chǔ)系統(tǒng)已經(jīng)提供了。MogileFS 的結(jié)構(gòu)在使用前,我們需要對(duì) MogileFS 有個(gè)基本的了解,就是他的三個(gè)大的部分,Tracker and Database 和 Storage Nodes, Client 組成。由二個(gè)服務(wù)進(jìn)程 MogileFSd 和mogstored .如圖:客戶端,連接到一個(gè)域,然后在域中拿著文件的 key 來查文件的位置,然后通過集群中的位置來打開這個(gè)文件。 MogileFS 的結(jié)構(gòu)圖MogileFS 的三個(gè)大的部分   

10、;  前面提到 Tracker and Database 和 Storage Nodes, Client 組成,我們這先不講 Client.因?yàn)镃lient實(shí)際上是一個(gè) Perl 的 pm,可以寫程序調(diào)用該 pm 來使用 MogileFS 系統(tǒng),對(duì)整個(gè)系統(tǒng)進(jìn)行讀寫操作。另外,象 nginx 之類有相關(guān)的模塊。另外也有做成象文件系統(tǒng)一樣采用fuse方式掛載.(1.Trackers(跟蹤器 ,調(diào)度器)-MogileFSd       這個(gè)是 MogileFS 的核心部分,通俗點(diǎn)講,就他是一個(gè)調(diào)度器。MogileFSd 進(jìn)程就是 trackers程序

11、,類似 MogileFS 的 wiki 上介紹的,trackers 做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。這個(gè)是基于事件的( event-based ) 父進(jìn)程/消息總線來管理所有來之于客戶端應(yīng)用的交互(requesting operations to be performed), 包括將請(qǐng)求負(fù)載平衡到 “query workers” 中,讓 MogileFSd 的子進(jìn)程去處理. mogadm,mogtool 的所有操作都要跟 trackers 打交 道,Client 的一些操作也需要定義好 trackers,因此最好同時(shí)運(yùn)行多

12、個(gè) trackers 來做負(fù)載均衡。trackers 也可以只運(yùn)行在一臺(tái)機(jī)器 上,也可以跟其他程序運(yùn)行在一起(不建議)· 注:mogilefsd的子進(jìn)程有: o Replication 機(jī)器間復(fù)制文件o Deletion 從命名空間刪除是立即的,從文件系統(tǒng)刪除是異步的o Query 響應(yīng)客戶端的請(qǐng)求o Reaper 在磁盤失敗后將文件復(fù)制請(qǐng)求重新放到隊(duì)列中o Monitor 監(jiān)測主機(jī)和設(shè)配的健康度和狀態(tài)配置文件: /etc/mogilefs/mogilefsd.conf(2. 數(shù)據(jù)庫(MySQL)部分      如上圖所顯示的,數(shù)據(jù)庫用來存放

13、MogileFS 的元數(shù)據(jù) (命名空間, 和文件在哪里). 是 Trackers 來操作和管理它。你可以用 mogdbsetup 程序來初始化數(shù)據(jù)庫。因?yàn)閿?shù)據(jù)庫保存了MogileFS的所有元數(shù)據(jù),如果這兒掛了,那么整個(gè) MogileFS 將處于不可用狀態(tài)。因此最好是HA結(jié)構(gòu)。(3. 存儲(chǔ)節(jié)點(diǎn)(Storage Nodes )-mogstored,Apache,Nginx      實(shí)際文件存放的地方. 存儲(chǔ)節(jié)點(diǎn)是一個(gè) HTTP 服務(wù)器,用來做刪除,存放,重命名等事情,任何 WebDAV 服務(wù)器都可以, 不過推薦使用 mogstored 。 Mog

14、ileFSd 可以配置到兩個(gè)機(jī)器上使用不同端口 mogstored 為所有 DAV 操作 (和流量監(jiān)測), 并且你自己選擇的快速的 HTTP 服務(wù)器用來做 GET 操作(給客戶端提供文件). 典型的應(yīng)用是一個(gè)掛載點(diǎn)有一個(gè)大容量的 SATA 磁盤,它們被掛載到 /var/mogdata/devNN. 只要配置完配置文件后 mogstored 程序的啟動(dòng)將會(huì)使本機(jī)成為一個(gè)存儲(chǔ)節(jié)點(diǎn)。當(dāng)然還需要 mogadm 這個(gè)工具增加這臺(tái)機(jī)器到 Cluster 中。配置文件: /etc/mogilefs/mogstored.confMogileFS 的二個(gè)服務(wù)進(jìn)程 對(duì)應(yīng)上面的部分MogileFSd Mo

15、gileFS 的主守護(hù)進(jìn)程,就是上面指的 trackers(跟蹤器 ),由 /etc/MogileFS/MogileFSd.conf 這個(gè)配置文件控制。Mogstored MogileFS 存儲(chǔ)守護(hù)進(jìn)程, 這個(gè)就是上面指的存儲(chǔ)節(jié)點(diǎn)(Storage Nodes ),由 /etc/MogileFS/mogstored.conf 這個(gè)配置文件控制。 MogileFS 的其它     有幾個(gè)小工具,主要就是 mogadm,mogtool 這兩個(gè)工具了,用來在命令行下控制整個(gè) MogileFS 系統(tǒng)以及查看狀態(tài)等等。MogileFS 中的存儲(chǔ)節(jié)點(diǎn)我們先看

16、下面的圖下面多了幾個(gè)存儲(chǔ)節(jié)點(diǎn),他們都是單獨(dú)的,便宜的,多硬盤的機(jī)器。每個(gè)機(jī)器下面有多個(gè)分區(qū),可以用來存放這個(gè)存儲(chǔ)系統(tǒng)的數(shù)據(jù)的"device".下面我們來詳細(xì)講講:存儲(chǔ)主機(jī)(節(jié)點(diǎn))這個(gè)是 MogileFS 存儲(chǔ)文件存放在這些機(jī)器上,也是 mogstored 節(jié)點(diǎn),也叫 Storage Server,一臺(tái)存儲(chǔ)主要都要啟動(dòng)一個(gè) mogstored 服務(wù)。擴(kuò)容就是增加這些機(jī)器。設(shè)備(device)一個(gè)存儲(chǔ)節(jié)點(diǎn),以就是上面的主機(jī),可以有多個(gè) device, 就是用來存放文件的目錄(比較掛載的目錄),每個(gè)設(shè)備都有一個(gè)設(shè)備 id,需要在 mogstored 的配置文件中的 docroot

17、 配置的項(xiàng)目 指定的目錄下面創(chuàng)建相應(yīng)的設(shè)備的目錄,目錄名為 $docroot/dev$id,設(shè)備是不能刪除的。只能將其設(shè)備的狀態(tài)的值置為dead,當(dāng)一個(gè)設(shè)備 dead 之后,就真的 dead了,里面的數(shù)據(jù)也無法恢復(fù)了,且這個(gè)dead了的設(shè)備的 id 也不能再用.MogileFS 內(nèi)部的管理關(guān)系從上面我們可以見到,整個(gè) MogileFS 分幾個(gè)小的部分,所有文件的操作,都是通過 Key 來取的。一個(gè) Key 對(duì)應(yīng)一個(gè) MogileFS 中的文件。在這個(gè)中,有幾個(gè)東西我們需要知道,就是域,和類的作用。域(domain)在一個(gè) MogileFS 中,可以有多個(gè)域,用來存放不同的文件,比如,不同大小的

18、文件,不同類型的文件。所有 alive 的"設(shè)備"是一個(gè)大的整體,形成一個(gè)統(tǒng)一的存儲(chǔ)空間,里面的數(shù)據(jù)可以根據(jù) "域" domain 和類 class 來分類管理,屬于同一個(gè) domain,即使是屬于不同的class,文件的key也必須是唯一的.不同域的 key 才能重復(fù)類(class)在一個(gè)域中,可以有多個(gè)類,主要是用來控制復(fù)制單元的,類是用來做屬性管理的,類是比域 domain 低一個(gè)級(jí)別,可以定義一個(gè)文件存儲(chǔ)在不同 device 中的份數(shù)。一個(gè)文件必須通過 domain,class 和 key 才能找出來。我們可以給不同的重要程度的文件,不同熱度的文

19、件,來分別用類來控制份數(shù)。MogileFS 的安裝與配置 詳細(xì)參考文檔MogileFS 的客戶端和API在 MogileFS 最重要的一個(gè)部分是客戶端的應(yīng)用,可以支持的語言非常多,也支持 FUSE?,F(xiàn)在就描述一下Java客戶端的操作和Fuse掛載的操作。(1.MogileFS類介紹要對(duì)遠(yuǎn)程的MogileFS服務(wù)端進(jìn)行操作,首先需要?jiǎng)?chuàng)建一個(gè)MogileFS類;   MogileFS mfs = new MogileFS(String domain, String trackerStrings, boolean connectNow); String domain : Mogi

20、leFS服務(wù)端的domain名字;String trackerStrings : mogileFS服務(wù)端track的ip加端口;boolean connectNow : 是否現(xiàn)在進(jìn)行連接。例如: MogileFS mfs = new MogileFS("funtestdomain",new String":6001",true);創(chuàng)建MogileFS類可能拋出的異常有: NoTrackersException, BadHostFormatExceptionMogileFS客戶端輸出流的生成:    要把客戶端中

21、的圖片或文件上傳到MogileFS的服務(wù)端中需要?jiǎng)?chuàng)建一個(gè)輸出流,當(dāng)創(chuàng)建MogileFS對(duì)象成功(暫命名該對(duì)象的名稱為mfs)后就能調(diào)用newFile方法創(chuàng)一個(gè)MogileFS輸出流。    public MogileOutputStream newFile(String key, String storageClass,long byteCount) String key : 文件上傳到服務(wù)端后,存儲(chǔ)該名字到數(shù)據(jù)庫中作為標(biāo)識(shí);String storageClass :接受該文件的storage的class名字。long byteCount : 文件的長度。例如:&

22、#160;        OutputStream out = mfs.newFile("myjpg","funtestclass", file.length();可能拋出的異常有:NoTrackersException,TrackerCommunicationException,StorageCommunicationException MogileFS客戶端輸出流(MogileOutputStream)輸出動(dòng)作的調(diào)用:MogileOutputStream是繼承了OutputStream,該類

23、的構(gòu)造方法如下:MogileOutputStream(Backend backend, String domain, String fid, String path, String devid, String key,long totalBytes) 可能拋出的異常有:MalformedURLException,StorageCommunicationException在這里我使用了對(duì)象的上傳對(duì)象方法,所以對(duì)這個(gè)類就不作介紹了,只介紹寫的方法:write(byte) public void write(byte b) throws IOException writ

24、e(int) public void write(int b) throws IOException write(byte,int,int) public void write(byte b, int off, int len) throws IOException整個(gè)個(gè)過程如下:  OutputStream out = mfs.newFile(key,tclass, file.length();                FileInputStrea

25、m in = new FileInputStream(file);                byte buffer = new byte1024;                int count = 0;                System.out.println("Sta

26、rtTime:"+d);                while (count = in.read(buffer) >= 0)                     out.write(buffer, 0, count);             

27、  輸出流的另外兩個(gè)方法:flush()刷新緩沖區(qū);close()關(guān)閉輸出流。依靠以上兩個(gè)東西就能夠?qū)ogileFS進(jìn)行寫的操作了。MogileFS類其它相關(guān)的方法delete(String key)刪除服務(wù)器上相應(yīng)的文件;public void delete(String key) 可能拋出的異常有:   NoTrackersException,NoTrackersExceptiongetFile(String key,File destination)下載文件 public File getFile(String key, File destina

28、tion)可能拋出的異常有:        NoTrackersException, TrackerCommunicationException,IOException, StorageCommunicationExceptiongetFileStream(String key) 獲取下載文件的輸入流 public InputStream getFileStream(String key)      可能拋出的異常有:NoTrackersException,TrackerCommunicationException,Stor

29、ageCommunicationExceptiongetFileBytes(String key)獲取文件的輸入流 public byte getFileBytes(String key)可能拋出的異常有:TrackerCommunicationException,IOException,StorageCommunicationException setMaxRetries(int maxRetries) 設(shè)置最大的失敗重試數(shù)Rename(String fromKey, String toKey)  public void rename(String fromKe

30、y, String toKey)可能拋出的異常有:  NoTrackersException sleep(int seconds)MogileFS有自己的睡眠線程 public void sleep(int seconds)可能拋出的異常有:   NoTrackersException,TrackerCommunicationExceptionsetRetryTimeout(int retrySleepTime) 設(shè)置連接等待的時(shí)間          public void setRe

31、tryTimeout(int retrySleepTime)(2.使用MogileFS的FUSE的API來對(duì)文件進(jìn)行操作另一個(gè)是基于象文件系統(tǒng)一樣的 FUSE先有個(gè)準(zhǔn)備工作,就是準(zhǔn)備 FUSE 的環(huán)境,這個(gè)要系統(tǒng)支持,也得 Perl 支持。 FUSE 主要就是原來給 VFS 的命令,轉(zhuǎn)成 MogileFS 相應(yīng)的命令來替換文件系統(tǒng)的操作。這樣就能和正常的文件系統(tǒng)一樣。顯示和操作想關(guān)的文件。MogileFS 中 FUSE 功能操作系統(tǒng)支持需要的包如下yum install fuse fuse-devel fuse-libsPerl 要支持 FUSE 的操作,所需要的模塊cpanm FUSE:Cl

32、ientcpanm FUSE:Servercpanm Fuse最后,我們需要掛載文件系統(tǒng)的內(nèi)容。默認(rèn) MogileFS 有一些操作。來支持這個(gè)功能。我們可以使用 sixapart 提供的一個(gè)程序我們可以使用 svn 下載 ,然后使用其中的 mount-filepaths 就可以實(shí)現(xiàn)這個(gè)功能了。命令的參數(shù)如下:mount-filepaths -tracker HOST:PORT -domain DOMAINNAME -class CLASSNNAME -file-perms FILEPERM -dir-perms DIRPERM -log LOGFILE -cache-size NUM -cache-age SECS -verbose -help 這個(gè)功能的使用,我們要借助另外二個(gè)插件MogileFS-Plugin-FilePathsMogileFS-Plugin-MetaData這二個(gè)插件的作用是,讓 MogileFS 支持文件列表。會(huì)給一些 MetaData 傳到這個(gè)系統(tǒng)中。不過這二個(gè)插件(模塊)可能得修改一下才能正常使用。 上面

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論