国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      小文件的存儲(chǔ)方法及系統(tǒng)的制作方法

      文檔序號(hào):7900067閱讀:239來(lái)源:國(guó)知局
      專利名稱:小文件的存儲(chǔ)方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及通信領(lǐng)域,具體地,涉及一種小文件的存儲(chǔ)方法及系統(tǒng)。
      背景技術(shù)
      目前,文件存儲(chǔ)系統(tǒng)已趨于成熟。申請(qǐng)?zhí)?01010184752.X公開了一種文件存儲(chǔ)方法,該方法通過(guò)用戶在網(wǎng)頁(yè)頁(yè)面上提交文件、并上傳至中轉(zhuǎn)服務(wù)器,將文件從中轉(zhuǎn)服務(wù)器通過(guò)遠(yuǎn)程服務(wù)存儲(chǔ)到存儲(chǔ)服務(wù)器。該存儲(chǔ)服務(wù)器沒有獨(dú)立的單做用作全局管理調(diào)度的管理服務(wù)器,難易實(shí)現(xiàn)全面的全局調(diào)度。而且,客戶端(Client)分別與主存儲(chǔ)器、隸屬存儲(chǔ)器均建立了短連接,同時(shí)完成存儲(chǔ)和備份,在主存儲(chǔ)器以及隸屬存儲(chǔ)器均操作成功時(shí),才反饋給Client操作成功消息,這屬于同步備份,反饋時(shí)延較長(zhǎng)。并且,存儲(chǔ)器的存儲(chǔ)用磁盤沒有存儲(chǔ)區(qū)分,這導(dǎo)致了訪問的IO性能較差,從而可能導(dǎo)致尋址效率低。也就是說(shuō),現(xiàn)有的文件存儲(chǔ)系統(tǒng)存在反饋時(shí)延較長(zhǎng)、訪問IO性能較差的問題。

      發(fā)明內(nèi)容
      本發(fā)明實(shí)施例的主要目的在于提供一種小文件的存儲(chǔ)方法及系統(tǒng),以解決現(xiàn)有技術(shù)中的文件存儲(chǔ)系統(tǒng)的反饋時(shí)延較長(zhǎng)、訪問IO性能較差的問題。為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種小文件的存儲(chǔ)方法,該方法包括管理系統(tǒng)接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求;所述管理系統(tǒng)根據(jù)所述的存儲(chǔ)請(qǐng)求,獲取主存儲(chǔ)器的IP地址;所述管理系統(tǒng)將所述主存儲(chǔ)器的IP地址發(fā)送給所述客戶端;所述客戶端與所述主存儲(chǔ)器之間建立連接;所述主存儲(chǔ)器接收并存儲(chǔ)來(lái)自所述客戶端的需要存儲(chǔ)的數(shù)據(jù),并斷開所述客戶端與所述主存儲(chǔ)器建立的連接;所述管理系統(tǒng)設(shè)置群組文件名,所述主存儲(chǔ)器設(shè)置所述需要存儲(chǔ)數(shù)據(jù)的文件名;所述主存儲(chǔ)器根據(jù)所述群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理;所述主存儲(chǔ)器將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信息。具體地,在獲取主存儲(chǔ)器的IP地址之前,上述的方法還包括所述管理系統(tǒng)在存儲(chǔ)器組中選擇一個(gè)存儲(chǔ)器為主存儲(chǔ)器,其余存儲(chǔ)器為隸屬存儲(chǔ)器,其中,所述的存儲(chǔ)器組至少包括兩個(gè)存儲(chǔ)器;所述管理系統(tǒng)將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器。優(yōu)選地,在所述管理系統(tǒng)將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器之后,所述的方法還包括當(dāng)所述的主存儲(chǔ)器停機(jī)時(shí),所述管理系統(tǒng)在所述存儲(chǔ)器組中重新選擇新的主存儲(chǔ)器。優(yōu)選地,在所述主存儲(chǔ)器將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器并記錄存儲(chǔ)路徑信息之后,所述的方法還包括所述主存儲(chǔ)器接收所述的客戶端對(duì)存儲(chǔ)數(shù)據(jù)的編輯操作;所述主存儲(chǔ)器對(duì)編輯后的數(shù)據(jù)進(jìn)行保存并備份到相應(yīng)的隸屬存儲(chǔ)器。本發(fā)明實(shí)施例還提供一種小文件的存儲(chǔ)系統(tǒng),該系統(tǒng)包括管理系統(tǒng)、客戶端、以及包括主存儲(chǔ)器和隸屬存儲(chǔ)器的存儲(chǔ)器組,其中,所述的管理系統(tǒng)包括存儲(chǔ)請(qǐng)求接收單元,用于接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求;IP地址獲取單元,用于根據(jù)所述的存儲(chǔ)請(qǐng)求獲取主存儲(chǔ)器的IP地址;IP地址發(fā)送單元,用于將所述主存儲(chǔ)器的IP地址發(fā)送給所述客戶端;群組文件名設(shè)置單元,用于設(shè)置所述主存儲(chǔ)器存儲(chǔ)數(shù)據(jù)的群組文件名;所述主存儲(chǔ)器包括數(shù)據(jù)接收單元,用于接收并存儲(chǔ)來(lái)自所述客戶端的需要存儲(chǔ)的數(shù)據(jù);通信鏈路管理單元,用于建立或斷開所述客戶端與所述主存儲(chǔ)器之間的通信鏈路;文件名設(shè)置單元,用于設(shè)置所述需要存儲(chǔ)數(shù)據(jù)的文件名;數(shù)據(jù)歸類處理單元,用于根據(jù)所述管理系統(tǒng)設(shè)置的群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理;數(shù)據(jù)備份單元,用于將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信息。具體地,所述的管理系統(tǒng)還包括隸屬關(guān)系選擇單元,用于在存儲(chǔ)器組中選擇一個(gè)存儲(chǔ)器為主存儲(chǔ)器,其余存儲(chǔ)器為隸屬存儲(chǔ)器;隸屬信息發(fā)送單元,用于將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器。優(yōu)選地,所述的隸屬關(guān)系選擇單元還用于當(dāng)所述的主存儲(chǔ)器停機(jī)時(shí),在所述存儲(chǔ)器組中重新選擇新的主存儲(chǔ)器。優(yōu)選地,所述主存儲(chǔ)器還包括編輯操作接收單元,用于接收所述的客戶端對(duì)存儲(chǔ)數(shù)據(jù)的編輯操作;所述的數(shù)據(jù)備份單元還用于對(duì)編輯后的數(shù)據(jù)進(jìn)行保存并備份到相應(yīng)的隸屬存儲(chǔ)器。借助于上述技術(shù)方案至少之一,通過(guò)管理系統(tǒng)將主存儲(chǔ)器的IP地址發(fā)送給客戶端,使得客戶端與主存儲(chǔ)器之間可以直接連接進(jìn)行數(shù)據(jù)的存儲(chǔ),且,備份操作也是在主存儲(chǔ)器和隸屬存儲(chǔ)器之間實(shí)現(xiàn),從而可以克服現(xiàn)有技術(shù)中的反饋時(shí)延較長(zhǎng)、訪問IO性能較差的問題,提高IO性能。


      為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是根據(jù)本發(fā)明實(shí)施例的小文件存儲(chǔ)方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的管理系統(tǒng)與多個(gè)存儲(chǔ)器之間的連接關(guān)系示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的小文件存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖;圖4、5分別是Master、Slave執(zhí)行數(shù)據(jù)備份時(shí)的流程圖;圖6是Block文件的邏輯結(jié)構(gòu)示意圖;圖7、8分別是Master、Slave處理同一個(gè)Block的流程圖;圖9是根據(jù)本發(fā)明實(shí)施例的小文件存儲(chǔ)系統(tǒng)的結(jié)構(gòu)框圖;圖10是根據(jù)本發(fā)明實(shí)施例的管理系統(tǒng)的結(jié)構(gòu)框圖;圖11是根據(jù)本發(fā)明實(shí)施例的小文件存儲(chǔ)系統(tǒng)的架構(gòu)示意圖;圖12是根據(jù)本發(fā)明實(shí)施例的上傳文件數(shù)據(jù)流程;圖13是根據(jù)本發(fā)明實(shí)施例的查閱文件的流程圖。
      具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種小文件的存儲(chǔ)方法和系統(tǒng)。以下結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。實(shí)施例一本發(fā)明實(shí)施例提供一種小文件的存儲(chǔ)方法,如圖I所示,該方法包括步驟101,管理系統(tǒng)接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求;步驟102,管理系統(tǒng)根據(jù)存儲(chǔ)請(qǐng)求,獲取主存儲(chǔ)器的IP地址;步驟103,管理系統(tǒng)將主存儲(chǔ)器的IP地址發(fā)送給客戶端;步驟104,客戶端與主存儲(chǔ)器之間建立連接;步驟105,主存儲(chǔ)器接收并存儲(chǔ)來(lái)自客戶端的需要存儲(chǔ)的數(shù)據(jù),之后斷開客戶端與主存儲(chǔ)器建立的連接;步驟106,管理系統(tǒng)設(shè)置群組文件名,主存儲(chǔ)器設(shè)置需要存儲(chǔ)數(shù)據(jù)的文件名;步驟107,主存儲(chǔ)器根據(jù)管理系統(tǒng)設(shè)置的群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理步驟108,主存儲(chǔ)器將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信息。由以上描述可知,通過(guò)管理系統(tǒng)將主存儲(chǔ)器的IP地址發(fā)送給客戶端,使得客戶端與主存儲(chǔ)器之間可以直接連接進(jìn)行數(shù)據(jù)的存儲(chǔ),且,備份操作也是在主存儲(chǔ)器和隸屬存儲(chǔ)器之間實(shí)現(xiàn),無(wú)需像現(xiàn)有技術(shù)中的同步備份,因此,通過(guò)本發(fā)明實(shí)施例可以克服現(xiàn)有技術(shù)中的反饋時(shí)延較長(zhǎng)、訪問IO性能較差的問題,提高IO性能。在實(shí)際操作中,在獲取主存儲(chǔ)器的IP地址之前,管理系統(tǒng)需要在存儲(chǔ)器組中選擇一個(gè)存儲(chǔ)器為主存儲(chǔ)器,其余存儲(chǔ)器為隸屬存儲(chǔ)器,其中,存儲(chǔ)器組至少包括兩個(gè)存儲(chǔ)器;然后管理系統(tǒng)將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器。圖2示出了管理系統(tǒng)(也可以稱為管理服務(wù)器,NameServer)與多個(gè)存儲(chǔ)器(DataServer)之間的連接關(guān)系,如圖2所示,以兩臺(tái)DataServer (簡(jiǎn)稱為DS)為一存儲(chǔ)器組(group),布置多組為一集群,每一組由唯一的ID號(hào)標(biāo)識(shí),在同一組內(nèi)DataServer有不同的機(jī)器號(hào)標(biāo)識(shí)。DataServer在啟動(dòng)時(shí),向NameServer注冊(cè),提供ID號(hào)和機(jī)器號(hào),NameServer選擇一臺(tái)DataServer作為主存儲(chǔ)器(Master),其余的為隸屬存儲(chǔ)器(Slave)。在備份過(guò)程中,由NameServer提供給Master相應(yīng)的Slave信息。當(dāng)Master因故障停機(jī),那么由NameServer自動(dòng)選擇Slave作為Master繼續(xù)提供服務(wù),支持Master與Slave的自動(dòng)切換,避免人工干預(yù),減少服務(wù)停止時(shí)間以及人為出錯(cuò)風(fēng)險(xiǎn)。即,當(dāng)主存儲(chǔ)器停機(jī)時(shí),管理系統(tǒng)在存儲(chǔ)器組中重新選擇新的主存儲(chǔ)器。在Master和Slave自動(dòng)切換時(shí),為避免數(shù)據(jù)重復(fù)備份,采用以下策略AiJSMaster與Slave的通信協(xié)議,Master與Slave相互通信實(shí)時(shí)同步備份的位置,記錄相應(yīng)的位置至本地文件。在具體實(shí)施過(guò)程中,主存儲(chǔ)器還可以接收客戶端對(duì)存儲(chǔ)數(shù)據(jù)的編輯操作,當(dāng)客戶端完成編輯操作后,主存儲(chǔ)器對(duì)編輯后的數(shù)據(jù)進(jìn)行保存并備份到相應(yīng)的隸屬存儲(chǔ)器,以便后續(xù)的查閱。該編輯操作可以包括查詢、修改等操作。
      以下給出一個(gè)實(shí)例。圖3是小文件存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖,如圖3所示,系統(tǒng)中的每組MasterServer/SlaveServer均需向管理服務(wù)器(NameServer,簡(jiǎn)稱為Ns)注冊(cè)后才能發(fā)揮系統(tǒng)存儲(chǔ)的作用。注冊(cè)后的若干組 MasterServer/SlaveServer,每個(gè) MasterServer 以及 SlaveServer 均通過(guò)心跳通信的方式與管理服務(wù)器保持長(zhǎng)連接,使得MasterServer/SlaveServer均受到管理服務(wù)器的監(jiān)控。當(dāng)用戶需要上傳數(shù)據(jù)時(shí),客戶端向管理服務(wù)器發(fā)起上傳請(qǐng)求,管理服務(wù)器選擇合適主存儲(chǔ)器,并將該主存儲(chǔ)器的連接信息IP和Port發(fā)送給用客戶端,客戶端根據(jù)連接信息與該主存儲(chǔ)器建立短連接。連接建立后,主存儲(chǔ)器向管理服務(wù)器發(fā)出Block分配請(qǐng)求,該Block即上述的群組文件名,由管理服務(wù)器設(shè)定。管理服務(wù)器的Block分配模塊響應(yīng)請(qǐng)求并分配Block id給主存儲(chǔ)器。同時(shí),管理服務(wù)器在關(guān)系列表模塊中建立Block id和DS的對(duì)應(yīng)關(guān)系。DS在收到分配的Block id后,開始和用戶進(jìn)行上傳小文件步驟。在實(shí)際操作中,主存儲(chǔ)器會(huì)根據(jù)自身情況選擇是否需要向管理服務(wù)器發(fā)送Block分配請(qǐng)求。如果主存儲(chǔ)器當(dāng)前大文件(Block)寫滿了,那么主存儲(chǔ)器向管理服務(wù)器發(fā)送Block分配請(qǐng)求,Block分配請(qǐng)求只是分配可用的Block id,實(shí)際存取的大文件名由存儲(chǔ)器決定,管理服務(wù)器管理Blockid號(hào),使得全局唯一,避免重復(fù)。主存儲(chǔ)器將接收到的大量小文件(實(shí)際數(shù)據(jù)文件)合并成為一個(gè)大文件(Block)。每一個(gè)Block擁有集群內(nèi)唯一的標(biāo)識(shí)Block id。Block id由NameServer指定和命名,NameServer維護(hù)Block和DataServer的對(duì)應(yīng)關(guān)系,以及DataServer相關(guān)信息,包括DataServer加入與退出。數(shù)據(jù)存儲(chǔ)在DataServer,各組DataServer之間的數(shù)據(jù)是相互獨(dú)立的,同一組內(nèi)的數(shù)據(jù)是一樣的。每一個(gè)小文件在系統(tǒng)中對(duì)應(yīng)于唯一的文件名(Filename),在一個(gè)Block內(nèi)有唯一的File id。這樣通過(guò)Block id和File id就可以定位到實(shí)際的文件。上述Filename就是由Block id、File id、文件類型以及應(yīng)用ID號(hào)編碼生成。在用戶(Client)上傳數(shù)據(jù)時(shí),只和主存儲(chǔ)器建立短連接,不和隸屬存儲(chǔ)器建立直接連接。在用戶和主存儲(chǔ)器通訊完成并反饋給用戶操作成功消息后即斷開。當(dāng)用戶需要進(jìn)行查詢或刪除操作時(shí),客戶端向管理服務(wù)器發(fā)起查詢或刪除請(qǐng)求,管理服務(wù)器根據(jù)查詢或刪除的對(duì)象ID,從關(guān)系列表模塊中找到該對(duì)象ID對(duì)應(yīng)的Block id以及對(duì)應(yīng)的DataServer。管理服務(wù)器將DataServer的連接信息IP和Port發(fā)送給用戶,用戶根據(jù)連接信息與管理服務(wù)器確定的DataServer建立短連接,連接后在具體的Block內(nèi)進(jìn)行相應(yīng)的查詢或刪除操作。主存儲(chǔ)器在設(shè)定的時(shí)間間隔或者設(shè)定文件修改操作量條件滿足時(shí),在主存儲(chǔ)器和隸屬存儲(chǔ)器之間完成異步備份作業(yè)。NameServer和DataServer都有熱備份存在,當(dāng)NameServer或DataServer不可用,相應(yīng)的熱備就可以充當(dāng)NameServer或DataServer使用。上述數(shù)據(jù)備份采用的是Master-Slave架構(gòu),Master對(duì)數(shù)據(jù)更新操作時(shí),如執(zhí)行完上傳或刪除操作時(shí),將更新信息串行化寫入本地log文件。以每一組為單位,在同組內(nèi)從Master異步備份數(shù)據(jù)至Slave。Master根據(jù)log文件,將數(shù)據(jù)操作發(fā)送至Slave, Slave記錄當(dāng)前備份所處位置。
      備份的數(shù)據(jù)分為兩部分實(shí)際文件數(shù)據(jù)和信息數(shù)據(jù),以下分別對(duì)這兩部分?jǐn)?shù)據(jù)的備份進(jìn)行描述。(一 )對(duì)實(shí)際文件數(shù)據(jù)的備份制定Master與Slave的通信協(xié)議,Master與Slave相互通信實(shí)時(shí)同步備份的位置,記錄相應(yīng)的位置至本地文件Iogl。同時(shí),Slave記錄作為Slave時(shí),同步數(shù)據(jù)所處的位置至本地文件log2。當(dāng)Slave切換成Master時(shí),新的Slave向新的Master發(fā)送數(shù)據(jù)同步請(qǐng)求,新的Master根據(jù)log2記錄的文件坐標(biāo),定位至相應(yīng)的位置開始同步數(shù)據(jù);如果沒有發(fā)生Master與Slave切換,Slave就根據(jù)Iogl記錄的文件坐標(biāo),向Master發(fā)送數(shù)據(jù)同步請(qǐng)求,Master根據(jù)Slave發(fā)送的文件坐標(biāo)位置,定位到相應(yīng)的位置同步數(shù)據(jù)。坐標(biāo)位置表不為:文件名和偏移量。具體地,Master開啟一個(gè)線程,作為同步的Server端,Slave開啟一個(gè)線程,作為Client端。Server和Client工作流程分別如下(I)Client 端DClient向Server發(fā)送數(shù)據(jù)同步請(qǐng)求,并告知當(dāng)前數(shù)據(jù)所處的坐標(biāo)位置(IogName, IogPos),如果發(fā)送請(qǐng)求失敗,則休眠I秒鐘,繼續(xù)發(fā)送請(qǐng)求,如果成功,則進(jìn)行至2);2)Client等待接收Server發(fā)送指令和數(shù)據(jù),如果成功進(jìn)行至3);3)解析指令,進(jìn)行文件數(shù)據(jù)寫入或刪除操作,以及坐標(biāo)位置更新操作,如果成功進(jìn)行至4),否則返回至I);4)將坐標(biāo)位置寫入本地文件,同時(shí)更新IogName和IogPos,返回至I)。(2) Server 端I) Server等待接收Client的同步請(qǐng)求,如果成功進(jìn)行至2);2) Server根據(jù)Client的坐標(biāo)位置,定位到相應(yīng)位置,如果有數(shù)據(jù),就發(fā)送給Client,否則進(jìn)行至5),如果成功發(fā)送數(shù)據(jù)則進(jìn)行至3),失敗則返回至I);3) Server向Client發(fā)送數(shù)據(jù)到相應(yīng)的坐標(biāo)位置,成功則跳至4),否則返回至I);4)更新坐標(biāo)位置,返回至2);5)檢查是否要跳轉(zhuǎn)至新的log文件,如果是,則更新坐標(biāo)位置信息,并發(fā)送該信息給Client,然后返回至I)。圖4、5分別是Master、Slave執(zhí)行數(shù)據(jù)備份時(shí)的流程圖,如圖4所示,Master的操作流程為步驟401,等待接收數(shù)據(jù)同步請(qǐng)求;步驟402,根據(jù)坐標(biāo)位置,定位至相應(yīng)的位置;步驟403,判斷是否有未同步的數(shù)據(jù),如果有,則進(jìn)行步驟404,否則進(jìn)行步驟405 ;步驟404,發(fā)送數(shù)據(jù)給Client,即,發(fā)送數(shù)據(jù)給Slave,然后進(jìn)行步驟406 ;步驟405,檢查是否需要轉(zhuǎn)至新文件,如果是,更新坐標(biāo)位置,并發(fā)送給Client ;步驟406,是否發(fā)送數(shù)據(jù)成功,如果是,則進(jìn)行步驟407,否則返回至步驟401 ;步驟407,發(fā)送新的坐標(biāo)位置給Client ;步驟408,是否發(fā)送新的坐標(biāo)位置成功,如果是,則進(jìn)行步驟409,否則返回至步驟401 ;
      步驟409,更新坐標(biāo)位置。如圖5所示,Slave的操作流程為;步驟501,根據(jù)坐標(biāo)位置,發(fā)送數(shù)據(jù)同步請(qǐng)求;步驟502,是否發(fā)送數(shù)據(jù)同步請(qǐng)求成功,如果是,則進(jìn)行步驟503,否則進(jìn)行步驟504 ;步驟503,等待接收數(shù)據(jù)和指令;步驟504,休眠I秒,并返回步驟501 ;步驟505,是否有數(shù)據(jù),如果是,則進(jìn)行步驟506,否則返回步驟501 ;步驟506,接收數(shù)據(jù),解析指令,執(zhí)行相關(guān)操作;步驟507,更新坐標(biāo)位置信息,并寫入本地文件。由上述可知,Master根據(jù)Slave發(fā)送的坐標(biāo)信息,將相對(duì)于該位置,做過(guò)更新操作的數(shù)據(jù)全部發(fā)送給Slave,直到?jīng)]有數(shù)據(jù)可以發(fā)送;而Slave —直接收數(shù)據(jù),直到數(shù)據(jù)到達(dá),然后根據(jù)最新的坐標(biāo)位置信息,向Master發(fā)送同步請(qǐng)求。如果數(shù)據(jù)同步不成功,那么坐標(biāo)信息也不會(huì)更新,此時(shí)Slave會(huì)要求Master再一次發(fā)送該數(shù)據(jù),直到成功。( 二)對(duì)信息數(shù)據(jù)的備份信息數(shù)據(jù)備份針對(duì)每一個(gè)Block,在Master和Slave之間,維持同一個(gè)能分配使用的File id,保持實(shí)時(shí)的一致性,同時(shí)寫入該File id至對(duì)應(yīng)Block文件的頭部,每個(gè)Block文件邏輯結(jié)構(gòu)如圖6所示,每一 Block有一個(gè)8字節(jié)的Block head用于存放針對(duì)該Block能使用的下一個(gè)File id,在Block中,每一小文件都有一個(gè)32字節(jié)的file head,存放索引信息。在系統(tǒng)中可以建立一個(gè)Block索引數(shù)據(jù)庫(kù),用于存放每一個(gè)Block能分配使用的File id,在同一個(gè)Block中File id加I遞增。Block每分配一個(gè)File id,那么就更新對(duì)應(yīng)Block的數(shù)據(jù)庫(kù)記錄,同時(shí)寫入Block文件頭部,并且將該File id同步至Slave,更新Slave上對(duì)應(yīng)的數(shù)據(jù)庫(kù)記錄和Block文件頭部。如果同步File id至Slave,則保存該記錄,等待重傳。需要說(shuō)明的是,在重傳的記錄中,每一個(gè)Block id只對(duì)應(yīng)一條File id記錄,并且該記錄可能會(huì)被實(shí)時(shí)更新。圖7、8分別是Master、Slave處理同一個(gè)Block的流程圖,如圖7所示,Master的操作流程為步驟701, Block 分配一個(gè) File id;步驟702,將下一個(gè)可用的File id保存至相應(yīng)的數(shù)據(jù)庫(kù)、并寫入Block頭部;步驟702,檢測(cè)是否有需要重傳的記錄,如果是,則進(jìn)行步驟704,否則,進(jìn)行步驟706 ;步驟704,是否重傳成功,如果否,則進(jìn)行步驟705,否則進(jìn)行步驟706 ;步驟705,留待下一次重傳;步驟706,刪除重傳成功的記錄,并同步File id至Slave ;步驟707,是否同步成功,如果否,則進(jìn)行步驟708,否則返回步驟701 ;步驟708,保存和更新重傳記錄。如圖8所示,Slave的操作流程為步驟801,接收同步的Block id和file id;
      步驟802,將Block id和file id保存至相應(yīng)的數(shù)據(jù)庫(kù)、寫入Block頭部,并返回步驟802。實(shí)施例二本發(fā)明實(shí)施例還提供一種小文件的存儲(chǔ)系統(tǒng),如圖9所示,該系統(tǒng)包括管理系統(tǒng)
      I、客戶端2、以及包括主存儲(chǔ)器31和隸屬存儲(chǔ)器32的存儲(chǔ)器組3,其中管理系統(tǒng)I包括存儲(chǔ)請(qǐng)求接收單元11,用于接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求;IP地址獲取單元12,用于根據(jù)存儲(chǔ)請(qǐng)求獲取主存儲(chǔ)器的IP地址;IP地址發(fā)送單元13,用于將主存儲(chǔ)器的IP地址發(fā)送給客戶端;群組文件名設(shè)置單元14,用于設(shè)置主存儲(chǔ)器存儲(chǔ)數(shù)據(jù)的群組文件名;主存儲(chǔ)器31包括數(shù)據(jù)接收單元311,用于接收并存儲(chǔ)來(lái)自客戶端的需要存儲(chǔ)的數(shù)據(jù);文件名設(shè)置單元312,用于根據(jù)預(yù)定規(guī)則設(shè)置需要存儲(chǔ)數(shù)據(jù)的文件名;數(shù)據(jù)歸類處理單元313,用于根據(jù)管理系統(tǒng)設(shè)置的群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理;數(shù)據(jù)備份單元314,用于將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信息;通信鏈路管理單元315,用于建立或斷開客戶端與主存儲(chǔ)器之間的通信鏈路。由以上描述可以看出,通過(guò)管理系統(tǒng)將主存儲(chǔ)器的IP地址發(fā)送給客戶端,使得客戶端與主存儲(chǔ)器之間可以直接聯(lián)系進(jìn)行數(shù)據(jù)的存儲(chǔ),且,備份操作也是在主存儲(chǔ)器和隸屬存儲(chǔ)器之間實(shí)現(xiàn),無(wú)需像現(xiàn)有技術(shù)中的同步備份,因此,通過(guò)本發(fā)明實(shí)施例可以克服現(xiàn)有技術(shù)中的反饋時(shí)延較長(zhǎng)、訪問IO性能較差的問題,提高IO性能。如圖10所示,管理系統(tǒng)I還包括隸屬關(guān)系選擇單元15,用于在存儲(chǔ)器組中選擇一個(gè)存儲(chǔ)器為主存儲(chǔ)器,其余存儲(chǔ)器為隸屬存儲(chǔ)器;隸屬信息發(fā)送單元16,用于將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器。當(dāng)主存儲(chǔ)器停機(jī)時(shí),隸屬關(guān)系選擇單元14還用于在存儲(chǔ)器組中重新選擇新的主存儲(chǔ)器。上述主存儲(chǔ)器31還包括編輯操作接收單元,用于接收客戶端對(duì)存儲(chǔ)數(shù)據(jù)的編輯操作。相應(yīng)地,數(shù)據(jù)備份單元314還用于對(duì)編輯后的數(shù)據(jù)進(jìn)行保存并備份到相應(yīng)的隸屬存儲(chǔ)器。上述各單元具體的執(zhí)行過(guò)程,可以參考上述實(shí)施例一中的描述,此處不再贅述。為了更好的理解本發(fā)明實(shí)施例,以下結(jié)合圖11詳細(xì)描述本發(fā)明實(shí)施例。圖11是該小文件存儲(chǔ)系統(tǒng)的架構(gòu)示意圖,如圖11所示,小文件存儲(chǔ)系統(tǒng)(以下簡(jiǎn)稱為kwfs)是一種分布式文件存儲(chǔ)系統(tǒng),由三大部分組成kwfs Client, kwfs NameSverver和kwfsDataServer。kwfs NameSverver為中心節(jié)點(diǎn),作為整個(gè)小文件存儲(chǔ)系統(tǒng)的調(diào)度和控制中心,DataServer可以自由添加和移除,保證良好的可擴(kuò)展性。同時(shí),對(duì)應(yīng)于若干DataServer,均設(shè)置 SlaveServer,作為 DataServer 的備份。其中,DataServer 和 SlaveServer 均與NameSverver建立采用心跳機(jī)制的長(zhǎng)連接。
      其中,NameSverver管理各DataServer有關(guān)信息,包括系統(tǒng)信息、各DataServer服務(wù)器加入、退出等、以及管理各DataServer服務(wù)器Block id的創(chuàng)建,刪除,負(fù)載等。DataServer處理實(shí)際數(shù)據(jù)存儲(chǔ)與讀寫,向NameServer報(bào)告服務(wù)器狀態(tài)(負(fù)載,文件數(shù)等);維護(hù)Block id與文件File id關(guān)系(索引)數(shù)據(jù)存儲(chǔ)位置、大小等。圖12是上傳文件數(shù)據(jù)流程,如圖12所示,當(dāng)Client向NameSverver發(fā)出請(qǐng)求信息時(shí),NameSverver查詢本地由DataServer不斷更新的索引目錄并將具有被查文件數(shù)據(jù)的DataServer的IP地址和Port反饋給Client, Client再分別與DataServer建立數(shù)據(jù)通信連接,以保證NameSverver的正常運(yùn)作減少傳輸壓力。其中,該不斷更新的索引目錄(Master, Slave) DataServer在本地也保存。在完成上傳之后,DataServer將Block狀態(tài)更新到NameSverver,并向Client反饋操作結(jié)果,如包括文件名(Filename)。文件名由Block id、File id、文件類型和應(yīng)用id組成,采用base64(六位2進(jìn)制表示)編碼生成。如果使用8字節(jié)存儲(chǔ)Block id,4字節(jié)存儲(chǔ)File id,那么Filename的長(zhǎng)度為16個(gè)字節(jié)。如假設(shè)Block id為123456,F(xiàn)ile id為888那么kwfs文件名為AAAAAAAB4kAAAAN4。如果需要標(biāo)識(shí)文件類型,那么設(shè)定六位二進(jìn)制組合表示文件類型(可以標(biāo)識(shí)64種文件類型),那么kwfs文件名長(zhǎng)度為17個(gè)字節(jié)。在NameSverver 上存儲(chǔ) Block id 和 DataServer 的對(duì)應(yīng)關(guān)系,在 DataServer 存儲(chǔ)Block id和File id以及文件在Block內(nèi)的偏移量和文件長(zhǎng)度的對(duì)應(yīng)關(guān)系。圖13是查閱文件的流程圖,如圖13所示,Client根據(jù)Filename解碼出Block id和File id(File id是相對(duì)于Block id的),然后定位到實(shí)際數(shù)據(jù)。當(dāng)需要?jiǎng)h除文件時(shí),首先是邏輯刪除,即在DataServer上將相應(yīng)的File id的信息移出至保存刪除信息的數(shù)據(jù)庫(kù)中,然后是物理刪除,在特定的時(shí)間點(diǎn),根據(jù)刪除信息回收對(duì)應(yīng)文件的磁盤空間,按序移動(dòng)和合并Block中未刪除的數(shù)據(jù),修改相應(yīng)File id的偏移量。在備份策略上,可采用多寫和單寫備份方式多寫方式在一定程度上會(huì)影響Server的響應(yīng)速度;單寫則需要以日志的方式記錄數(shù)據(jù)備份的時(shí)間點(diǎn)和狀態(tài),保證在備份過(guò)程中出現(xiàn)故障時(shí),再次備份時(shí)不會(huì)丟失數(shù)據(jù)。在系統(tǒng)實(shí)現(xiàn)過(guò)程中,可以根據(jù)實(shí)際情況選擇合適的策略。由以上描述可以看出,本發(fā)明實(shí)施例通過(guò)由NameSverver統(tǒng)一全局調(diào)股管理,擴(kuò)展時(shí)直接增加 Master DataServer/Slave DataServer 組即可,實(shí)現(xiàn)對(duì) DataServer 的統(tǒng)一全局管理調(diào)度,可擴(kuò)展性好。該NameSverver的設(shè)置可完成Master與Slave自動(dòng)切換,避免人工干預(yù),也可以避免切換后數(shù)據(jù)重復(fù)備份,減少服務(wù)停止時(shí)間。且,Client只和MasterDataServer建立短連接,直接通信完成并反饋給Client操作成功消息后即斷開。MasterDataServer在設(shè)定的時(shí)間間隔或者設(shè)定文件修改操作量條件滿足時(shí),和Slave DataServer之間完成異步備份作業(yè)。并且,由于若干DataServer的設(shè)置,使得整個(gè)小文件系統(tǒng)的容錯(cuò)性增強(qiáng),同時(shí),NameSverver對(duì)Client的統(tǒng)一請(qǐng)求管理,和Client與NameSverver的通信方法,使得系統(tǒng)的穩(wěn)定性增強(qiáng)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,比如R0M/RAM、磁碟、光盤等。
      以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種小文件的存儲(chǔ)方法,其特征在于,所述的方法包括 管理系統(tǒng)接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求; 所述管理系統(tǒng)根據(jù)所述的存儲(chǔ)請(qǐng)求,獲取主存儲(chǔ)器的IP地址; 所述管理系統(tǒng)將所述主存儲(chǔ)器的IP地址發(fā)送給所述客戶端; 所述客戶端與所述主存儲(chǔ)器之間建立連接; 所述主存儲(chǔ)器接收并存儲(chǔ)來(lái)自所述客戶端的需要存儲(chǔ)的數(shù)據(jù),并斷開所述客戶端與所述主存儲(chǔ)器建立的連接; 所述管理系統(tǒng)設(shè)置群組文件名,所述主存儲(chǔ)器設(shè)置所述需要存儲(chǔ)數(shù)據(jù)的文件名; 所述主存儲(chǔ)器根據(jù)所述群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理; 所述主存儲(chǔ)器將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信肩、O
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在獲取主存儲(chǔ)器的IP地址之前,所述的方法還包括 所述管理系統(tǒng)在存儲(chǔ)器組中選擇一個(gè)存儲(chǔ)器為主存儲(chǔ)器,其余存儲(chǔ)器為隸屬存儲(chǔ)器,其中,所述的存儲(chǔ)器組至少包括兩個(gè)存儲(chǔ)器; 所述管理系統(tǒng)將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述管理系統(tǒng)將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器之后,所述的方法還包括 當(dāng)所述的主存儲(chǔ)器停機(jī)時(shí),所述管理系統(tǒng)在所述存儲(chǔ)器組中重新選擇新的主存儲(chǔ)器。
      4.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述主存儲(chǔ)器將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器并記錄存儲(chǔ)路徑信息之后,所述的方法還包括 所述主存儲(chǔ)器接收所述的客戶端對(duì)存儲(chǔ)數(shù)據(jù)的編輯操作; 所述主存儲(chǔ)器對(duì)編輯后的數(shù)據(jù)進(jìn)行保存并備份到相應(yīng)的隸屬存儲(chǔ)器。
      5.一種小文件的存儲(chǔ)系統(tǒng),其特征在于,所述的系統(tǒng)包括管理系統(tǒng)、客戶端、以及包括主存儲(chǔ)器和隸屬存儲(chǔ)器的存儲(chǔ)器組,其中, 所述的管理系統(tǒng)包括 存儲(chǔ)請(qǐng)求接收單元,用于接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求; IP地址獲取單元,用于根據(jù)所述的存儲(chǔ)請(qǐng)求獲取主存儲(chǔ)器的IP地址; IP地址發(fā)送單元,用于將所述主存儲(chǔ)器的IP地址發(fā)送給所述客戶端; 群組文件名設(shè)置單元,用于設(shè)置所述主存儲(chǔ)器存儲(chǔ)數(shù)據(jù)的群組文件名; 所述主存儲(chǔ)器包括 數(shù)據(jù)接收單元,用于接收并存儲(chǔ)來(lái)自所述客戶端的需要存儲(chǔ)的數(shù)據(jù); 通信鏈路管理單元,用于建立或斷開所述客戶端與所述主存儲(chǔ)器之間的通信鏈路; 文件名設(shè)置單元,用于設(shè)置所述需要存儲(chǔ)數(shù)據(jù)的文件名; 數(shù)據(jù)歸類處理單元,用于根據(jù)所述管理系統(tǒng)設(shè)置的群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理; 數(shù)據(jù)備份單元,用于將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信息。
      6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述的管理系統(tǒng)還包括隸屬關(guān)系選擇單元,用于在存儲(chǔ)器組中選擇一個(gè)存儲(chǔ)器為主存儲(chǔ)器,其余存儲(chǔ)器為隸屬存儲(chǔ)器; 隸屬信息發(fā)送單元,用于將選擇的主存儲(chǔ)器的信息發(fā)送給選擇的隸屬存儲(chǔ)器。
      7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述的隸屬關(guān)系選擇單元還用于當(dāng)所述的主存儲(chǔ)器停機(jī)時(shí),在所述存儲(chǔ)器組中重新選擇新的主存儲(chǔ)器。
      8.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述主存儲(chǔ)器還包括 編輯操作接收單元,用于接收所述的客戶端對(duì)存儲(chǔ)數(shù)據(jù)的編輯操作; 所述的數(shù)據(jù)備份單元還用于對(duì)編輯后的數(shù)據(jù)進(jìn)行保存并備份到相應(yīng)的隸屬存儲(chǔ)器。
      全文摘要
      本發(fā)明提供一種小文件的存儲(chǔ)方法及系統(tǒng),其中,該方法包括管理系統(tǒng)接收來(lái)自客戶端的存儲(chǔ)請(qǐng)求;管理系統(tǒng)根據(jù)存儲(chǔ)請(qǐng)求,獲取主存儲(chǔ)器的IP地址;管理系統(tǒng)將主存儲(chǔ)器的IP地址發(fā)送給客戶端;客戶端與主存儲(chǔ)器之間建立連接;主存儲(chǔ)器接收并存儲(chǔ)來(lái)自客戶端的需要存儲(chǔ)的數(shù)據(jù),并斷開客戶端與主存儲(chǔ)器建立的連接;管理系統(tǒng)設(shè)置群組文件名,主存儲(chǔ)器設(shè)置需要存儲(chǔ)數(shù)據(jù)的文件名;主存儲(chǔ)器根據(jù)群組文件名將多個(gè)本地存儲(chǔ)數(shù)據(jù)進(jìn)行歸類處理;主存儲(chǔ)器將歸類處理后的本地存儲(chǔ)數(shù)據(jù)備份到隸屬存儲(chǔ)器,并記錄存儲(chǔ)路徑信息。通過(guò)本發(fā)明,可以提高IO性能。
      文檔編號(hào)H04L29/08GK102982033SQ20111026009
      公開日2013年3月20日 申請(qǐng)日期2011年9月5日 優(yōu)先權(quán)日2011年9月5日
      發(fā)明者曾毅, 向燦, 伍正勇, 鐘智將 申請(qǐng)人:深圳市快播科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1