服務器中的數據隊列的更新方法及系統的制作方法
【專利摘要】本申請公開了一種服務器中的數據隊列的更新方法與系統,可以避免數據文件在寫入磁盤陣列時所發生的傳輸錯誤。本申請更新方法包括:服務器監測所存儲的所有數據文件是否有所異動;若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列;若監測到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。
【專利說明】服務器中的數據隊列的更新方法及系統
【技術領域】
[0001]本申請涉及數據傳輸的系統與方法,具體涉及一種服務器中的數據隊列的更新方法及系統。
【背景技術】
[0002]隨著網絡流量的快速成長,許多過去不容易實現的服務也可以被輕易的完成。例如:寬帶上傳多媒體文件(multimedia file)。由于海量的傳輸仍會影響服務器的負荷量。因此在已知的多媒體服務器也會具備帶寬管理(Bandwidth Manager)的功能。服務器可以透過帶寬分布或緩存等方式減輕同時間的資料傳輸量。
[0003]此外,所述的傳輸方式更結合了多個實體磁盤,使得數據可以同步的寫入所述磁盤中。而現有技術對數據寫入磁盤的方式,是將數據同步的由來源端寫入服務器中。
[0004]而數據文件是以緩存(buffer)的方式寫入分散式文件裝置中。因此所有的數據文件都會被排入同一個緩存中。這樣會造成數據文件取出時的混亂。特別是,不同種類的數據文件若是指針指向錯誤時會造成兩筆數據文件的會毀損。
【發明內容】
[0005]本申請所要解決的技術問題在于提供一種服務器中的數據隊列的更新方法,可以避免數據文件在寫入磁盤陣列時所發生的傳輸錯誤。
[0006]為了解決上述問題,本申請揭示了一種服務器中的數據隊列的更新方法包括:月艮務器監測所存儲的所有數據文件是否有所異動;若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列;若監測到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。
[0007]進一步地,將所述數據文件存入相應的數據隊列的步驟進一步包括:將數據文件的路徑資訊存入對應的數據隊列中。
[0008]進一步地,服務器通過定時查詢的方式或者監控文件操作指令的方式監測所存儲的所有數據文件是否有所異動。
[0009]進一步地,在所述若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列之后,還包括:創建監控該數據隊列的工作線程,用于監控該數據隊列中的數據文件的異動;在所述監測到任一存儲的所述數據文件被刪除時,所述方法還包括:刪除所述數據文件對應的所述數據隊列的工作線程。
[0010]為了解決上述問題,本申請另揭示了一種數據切分的傳輸系統,內存模塊,用于存儲數據文件和數據隊列;監聽模塊,用于監測服務器中所存儲的所有數據文件是否有所異動;隊列管理模塊,連接于所述監聽模塊,所述隊列管理模塊用于若所述監聽模塊監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列;以及,若所述監聽模塊監測到到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。[0011]進一步地,將所述數據文件存入相應的數據隊列時,還包括:將數據文件的路徑資訊存入對應的數據隊列中。
[0012]進一步地,所述監聽模塊通過定時查詢的方式或者監控文件操作指令的方式監測所存儲的所有數據文件是否有所異動。
[0013]所述系統進一步包括:隊列監控模塊,
[0014]所述隊列監控模塊,用于在所述若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列之后,創建監控數據隊列的工作線程,所述工作線程用于監控該數據隊列中的數據文件的異動;
[0015]所述隊列監控模塊,還用于在所述監測到任一存儲的所述數據文件被刪除時,刪除所述數據文件對應的所述數據隊列的工作線程。
[0016]與現有技術相比,本申請可以獲得包括以下技術效果:
[0017]I)本申請改進數據文件的傳輸過程,數據文件寫入時若發生錯誤,本申請不需重新從客戶端中取得數據文件。
[0018]2)本申請若于傳輸數據文件的期間中發生錯誤,本申請可以透過至少一臺心跳服務器發報給報警服務器,使得后臺人員可以實時的得知何項組件發生異常。
[0019]當然,實施本申請的任一產品必不一定需要同時達到以上所述的所有技術效果。
【專利附圖】
【附圖說明】
[0020]此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
[0021]圖1是本申請實施例的架構示意圖。
[0022]圖2是本申請實施例的運作流程示意圖。
[0023]圖3是本申請實施例的細部架構示意圖。
[0024]圖4是本申請實施例的細部運作流程示意圖。
【具體實施方式】
[0025]以下將配合附圖及實施例來詳細說明本申請的實施方式,藉此對本申請如何應用技術手段來解決技術問題并達成技術功效的實現過程能充分理解并據以實施。
[0026]如在說明書及權利要求當中使用了某些詞匯來指稱特定組件。本領域技術人員應可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權利要求并不以名稱的差異來作為區分組件的方式,而是以組件在功能上的差異來作為區分的準則。如在通篇說明書及權利要求當中所提及的“包含”為一開放式用語,故應解釋成“包含但不限定于”。“大致”是指在可接收的誤差范圍內,本領域技術人員能夠在一定誤差范圍內解決所述技術問題,基本達到所述技術效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續描述為實施本申請的較佳實施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護范圍當視所附權利要求所界定者為準。本申請的服務器中的數據上傳系統。本申請的傳輸系統包括:本地端100與多臺心跳服務器210。而本地端100的服務器是由以下實體元件所構成,請參考圖1:接收模塊110、內存模塊120、監聽模塊130、隊列管理模塊140與分散式文件裝置150。
[0027]本申請的服務器的運作流程請參考下述步驟,請參考圖2所示:
[0028]步驟S210:服務器監測所存儲的所有數據文件是否有所異動;
[0029]步驟S220:若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列;以及
[0030]步驟S230:若監測到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。
[0031]接收模塊110,用于接收客戶端的數據文件。本地端100的服務器通過定時查詢的方式或者監控文件操作指令的方式監測所存儲的所有數據文件是否有所異動。內存模塊120連接于接收模塊110,內存模塊120用于存儲數據文件和數據隊列。具體來說,監聽模塊140,連接于所述內存模塊120,用于監測服務器中所存儲的所有數據文件是否有所異動。隊列管理模塊140連接于監聽模塊130,所述隊列管理模塊140用于若所述監聽模塊監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列,以及若所述監聽模塊監測到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。隊列管理模塊140將所述數據文件存入相應的數據隊列時,還將數據文件的路徑資訊存入對應的數據隊列中。監聽模塊130用于監測服務器中所存儲的所有數據文件是否有所異動。若監聽模塊130監測到到任一存儲的所述數據文件被刪除時,則通知所述隊列管理模塊140刪除對應所述數據文件的所述數據隊列。
[0032]所述監聽模塊130通過定時查詢的方式或者監控文件操作指令的方式監測所存儲的所有數據文件是否有所異動。所述監聽模塊130根據新增數據文件的操作指令驅動隊列管理模塊140創建新的數據隊列;所述監聽模塊130根據修改數據文件的操作指令,驅動隊列管理模塊140修改數據隊列中數據文件的路徑資訊;所述監聽模塊130根據刪除數據文件的操作指令,驅動隊列管理模塊140刪除隊列管理模塊140中對應的數據隊列。
[0033]所述系統進一步包括:隊列監控模塊160。所述隊列監控模塊160,用于在所述若監測到有新增的數據文件,則創建數據隊列,將所述數據文件存入相應的數據隊列。隊列監控模塊160還用于,在將所述數據文件存入相應的數據隊列之后,創建監控數據隊列的工作線程,所述工作線程用于監控該數據隊列中的數據文件的異動;
[0034]所述隊列監控模塊,還用于在所述監測到任一存儲的所述數據文件被刪除時,刪除所述數據文件對應的所述數據隊列的工作線程。
[0035]為進一步界定前述服務器的元件所執行的相關功能,因此更進一步的定義各種軟件實現的功能模塊,而所述的功能模塊請參考圖3:本地目錄161、上傳模塊162、掃描模塊163、控制模塊164、隊列監控模塊165、工作線程166。
[0036]本地目錄161,接收客戶端所發送的數據文件。掃描模塊163,連接于本地目錄161,掃描模塊163監視本地目錄的數據文件是否異動。控制模塊164,耦接于掃描模塊163,控制模塊163包括至少一數據隊列,每一數據隊列儲存對應的數據文件的路徑資訊,本地目錄161的任一數據文件異動時,掃描模塊163根據異動的種類的數據文件令控制模塊164創建新的數據隊列或更新已知的數據文件的內容。上傳模塊162,連接于本地目錄161,本地目錄161的任一數據文件異動時,上傳模塊162偵測異動的數據文件的文件種類,并根據文件種類將數據文件指派至對應的數據隊列。隊列監控模塊165,連接于控制模塊164,隊列監控模塊165根據數據隊列的數量產生對應數量的隊列監控模塊165。隊列監控模塊165根據數據隊列的數據文件的大小決定數據文件的切分數量,并根據切分數量對數據文件進行切分,并由每一個數據隊列對應的工作線程166將切分獲得的數據片段分別存儲至分散式文件裝置150。
[0037]上傳模塊162連接于本地目錄161與控制模塊164。掃描模塊163連接于本地目錄161與控制模塊164。在本申請中為能簡單且清楚的說明整體的運作方式,因此設置第一心跳服務器211與第二心跳服務器212。但實際上心跳服務器120的數量可以根據服務器的運行能力、帶寬或安全性等因素所決定。
[0038]控制模塊164連接于掃描模塊163、上傳模塊162、隊列監控模塊165、第一心跳服務器211與第二心跳服務器212。每一個本地目錄161可以存放各自數據文件。例如:視頻文件可以被存放置視頻本地目錄,而廣告文件則放至于廣告本地目錄中。一般而言,本地目錄161會定時的接收客戶端所傳送過來的數據文件。掃描模塊163監視本地目錄161中的文件是否有所異動。所述文件異動指的是數據的新增、搬移、修改或刪除。當本地目錄161中的文件有所異動時,則上傳模塊162將會把異動的數據文件在服務器中的路徑傳遞至控制模塊164。數據隊列存儲數據文件在磁盤上的路徑位置。
[0039]此外,上傳模塊162偵測本地目錄161所異動的數據文件的文件種類。廣義而言所述文件種類可能是音頻文件、影片文件或文字文件等等。進一步而言,音頻文件又可能細分為mp3、m4a、AAC或ARM等;影片文件又可細分為mov、flv、m4v、mkv或mp4等。
[0040]若控制模塊164中未存在數據文件的種類的數據隊列時,上傳模塊會驅動控制模塊164生成新的數據隊列。爾后,若有同一種類的數據文件被載入,上傳模塊162會將新載入的數據文件放入對應的數據隊列中。將數據文件的路徑資訊存入對應的數據隊列中。
[0041]控制模塊164會根據所接收到的文件路徑依次分類并產生各自對應的數據隊列,且不同的數據隊列會指派不同的隊列監控模塊165來進行處理。在圖1中是以第一數據隊列、第二數據隊列與第三數據隊列作為示意。每一個隊列監控模塊165會記錄所屬的數據隊列中的文件的切分資訊。在數據文件切分之前,隊列監控模塊165先從第一個數據隊列取出對頭元素(隊列的第一個元素),然后才進行切分。而數據隊列的數據取出方式是依照先進先出(First In First Out, FIFO)的方式所實現。
[0042]隊列監控模塊165用于在若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列之后,創建監控數據隊列的工作線程166,所述工作線程用于監控數據隊列中的數據文件的異動。隊列監控模塊165,還用于在所述監測到任一存儲的所述數據文件被刪除時,刪除所述數據文件對應的所述數據隊列的工作線程166。隊列監控模塊165對文件進行等長的切分。在完成文件的切分后,每一個文件切分的片段則定義為切分片段(slice)。隊列監控模塊165偵測所屬的數據隊列的堆疊數量超過上限時,隊列監控模塊165會向第一心跳服務器211與第二心跳服務器212發出報警信息。
[0043]而切分片段的數量是可以根據本地端110的性能所決定。例如:1個工作線程166可處理50兆的切分片段,那么一個200兆的數據文件分配給4個工作線程166處理。同理,500兆的數據文件,可以分配給10個工作線程166處理。
[0044]對于切分時所記錄的相關資訊則稱為切分資訊。例如,切分時的每一個切分長度與文件位置的在磁盤中的偏移量(offset)。掃描模塊163發現本地目錄161中的數據文件被刪除時,掃描模塊163會把控制模塊164中的對應數據隊列予以刪除。
[0045]接著,不同的切分片段會被指派各自對應的工作線程166,作為讀取本地目錄161的數據文件。工作線程166的實現可以由不同的程序語言所實現。在本申請中并不局限程序語言的種類,例如,JAVA語言或ASP語言。實際上,隊列監控模塊165先對本地目錄161的數據文件進行切分的估算藉以得到所述數據文件的每一個應要被切分的位置。隊列監控模塊165接獲切分片段后會根據切分片段的長度,并分派給工作線程166所屬的部分數據文件。工作線程166在把所述部分的數據文件寫入分散式文件裝置150中。
[0046]—般而言,第一心跳服務器211或第二心跳服務器212在超過一預設的期間后未收到心跳要求,心跳服務器120會向發出報警信息。但工作線程166在寫入的過程中發生錯誤時。工作線程166會發送報警信息給第一心跳服務器211與第二心跳服務器212。所述工作線程I66同時間也會通知其他工作線程166,要求其他工作線程166停止對分散式文件裝置150的寫入處理,藉以避免分散式文件裝置150中的數據完整性。
[0047]在此將前述各組件的運作方式以下述步驟表示,請配合圖4所示:
[0048]步驟S410:由掃描模塊偵測本地目錄的數據文件的異動;
[0049]步驟S420:若本地目錄新增數據文件或修改數據文件,控制模塊創建數據隊列,并指派數據隊列記錄數據文件的路徑名稱;
[0050]步驟S430:由上傳模塊偵測本地目錄所異動的數據文件的文件種類;
[0051]步驟S450:指派隊列監控模塊;
[0052]步驟S460:由隊列監控模塊對數據隊列進行切分,并決定數據文件的切分片段的
數量;
[0053]步驟S470:若本地目錄的數據文件被刪除,控制模塊刪除對應數據文件的數據隊列;
[0054]步驟S480:配置多個工作線程,工作線程從數據隊列中取得數據文件,工作線程根據切分片段的數量對數據文件進行切分;以及
[0055]步驟S490:工作線程讀取切分片段,并依序寫入分散式文件裝置中。
[0056]本地目錄161除了接收來自于客戶端的數據文件外,本地目錄161中的數據文件也可能會被修改、搬移或刪除等異動。掃描模塊163會實時的偵測本地目錄161中的數據文件是否有異動。當數據文件異動時,掃描模塊163會向上傳模塊162發出數據文件異動的訊息。
[0057]當有新的數據文件存入本地目錄161時,掃描模塊163會令控制模塊建立新的數據隊列,并將數據文件存入新的數據隊列。一般而言,數據隊列的數量限制取決于服務器的運行能力。但若是有過多的數據文件新創,可能會發生數據隊列堆疊的問題。一旦有過量的數據文件被創建,則掃描模塊163會透過控制模塊164向心跳服務器120發出心跳要求。
[0058]當現有的數據文件的內容有所異動時,掃描模塊163會將變更后的數據文件再次存入數據隊列中。若是本地目錄161刪除數據文件時,則掃描模塊163會要求控制模塊164將對應的數據文件的數據隊列進行刪除。
[0059]上傳模塊162偵測本地目錄161所異動的數據文件的文件種類。上傳模塊162根據文件種類是否存在,上傳模塊162要求控制模塊164創建新的數據隊列或把數據文件放入對應的數據隊列中。上傳模塊162接獲數據文件異動的訊息后,上傳模塊162會重新取得數據文件的路徑名稱并將路徑名稱儲存至數據隊列中。對于不同的數據文件會設置唯一的數據隊列。當本地目錄161儲存大量的數據文件時,控制模塊164中的數據隊列的數量也會快速的成長。
[0060]由于過多的數據隊列會造成過量的堆疊,會使得后續的工作線程166無法即時的處理完所述數據文件。因此本申請會監控數據隊列的服務量是否超過設定的壓力閥值。當服務量超過壓力閥值時,控制模塊164會向第一心跳服務器211或第二心跳服務器212發出報警要求。
[0061]接著,根據切分片段的數量產生相應的工作線程166。每一個工作線程166根據各自的切分片段的起始位置與偏移量取得數據文件的部分片段,并將取得的片段寫入分散式文件裝置150中。在寫入的過程中可能會發生錯誤,所以本申請當偵測到寫入的切分片段的內容有誤時,會向第一心跳服務器211或第二心跳服務器212發出報警要求。
[0062]還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者系統不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者系統所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者系統中還存在另外的相同要素。
[0063]本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0064]以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。
【權利要求】
1.一種服務器中的數據隊列的更新方法,其特征在于,包括以下步驟: 服務器監測所存儲的所有數據文件是否有所異動; 若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列;以及 若監測到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。
2.如權利要求1所述的服務器中的數據隊列的更新方法,其特征在于,將所述數據文件存入相應的數據隊列的步驟進一步包括:將數據文件的路徑資訊存入對應的數據隊列中。
3.如權利要求1所述的服務器中的數據隊列的更新方法,其特征在于,服務器通過定時查詢的方式或者監控文件操作指令的方式監測所存儲的所有數據文件是否有所異動。
4.如權利要求1所述的服務器中的數據隊列的更新方法,其特征在于, 在所述若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列之后,還包括:創建監控該數據隊列的工作線程,用于監控該數據隊列中的數據文件的異動; 在所述監測到任一存儲的所述數據文件被刪除時,所述方法還包括:刪除所述數據文件對應的所述數據隊列的工作線程。
5.一種服務器中的數據隊列的更新系統,其特征在于,包括: 內存模塊,用于存儲數據文件和數據隊列; 監聽模塊,用于監測服務器中所存儲的所有數據文件是否有所異動; 隊列管理模塊,連接于所述監聽模塊,所述隊列管理模塊用于若所述監聽模塊監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列;以及, 若所述監聽模塊監測到任一存儲的所述數據文件被刪除時,則刪除對應所述數據文件的所述數據隊列。
6.如權利要求5所述的服務器中的數據隊列的更新系統,其特征在于,將所述數據文件存入相應的數據隊列時,還包括:將數據文件的路徑資訊存入對應的數據隊列中。
7.如權利要求5所述的服務器中的數據隊列的更新系統,其特征在于,所述監聽模塊通過定時查詢的方式或者監控文件操作指令的方式監測所存儲的所有數據文件是否有所異動。
8.如權利要求5所述的服務器中的數據隊列的更新系統,其特征在于,所述系統進一步包括:隊列監控模塊, 所述隊列監控模塊,用于在所述若監測到有新增的數據文件,則創建數據隊列,并將所述數據文件存入相應的數據隊列之后,創建監控數據隊列的工作線程,所述工作線程用于監控該數據隊列中的數據文件的異動; 所述隊列監控模塊,還用于在所述監測到任一存儲的所述數據文件被刪除時,刪除所述數據文件對應的所述數據隊列的工作線程。
【文檔編號】H04L29/08GK103701719SQ201310742758
【公開日】2014年4月2日 申請日期:2013年12月27日 優先權日:2013年12月27日
【發明者】于鳳東, 張磊, 馬一鳴 申請人:樂視網信息技術(北京)股份有限公司