分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置的制造方法
【專利摘要】本發(fā)明提供一種分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置。該裝置包括:監(jiān)控模塊、隊列管理模塊和位于每一數(shù)據(jù)中心的調(diào)度模塊。監(jiān)控模塊用于監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將文件操作請求發(fā)送到隊列管理模塊。隊列管理模塊用于:接收文件操作請求,為文件操作請求分配一標識并將文件操作請求加入處理隊列中,將文件操作請求發(fā)送到各個數(shù)據(jù)中心。調(diào)度模塊用于在確定所有數(shù)據(jù)中心都收到文件操作請求后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。從而實現(xiàn)了跨域多副本文件的同步,解決了混合云環(huán)境下跨域文件訪問的時延與流量消耗問題。
【專利說明】
分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置。
【背景技術(shù)】
[0002]云計算可以劃分為公有云、私有云和混合云,其中公有云由企業(yè)或組織運營,通過互聯(lián)網(wǎng)向用戶提供計算或存儲資源,使用其服務(wù)的用戶按需付費,無需購買和維護軟硬件等基礎(chǔ)設(shè)施。私有云則將云計算服務(wù)架設(shè)在企業(yè)或組織內(nèi)部,不再受到公用網(wǎng)絡(luò)上安全威脅和網(wǎng)絡(luò)帶寬的影響,其基礎(chǔ)架構(gòu)可以進行調(diào)整和優(yōu)化以符合企業(yè)或組織的需求,缺點是需要付出額外的成本進行維護和管理?;旌显瓢压性婆c私有云結(jié)合在一起,同時解決了二者的不足,是近年來云計算的主要發(fā)展方向與發(fā)展模式。隨著云計算的飛速發(fā)展,信息化水平的不斷提高,應(yīng)用程序需要存儲與計算萬億字節(jié)(PB)甚至千萬億字節(jié)(TB)級別的數(shù)據(jù),即使增加更多的節(jié)點,更多的存儲設(shè)備以及處理器,應(yīng)用程序也不能提供足夠快的計算能力。
[0003]因此,為解決存儲容量的問題,云計算采用分布式存儲的方式來存儲數(shù)據(jù),因而出現(xiàn)了多種分布式文件系統(tǒng),分布式存儲的目標是利用云環(huán)境中多臺數(shù)據(jù)塊存儲服務(wù)器的存儲資源來滿足單臺服務(wù)器所不能滿足的存儲需求,存儲資源能夠被抽象表示和統(tǒng)一管理,并且能夠保證數(shù)據(jù)讀寫操作的安全性、可靠性等多方面要求?;旌显骗h(huán)境下隨著應(yīng)用程序規(guī)模的不斷擴張,對于存儲的高可用性要求更為嚴格。目前普遍采用的方法是同步備份多份同樣的數(shù)據(jù),這些數(shù)據(jù)稱為多副本文件,將多副本文件分布到多個地域的多個數(shù)據(jù)中心,并存放在不同的服務(wù)器上,客戶端在訪問文件時,系統(tǒng)選取距離客戶比較近的一份發(fā)送給客戶,從而達到高可用性。
[0004]但是,在混合云環(huán)境下,私有云中的應(yīng)用程序在面臨著計算資源短缺的情況時,會動態(tài)擴展到公有云,擴展到公有云的應(yīng)用程序還要繼續(xù)訪問私有云數(shù)據(jù)中心的文件數(shù)據(jù),這樣會存在2個問題:I)互聯(lián)網(wǎng)中的流量資源稀缺,公有云中的應(yīng)用程序頻繁訪問私有云數(shù)據(jù)中心的文件,會消耗大量的流量資源,可能占據(jù)大部分的帶寬資源。2)互聯(lián)網(wǎng)中的時延很大,尤其是跨域訪問,公有云中的應(yīng)用程序每訪問一次私有云就會產(chǎn)生很大的時延,在頻繁的訪問私有云的文件時必然會產(chǎn)生較大的時延,嚴重影響應(yīng)用程序的處理速度。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置,以解決混合云環(huán)境下跨域文件訪問的時延與流量消耗問題。
[0006]第一方面,本發(fā)明提供一種分布式文件系統(tǒng)的跨域多副本文件同步裝置,包括:
[0007]監(jiān)控模塊、隊列管理模塊和位于每一數(shù)據(jù)中心的調(diào)度模塊;
[0008]所述監(jiān)控模塊用于監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將所述文件操作請求發(fā)送到所述隊列管理模塊;
[0009]所述隊列管理模塊用于:接收所述文件操作請求,為所述文件操作請求分配一標識并將所述文件操作請求加入處理隊列中,將所述文件操作請求發(fā)送到各個數(shù)據(jù)中心;
[0010]所述調(diào)度模塊用于在確定所有數(shù)據(jù)中心都收到所述文件操作請求后,查詢所述處理隊列,若查詢到所述文件操作請求則調(diào)度所述文件操作請求。
[0011]進一步地,所述調(diào)度模塊還用于:
[0012]在調(diào)度所述文件操作請求執(zhí)行完成后在所述處理隊列中所述文件操作請求之后寫入一標志位;
[0013]所述隊列管理模塊還用于:根據(jù)所述文件操作請求之后的標志位的個數(shù)確定所述文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,則從所述處理隊列中刪除所述文件操作請求。
[0014]進一步地,所述監(jiān)控模塊還用于:
[0015]獲取到所述文件操作請求之后,根據(jù)所述文件操作請求對應(yīng)的文件的路徑確定所述文件的類型;
[0016]若確定所述文件是第一類型文件夾中的子文件時,截獲所述文件操作請求;
[0017]所述隊列管理模塊還用于:
[0018]確定所述文件操作請求在數(shù)據(jù)中心之間執(zhí)行完成之后,向所述監(jiān)控模塊發(fā)送通知消息;
[0019]所述監(jiān)控模塊還用于:接收到所述通知消息后,將截獲的所述文件操作請求發(fā)送至所述元數(shù)據(jù)管理器,以使所述元數(shù)據(jù)管理器執(zhí)行所述文件操作請求;
[0020]若確定所述文件是第二類型文件夾中的子文件時,不截獲所述文件操作請求。
[0021]進一步地,所述調(diào)度模塊具體用于:
[0022]從所述隊列管理模塊獲取所述文件操作請求,通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的元數(shù)據(jù)管理器執(zhí)行所述文件操作請求;或者,
[0023]通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的數(shù)據(jù)塊存儲服務(wù)器執(zhí)行所述文件操作請求。
[0024]進一步地,還包括:
[0025]日志模塊,所述日志模塊用于記錄文件的被操作軌跡。
[0026]第二方面,本發(fā)明提供一種分布式文件系統(tǒng)的跨域多副本文件同步方法,包括:
[0027]監(jiān)控模塊監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將所述文件操作請求發(fā)送到隊列管理模塊;
[0028]所述隊列管理模塊接收所述文件操作請求,為所述文件操作請求分配一標識并將所述文件操作請求加入處理隊列中,將所述文件操作請求發(fā)送到各個數(shù)據(jù)中心;
[0029]調(diào)度模塊在確定所有數(shù)據(jù)中心都收到所述文件操作請求后,查詢所述處理隊列,若查詢到所述文件操作請求則調(diào)度所述文件操作請求。
[0030]進一步地,所述調(diào)度模塊調(diào)度所述文件操作請求之后,還包括:
[0031]在調(diào)度所述文件操作請求執(zhí)行完成后在所述處理隊列中所述文件操作請求之后寫入一標志位;
[0032]所述隊列管理模塊根據(jù)所述文件操作請求之后的標志位的個數(shù)確定所述文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,則從所述處理隊列中刪除所述文件操作請求。
[0033]進一步地,所述監(jiān)控模塊獲取到所述文件操作請求之后,還包括:
[0034]根據(jù)所述文件操作請求對應(yīng)的文件的路徑確定所述文件的類型;
[0035]若確定所述文件是第一類型文件夾中的子文件時,截獲所述文件操作請求;
[0036]所述隊列管理模塊確定所述文件操作請求在數(shù)據(jù)中心之間執(zhí)行完成之后,還包括:向所述監(jiān)控模塊發(fā)送通知消息;
[0037]所述監(jiān)控模塊接收到所述通知消息后,將截獲的所述文件操作請求發(fā)送至所述元數(shù)據(jù)管理器,以使所述元數(shù)據(jù)管理器執(zhí)行所述文件操作請求;
[0038]若確定所述文件是第二類型文件夾中的子文件時,不截獲所述文件操作請求。
[0039]進一步地,所述調(diào)度模塊調(diào)度所述文件操作請求,包括:
[0040]從所述隊列管理模塊獲取所述文件操作請求,通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的元數(shù)據(jù)管理器執(zhí)行所述文件操作請求;或者,
[0041]通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的數(shù)據(jù)塊存儲服務(wù)器執(zhí)行所述文件操作請求。
[0042]進一步地,還包括:
[0043]日志模塊記錄文件的被操作軌跡。
[0044]本發(fā)明提供的分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置,通過監(jiān)控模塊監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將文件操作請求發(fā)送到隊列管理模塊,元數(shù)據(jù)管理器接收到文件操作請求后直接執(zhí)行,不用等待其他數(shù)據(jù)中心同步該文件操作請求,由隊列管理模塊在接收到文件操作請求后,將文件操作請求加入處理隊列中,將文件操作請求發(fā)送到各個數(shù)據(jù)中心進行同步,調(diào)度模塊確定同步成功后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。分布在各個數(shù)據(jù)中心的文件副本最終會保持一致,從而實現(xiàn)了跨域多副本文件的同步,充分考慮了混合云的動態(tài)性、跨域性等固有特征,避免采用現(xiàn)有的方法導(dǎo)致數(shù)據(jù)訪問的時延增加,網(wǎng)絡(luò)流量增加等問題,同時加快應(yīng)用程序的處理速度,使用戶有更好的體驗。
【附圖說明】
[0045]為了更清楚地說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0046]圖1為一種分布式文件系統(tǒng)不意圖;
[0047]圖2為本發(fā)明分布式文件系統(tǒng)的跨域多副本文件同步裝置實施例一的結(jié)構(gòu)示意圖;
[0048]圖3為本發(fā)明分布式文件系統(tǒng)的跨域多副本文件同步裝置實施例二的結(jié)構(gòu)示意圖;
[0049]圖4為本發(fā)明布式文件系統(tǒng)的多副本文件同步方法實施例一的流程圖;
[0050]圖5為本發(fā)明布式文件系統(tǒng)的多副本文件同步方法實施例二的流程圖。
【具體實施方式】
[0051 ]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明中的附圖,對本發(fā)明中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0052]本發(fā)明提供一種分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置,可實現(xiàn)存儲在多個地域的多個數(shù)據(jù)中心的數(shù)據(jù)(也即多副本文件)同步,由于多副本文件實現(xiàn)了同步,因此可以解決跨域文件訪問的時延與流量消耗問題,下面結(jié)合附圖詳細說明本發(fā)明提供的分布式文件系統(tǒng)的跨域多副本文件同步方法及裝置。
[0053]首先,以圖1所示的一種分布式文件系統(tǒng)為例,圖1為一種分布式文件系統(tǒng)示意圖,如圖1所示,該系統(tǒng)下有三個不同域的數(shù)據(jù)中心,每一數(shù)據(jù)中心有多個客戶端、一個元數(shù)據(jù)管理器和多個數(shù)據(jù)存儲服務(wù)器,該分布式文件系統(tǒng)中,每一數(shù)據(jù)中心都存儲相同的文件,其中一個數(shù)據(jù)中心的客戶端接收文件操作請求,如對文件修改請求或?qū)懻埱?,在該?shù)據(jù)中心對文件進行了修改或?qū)懖僮骱螅渌膬蓚€數(shù)據(jù)中心的文件也要進行同步修改或?qū)懖僮?,下面結(jié)合附圖詳細說明本發(fā)明的多副本文件同步方法及裝置。圖1所示的分布式文件系統(tǒng)只是示例,本發(fā)明的多副本文件同步方法及裝置也可以用于其它的分布式文件系統(tǒng)的多副本文件的同步。
[0054]圖2為本發(fā)明分布式文件系統(tǒng)的跨域多副本文件同步裝置實施例一的結(jié)構(gòu)示意圖,如圖2所示,本實施例的裝置可以包括:監(jiān)控模塊11、隊列管理模塊12和位于每一數(shù)據(jù)中心的調(diào)度模塊13,其中,每一數(shù)據(jù)中心都有一監(jiān)控模塊11,監(jiān)控模塊11用于監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將文件操作請求發(fā)送到隊列管理模塊12。具體地說,圖2所示的數(shù)據(jù)存儲層包括元數(shù)據(jù)和數(shù)據(jù)的存儲,監(jiān)控模塊11用于監(jiān)控客戶端對文件元數(shù)據(jù)信息的修改,如文件所有者,文件大小等。還用于監(jiān)控客戶端的寫操作,客戶端與分布式文件系統(tǒng)(MooseFS,簡稱:MFS)的元數(shù)據(jù)管理器通信來獲取文件的信息,客戶端需要修改文件的屬性,或者寫文件的時候會向元數(shù)據(jù)管理器發(fā)出文件操作請求,監(jiān)控模塊11會監(jiān)控并獲取該文件操作請求。
[0055]隊列管理模塊12用于:接收文件操作請求,為文件操作請求分配一標識并將文件操作請求加入處理隊列中,將文件操作請求發(fā)送到各個數(shù)據(jù)中心,具體可以是通過Paxos協(xié)議將文件操作請求發(fā)送到各個數(shù)據(jù)中心,其中的Paxos協(xié)議用于解決多個節(jié)點之間的一致性問題,多個節(jié)點之間通過操作日志同步數(shù)據(jù),如果只有一個節(jié)點為主節(jié)點,那么,很容易確保多個節(jié)點之間操作日志的一致性。具體地,是隊列管理模塊12中的同步單元使用Paxos協(xié)議把文件操作請求同步到各個數(shù)據(jù)中心。Paxos協(xié)議保證了各個數(shù)據(jù)中心的處理隊列中的請求保持一致。具體來說,隊列管理模塊12位于同步服務(wù)層,隊列管理模塊12是一個全局有序的序列,用于保證文件修改的一致性??蛻舳藢⑽募僮髡埱蟀l(fā)送給元數(shù)據(jù)管理器之后等待返回結(jié)果,并呈現(xiàn)給用戶。
[0056]當某一數(shù)據(jù)中心發(fā)生對文件的操作如修改或?qū)懖僮鳎淳褪潜緮?shù)據(jù)中心的客戶端向元數(shù)據(jù)管理器發(fā)送了文件操作請求,元數(shù)據(jù)管理器直接執(zhí)行該文件操作請求,不用等待其他數(shù)據(jù)中心同步該文件請求,同時監(jiān)控模塊11將該文件請求發(fā)送到隊列管理模塊12,由隊列管理模塊12進行同步。
[0057]其中,文件操作請求可以為讀請求、修改請求或?qū)懻埱?,讀請求不需要同步,因此,監(jiān)控模塊11還用于:獲取到文件操作請求之后,確定文件操作請求為修改請求或?qū)懻埱?。監(jiān)控模塊11確定文件操作請求為修改請求或?qū)懻埱蟛虐l(fā)送到隊列管理模塊。
[0058]調(diào)度模塊13用于在確定所有數(shù)據(jù)中心都收到文件操作請求后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。
[0059]進一步地,調(diào)度模塊13還用于在調(diào)度文件操作請求執(zhí)行完成后在處理隊列中文件操作請求之后寫入一標志位。隊列管理模塊12還用于:根據(jù)文件操作請求之后的標志位的個數(shù)確定文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,則從處理隊列中刪除文件操作請求。
[0060]進一步地,調(diào)度模塊13具體用于:從隊列管理模塊12獲取文件操作請求,通知調(diào)度模塊13對應(yīng)的數(shù)據(jù)中心的元數(shù)據(jù)管理器執(zhí)行文件操作請求;或者,通知調(diào)度模塊13對應(yīng)的數(shù)據(jù)中心的數(shù)據(jù)塊存儲服務(wù)器執(zhí)行文件操作請求。具體地,調(diào)度模塊13確定所有數(shù)據(jù)中心都收到文件操作請求后,調(diào)度模塊13從處理隊列獲取新加入隊列的文件操作請求,并與元數(shù)據(jù)管理器通信修改元數(shù)據(jù)信息,或者根據(jù)元數(shù)據(jù)管理器返回的結(jié)果獲取數(shù)據(jù)所在的數(shù)據(jù)塊存儲服務(wù)器,與數(shù)據(jù)塊存儲服務(wù)器通信并修改文件數(shù)據(jù)。因為處理隊列是全局有序的,每個調(diào)度器根據(jù)處理隊列中的文件操作請求的先后順序直接執(zhí)行請求,不需要擔心發(fā)生死鎖的情況。
[0061]本實施例提供的分布式文件系統(tǒng)的跨域多副本文件同步裝置,通過監(jiān)控模塊監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將文件操作請求發(fā)送到隊列管理模塊,元數(shù)據(jù)管理器接收到文件操作請求后直接執(zhí)行,不用等待其他數(shù)據(jù)中心同步該文件操作請求,由隊列管理模塊在接收到文件操作請求后,將文件操作請求加入處理隊列中,將文件操作請求發(fā)送到各個數(shù)據(jù)中心進行同步,調(diào)度模塊確定同步成功后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。分布在各個數(shù)據(jù)中心的文件副本最終會保持一致,從而實現(xiàn)了跨域多副本文件的同步,充分考慮了混合云的動態(tài)性、跨域性等固有特征,避免采用現(xiàn)有的方法導(dǎo)致數(shù)據(jù)訪問的時延增加,網(wǎng)絡(luò)流量增加等問題,同時加快應(yīng)用程序的處理速度,使用戶有更好的體驗。
[0062]可選的,在上述實施例中,監(jiān)控模塊11還用于:獲取到文件操作請求后,根據(jù)文件操作請求對應(yīng)的文件的路徑確定文件的類型。若確定文件是第一類型文件夾中的子文件時,截獲文件操作請求。隊列管理模塊12還用于:確定文件操作請求在數(shù)據(jù)中心之間執(zhí)行完成之后,向監(jiān)控模塊發(fā)送通知消息。監(jiān)控模塊11還用于:接收到通知消息后,將截獲的文件操作請求發(fā)送至元數(shù)據(jù)管理器,以使元數(shù)據(jù)管理器執(zhí)行文件操作請求。具體來說,該處理過程實現(xiàn)了強一致性,監(jiān)控模塊確定文件支持強一致性時,先截獲客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,確認該文件操作請求在各個數(shù)據(jù)中心同步完成后才將截獲的文件操作請求發(fā)送給元數(shù)據(jù)管理器執(zhí)行,即就是,文件操作請求只有在各個數(shù)據(jù)中心同步完成后本數(shù)據(jù)中心的元數(shù)據(jù)管理器才能執(zhí)行。
[0063]若確定文件是第二類型文件夾中的子文件時,不截獲文件操作請求。執(zhí)行圖2所示的處理過程,該過程實現(xiàn)的是弱一致性,客戶端只需要把文件操作請求通過監(jiān)控模塊11提交到隊列管理模塊12,由隊列管理模塊12完成各個數(shù)據(jù)中心的同步,客戶端所在的數(shù)據(jù)中心的元數(shù)據(jù)管理器不需要確認所有數(shù)據(jù)中心同步完成,直接執(zhí)行文件操作請求,相對于強一致性,響應(yīng)時間會更短,且對于數(shù)據(jù)一致性要求不高的應(yīng)用有很好的適應(yīng)性,可避免專用網(wǎng)絡(luò)帶寬帶來的經(jīng)濟壓力和強一致性帶來的時延。
[0064]其中,第一類型文件夾中的子文件支持強一致性,第二類型文件夾中的子文件支持弱一致性,監(jiān)控模塊11獲取到文件操作請求后,確定文件是第一類型文件夾中的子文件,則按照強一致性的處理流程執(zhí)行,確定文件是第二類型文件夾中的子文件時,按照弱一致性的處理流程執(zhí)行。因此可根據(jù)文件的類型實現(xiàn)強一致性或弱一致性的同步,實際使用時可根據(jù)不同應(yīng)用的需求設(shè)置不同文件夾及其子文件的一致性模型。
[0065]圖3為本發(fā)明分布式文件系統(tǒng)的跨域多副本文件同步裝置實施例二的結(jié)構(gòu)示意圖,如圖3所示,本實施例的裝置在上述實施例的基礎(chǔ)上,進一步地,還可以包括:日志模塊14,日志模塊14用于記錄文件的被操作軌跡,有了日志模塊14,在發(fā)生錯誤的時候根據(jù)日志模塊的記錄跟蹤分析錯誤,審計系統(tǒng)的運行流程,根據(jù)被操作軌跡重新執(zhí)行文件操作使系統(tǒng)恢復(fù)正常。
[0066]圖4為本發(fā)明布式文件系統(tǒng)的多副本文件同步方法實施例一的流程圖,如圖4所示,本實施例的方法可以包括:
[0067]S101、監(jiān)控模塊監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將文件操作請求發(fā)送到隊列管理模塊。
[0068]具體來說,每一數(shù)據(jù)中心都有一監(jiān)控模塊和調(diào)度模塊,數(shù)據(jù)的存儲包括元數(shù)據(jù)和數(shù)據(jù)的存儲,監(jiān)控模塊監(jiān)控客戶端對文件元數(shù)據(jù)信息的修改,如文件所有者,文件大小等。還監(jiān)控客戶端的寫操作,客戶端與分布式文件系統(tǒng)通信來獲取文件的信息,客戶端需要修改文件的屬性,或者寫文件的時候會向元數(shù)據(jù)管理器發(fā)出文件操作請求,監(jiān)控模塊會截獲獲取該文件操作請求。
[0069]具體地,監(jiān)控模塊的工作流程為:監(jiān)控客戶端發(fā)出的文件操作請求,若監(jiān)控到文件操作請求,其中,文件操作請求可以為讀請求、修改請求或?qū)懻埱?,讀請求不需要同步,因此,監(jiān)控模塊確定文件操作請求是否為修改請求或?qū)懻埱蠛?,若是則將文件操作請求發(fā)送到隊列管理模塊,并等待下一個文件操作請求。若否則繼續(xù)監(jiān)控。
[0070]S102、隊列管理模塊接收文件操作請求,為文件操作請求分配一標識并將文件操作請求加入處理隊列中,將文件操作請求發(fā)送到各個數(shù)據(jù)中心。
[0071]具體來說,隊列管理模塊位于同步服務(wù)層,隊列管理模塊是一個全局有序的序列,用于保證文件修改的一致性??蛻舳藢⑽募僮髡埱蟀l(fā)送給元數(shù)據(jù)管理器之后等待返回結(jié)果,并呈現(xiàn)給用戶。隊列管理模塊在將文件操作請求加入處理隊列之前分配一標識,標識該請求是哪個數(shù)據(jù)中心的,隊列管理模塊具體可以是通過Paxos協(xié)議將文件操作請求發(fā)送到各個數(shù)據(jù)中心,確認其他數(shù)據(jù)中心同步成功文件操作請求,并完成文件操作請求后刪除該文件操作請求。其他的數(shù)據(jù)中心完成文件操作請求之后,調(diào)度模塊會在處理隊列中該文件操作請求后寫入一標志位,標識文件操作請求在該數(shù)據(jù)中心完成,隊列管理模塊根據(jù)文件操作請求之后的標志位的個數(shù)確定文件操作請求在其他數(shù)據(jù)中心是否執(zhí)行完成。
[0072]當某一數(shù)據(jù)中心發(fā)生對文件的操作如修改或?qū)懖僮鳎淳褪潜緮?shù)據(jù)中心的客戶端向元數(shù)據(jù)管理器發(fā)送了文件操作請求,元數(shù)據(jù)管理器直接執(zhí)行該文件操作請求,不用等待其他數(shù)據(jù)中心同步該文件請求,同時監(jiān)控模塊將該文件請求發(fā)送到隊列管理模塊,由隊列管理模塊進行同步。
[0073]其中,文件操作請求可以為讀請求、修改請求或?qū)懻埱?,讀請求不需要同步,因此,監(jiān)控模塊獲取到文件操作請求之后,還要確定文件操作請求為修改請求或?qū)懻埱?。監(jiān)控模塊確定文件操作請求為修改請求或?qū)懻埱蟛虐l(fā)送到隊列管理模塊。
[0074]S103、調(diào)度模塊在確定所有數(shù)據(jù)中心都收到文件操作請求后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。
[0075]具體地,調(diào)度模塊通過Paxos協(xié)議確定所有數(shù)據(jù)中心都收到文件操作請求,調(diào)度模塊從隊列管理模塊獲取文件操作請求,通知調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的元數(shù)據(jù)管理器執(zhí)行文件操作請求;或者,通知調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的數(shù)據(jù)塊存儲服務(wù)器執(zhí)行文件操作請求。舉例來說,調(diào)度模塊確定所有數(shù)據(jù)中心都收到文件操作請求后,也即確認同步成功后,調(diào)度模塊從處理隊列獲取新加入隊列的文件操作請求,若文件操作請求不是本數(shù)據(jù)中心發(fā)出的,調(diào)度器與元數(shù)據(jù)管理器通信修改元數(shù)據(jù)信息,或者根據(jù)元數(shù)據(jù)管理器返回的結(jié)果獲取數(shù)據(jù)所在的數(shù)據(jù)塊存儲服務(wù)器,與數(shù)據(jù)塊存儲服務(wù)器通信并修改文件數(shù)據(jù)。因為處理隊列是全局有序的,每個調(diào)度器根據(jù)處理隊列中的文件操作請求的先后順序直接執(zhí)行請求,不需要擔心發(fā)生死鎖的情況。
[0076]本實施例提供的分布式文件系統(tǒng)的跨域多副本文件同步方法,通過監(jiān)控模塊監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將文件操作請求發(fā)送到隊列管理模塊,元數(shù)據(jù)管理器接收到文件操作請求后直接執(zhí)行,不用等待其他數(shù)據(jù)中心同步該文件操作請求,由隊列管理模塊在接收到文件操作請求后,將文件操作請求加入處理隊列中,將文件操作請求發(fā)送到各個數(shù)據(jù)中心進行同步,調(diào)度模塊確定同步成功后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。分布在各個數(shù)據(jù)中心的文件副本最終會保持一致,從而實現(xiàn)了跨域多副本文件的同步,充分考慮了混合云的動態(tài)性、跨域性等固有特征,避免采用現(xiàn)有的方法導(dǎo)致數(shù)據(jù)訪問的時延增加,網(wǎng)絡(luò)流量增加等問題,同時加快應(yīng)用程序的處理速度,使用戶有更好的體驗。
[0077]圖5為本發(fā)明布式文件系統(tǒng)的多副本文件同步方法實施例二的流程圖,如圖5所示,本實施例的方法可以包括:
[0078]S201、客戶端向元數(shù)據(jù)管理器發(fā)送文件操作請求時,與元數(shù)據(jù)管理器位于同一數(shù)據(jù)中心的監(jiān)控模塊監(jiān)控并獲取文件操作請求。
[0079]S202、監(jiān)控模塊根據(jù)文件的路徑確定文件的類型,若確定文件是第一類型文件夾中的子文件時,執(zhí)行S203。若確定文件是第二類型文件夾中的子文件時,執(zhí)行S209。
[0080]S203、監(jiān)控模塊截獲文件操作請求,將文件操作請求發(fā)送到隊列管理模塊。
[0081]S204、隊列管理模塊接收文件操作請求,為文件操作請求分配一標識并將文件操作請求加入處理隊列中,通過Paxos協(xié)議將文件操作請求發(fā)送到各個數(shù)據(jù)中心。
[0082]S205、調(diào)度模塊在確定所有數(shù)據(jù)中心都收到文件操作請求后,查詢處理隊列,若查詢到文件操作請求則調(diào)度文件操作請求。
[0083]S206、調(diào)度模塊在調(diào)度文件操作請求執(zhí)行完成后在處理隊列中文件操作請求之后寫入一標志位。
[0084]S207、隊列管理模塊根據(jù)文件操作請求之后的標志位的個數(shù)確定文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,則向監(jiān)控模塊發(fā)送通知消息,從處理隊列中刪除文件操作請求。
[0085]S208、監(jiān)控模塊接收到通知消息后,將截獲的文件操作請求發(fā)送至元數(shù)據(jù)管理器,以使元數(shù)據(jù)管理器執(zhí)行文件操作請求。
[0086]具體來說,S203?S208的處理過程實現(xiàn)了強一致性,監(jiān)控模塊確定文件支持強一致性時,先截獲客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,監(jiān)控模塊確認該文件操作請求在各個數(shù)據(jù)中心同步完成后才將截獲的文件操作請求發(fā)送給元數(shù)據(jù)管理器執(zhí)行,即就是,文件操作請求只有在各個數(shù)據(jù)中心同步完成后本數(shù)據(jù)中心的元數(shù)據(jù)管理器才能執(zhí)行。
[0087]S209、不截獲文件操作請求,將文件操作請求發(fā)送到隊列管理模塊。
[0088]接著執(zhí)行與S204?S206相同的過程,S206之后,執(zhí)行S210。
[0089]S210、隊列管理模塊根據(jù)文件操作請求之后的標志位的個數(shù)確定文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,從處理隊列中刪除文件操作請求。
[0090]具體來說,S209?S204?S206?S210的處理過程實現(xiàn)的是弱一致性,客戶端只需要把文件操作請求通過監(jiān)控模塊提交到隊列管理模塊,由隊列管理模塊完成各個數(shù)據(jù)中心的同步,客戶端所在的數(shù)據(jù)中心的元數(shù)據(jù)管理器不需要確認所有數(shù)據(jù)中心同步完成,直接執(zhí)行文件操作請求,相對于強一致性,響應(yīng)時間會更短,且對于數(shù)據(jù)一致性要求不高的應(yīng)用有很好的適應(yīng)性,可避免專用網(wǎng)絡(luò)帶寬帶來的經(jīng)濟壓力和強一致性帶來的時延。
[0091]其中,第一類型文件夾中的子文件支持強一致性,第二類型文件夾中的子文件支持弱一致性,隊列管理模塊接收文件操作請求后,確定文件是第一類型文件夾中的子文件,則執(zhí)行S203,確定文件是第二類型文件夾中的子文件時,執(zhí)行S209。因此可選擇性地根據(jù)文件的類型實現(xiàn)強一致性或弱一致性的同步,實際使用時可根據(jù)不同應(yīng)用的需求設(shè)置不同文件夾及其子文件的一致性模型。
[0092]在圖4或圖5所示實施例中,進一步地,還包括:
[0093]日志模塊記錄文件的被操作軌跡,有了日志模塊,在發(fā)生錯誤的時候根據(jù)日志模塊的記錄跟蹤分析錯誤,審計系統(tǒng)的運行流程,根據(jù)被操作軌跡重新執(zhí)行文件操作使系統(tǒng)恢復(fù)正常。
[0094]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0095]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【主權(quán)項】
1.一種分布式文件系統(tǒng)的跨域多副本文件同步裝置,其特征在于,包括: 監(jiān)控模塊、隊列管理模塊和位于每一數(shù)據(jù)中心的調(diào)度模塊; 所述監(jiān)控模塊用于監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將所述文件操作請求發(fā)送到所述隊列管理模塊; 所述隊列管理模塊用于:接收所述文件操作請求,為所述文件操作請求分配一標識并將所述文件操作請求加入處理隊列中,將所述文件操作請求發(fā)送到各個數(shù)據(jù)中心; 所述調(diào)度模塊用于在確定所有數(shù)據(jù)中心都收到所述文件操作請求后,查詢所述處理隊列,若查詢到所述文件操作請求則調(diào)度所述文件操作請求。2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述調(diào)度模塊還用于: 在調(diào)度所述文件操作請求執(zhí)行完成后在所述處理隊列中所述文件操作請求之后寫入一標志位; 所述隊列管理模塊還用于:根據(jù)所述文件操作請求之后的標志位的個數(shù)確定所述文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,則從所述處理隊列中刪除所述文件操作請求。3.根據(jù)權(quán)利要求1或2所述的裝置,其特征在于,所述監(jiān)控模塊還用于: 獲取到所述文件操作請求之后,根據(jù)所述文件操作請求對應(yīng)的文件的路徑確定所述文件的類型; 若確定所述文件是第一類型文件夾中的子文件時,截獲所述文件操作請求; 所述隊列管理模塊還用于: 確定所述文件操作請求在數(shù)據(jù)中心之間執(zhí)行完成之后,向所述監(jiān)控模塊發(fā)送通知消息; 所述監(jiān)控模塊還用于:接收到所述通知消息后,將截獲的所述文件操作請求發(fā)送至所述元數(shù)據(jù)管理器,以使所述元數(shù)據(jù)管理器執(zhí)行所述文件操作請求; 若確定所述文件是第二類型文件夾中的子文件時,不截獲所述文件操作請求。4.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述調(diào)度模塊具體用于: 從所述隊列管理模塊獲取所述文件操作請求,通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的元數(shù)據(jù)管理器執(zhí)行所述文件操作請求;或者, 通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的數(shù)據(jù)塊存儲服務(wù)器執(zhí)行所述文件操作請求。5.根據(jù)權(quán)利要求1或2所述的裝置,其特征在于,還包括: 日志模塊,所述日志模塊用于記錄文件的被操作軌跡。6.一種分布式文件系統(tǒng)的跨域多副本文件同步方法,其特征在于,包括: 監(jiān)控模塊監(jiān)控并獲取客戶端向元數(shù)據(jù)管理器發(fā)送的文件操作請求,并將所述文件操作請求發(fā)送到隊列管理模塊; 所述隊列管理模塊接收所述文件操作請求,為所述文件操作請求分配一標識并將所述文件操作請求加入處理隊列中,將所述文件操作請求發(fā)送到各個數(shù)據(jù)中心; 調(diào)度模塊在確定所有數(shù)據(jù)中心都收到所述文件操作請求后,查詢所述處理隊列,若查詢到所述文件操作請求則調(diào)度所述文件操作請求。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述調(diào)度模塊調(diào)度所述文件操作請求之后,還包括: 在調(diào)度所述文件操作請求執(zhí)行完成后在所述處理隊列中所述文件操作請求之后寫入一標志位; 所述隊列管理模塊根據(jù)所述文件操作請求之后的標志位的個數(shù)確定所述文件操作請求在數(shù)據(jù)中心之間是否執(zhí)行完成,若完成,則從所述處理隊列中刪除所述文件操作請求。8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,所述監(jiān)控模塊獲取到所述文件操作請求之后,還包括: 根據(jù)所述文件操作請求對應(yīng)的文件的路徑確定所述文件的類型; 若確定所述文件是第一類型文件夾中的子文件時,截獲所述文件操作請求; 所述隊列管理模塊確定所述文件操作請求在數(shù)據(jù)中心之間執(zhí)行完成之后,還包括:向所述監(jiān)控模塊發(fā)送通知消息; 所述監(jiān)控模塊接收到所述通知消息后,將截獲的所述文件操作請求發(fā)送至所述元數(shù)據(jù)管理器,以使所述元數(shù)據(jù)管理器執(zhí)行所述文件操作請求; 若確定所述文件是第二類型文件夾中的子文件時,不截獲所述文件操作請求。9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述調(diào)度模塊調(diào)度所述文件操作請求,包括: 從所述隊列管理模塊獲取所述文件操作請求,通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的元數(shù)據(jù)管理器執(zhí)行所述文件操作請求;或者, 通知所述調(diào)度模塊對應(yīng)的數(shù)據(jù)中心的數(shù)據(jù)塊存儲服務(wù)器執(zhí)行所述文件操作請求。10.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括: 日志模塊記錄文件的被操作軌跡。
【文檔編號】G06F17/30GK106095957SQ201610425836
【公開日】2016年11月9日
【申請日】2016年6月16日
【發(fā)明人】胡春明, 杜樂樂, 孫杰, 孫曉陽
【申請人】北京航空航天大學