本發(fā)明涉及分布式存儲技術領域,特別涉及一種無中心的、文件冗余可配置的分布式存儲方法與系統(tǒng)。
背景技術:
在分布式存儲領域,面向研發(fā)人員的解決方案有知名的Hadoop HDFS,HDFS方案特點包括:節(jié)點有Master和Slave之分,Master存在單點故障問題,可以通過部署多Master來避免,但是配置較為復雜;文件在本地系統(tǒng)被分塊,無法在本地系統(tǒng)查看與管理分布式存儲的文件目錄;將文件加入到分布式存儲需要復制過程,比較耗時;文件的冗余自動完成,用戶難以定位文件存儲在哪,無法手動指定文件存儲位置;適用于局域網內一直在線的服務器設備上搭建;面向研發(fā)人員,非專業(yè)人員不適用。
面向公眾的云存儲方案,比較成熟的是各類網盤,實現(xiàn)了終端與云端的文件目錄同步與文件內容的同步。這類解決方案的特點包括:需要連公網服務器,數據存儲在服務提供商的服務器內,存在安全隱患,用戶使用有顧慮;服務端和客戶端所承擔的角色完全不同;服務端和客戶端之間的目錄與內容的同步是一體的;用戶往往有多個終端,不同終端的存儲空間與網絡成本存在較大差異,通過網盤在終端之間有選擇地共享與同步數據操作復雜,不夠智能。
數據同步最簡單的方法就是將最新的數據完整的傳輸一份,全量同步,這種方式適合數據量小的情況,當完整數據量大而數據的修改又只涉及小部分內容時,增量同步,即傳輸修改部分數據是更優(yōu)的選擇。
數據增量同步首先需要識別同步雙方之間的差別,發(fā)明申請201210179530.8公開了一種將同步雙方的目錄樹進行比對,得出差別并產生消除差別的操作序列的方案;發(fā)明申請201410022418.2公開了一通過種向服務端提交與下載文件操作指令進行數據同步的方案;發(fā)明申請201210390811.8公開了一種對存儲數據的變化事件進行監(jiān)控,并將變化事件序列進行合并,減少同步雙方協(xié)議交換次數的同步的方案。
發(fā)明申請201210559321.6公開了一種需要借助中心服務器來匯總、分發(fā)數據的同步方案,該申請還公開了通過版本比較確定數據新舊,通過分片哈希減少文件傳輸內容大小,通過斷點續(xù)傳提升傳輸效率的技術方案。發(fā)明申請201310050905.5公開了一種可脫離中心服務器,終端之間對等地進行數據同步的技術方案。
技術實現(xiàn)要素:
鑒于上述現(xiàn)有技術及存在的不足,本發(fā)明要解決的技術問題在于提供一種用戶容易構建的,不依賴于中心服務器,適用于通信不穩(wěn)定的各種設備之間進行數據管理、冗余與自動同步,且用戶能夠查看和指定文件存儲在哪些設備的分布式存儲方法與系統(tǒng)。
為解決上述問題,本發(fā)明提供了一種分布式存儲方法,集群由若干對等節(jié)點構成:
集群各節(jié)點發(fā)現(xiàn)網絡中的其它節(jié)點,通過數據同步,每個節(jié)點都維護一份完整的集群節(jié)點列表;
集群各節(jié)點通過數據同步,每個節(jié)點都維護一份完整的集群目錄數據,提供給用戶查看與管理;
集群各節(jié)點接受用戶將本地的文件(夾)掛載到集群目錄,集群目錄相應的插入目錄數據,新增的集群目錄文件(夾)標記與之對應的本地文件(夾),所述映射關系標記不在節(jié)點間同步;
所述集群目錄維護各文件存儲節(jié)點列表,以便獲取文件內容及提供列表信息給用戶查看。
所述集群節(jié)點可運行于多種電子設備上,包括服務器、PC、智能手機、平板電腦、路由器、電視、智能家電等。
可選地,所述集群節(jié)點間相互發(fā)現(xiàn)的方法S11可選下列方法步驟之一及組合:
S11a,節(jié)點間通過廣播或多播協(xié)議,獲取可連接的節(jié)點列表;
S11b,各節(jié)點都維護一份集群節(jié)點列表并在節(jié)點間同步,用戶通知節(jié)點去連接一個(或多個)節(jié)點,成功建立連接的各節(jié)點更新本地集群節(jié)點列表,并同步到所有節(jié)點;
S11c,各節(jié)點通過注冊與查詢中間服務,獲取節(jié)點列表。
可選地,為了使得同一網絡內可建立多個分布式存儲集群,互不干擾,節(jié)點間建立連接時判斷是否屬于同一集群,屬于同一集群才建立連接并協(xié)作。所述節(jié)點所屬的集群標志由管理員配置。
可選地,節(jié)點間建立連接時對聲明屬于同一集群的其它節(jié)點進行安全校驗,所述用于安全校驗的秘鑰由管理員配置。
節(jié)點列表需要包含節(jié)點唯一標識和節(jié)點地址信息??蛇x地,在跨局域網的情況下,節(jié)點地址信息可有多個地址,每個地址包含網域標識和域內地址。
可選地,各節(jié)點維護的集群節(jié)點列表信息還包括:該節(jié)點是否在線,若所有在線節(jié)點都連接不上該節(jié)點,該節(jié)點離線;該節(jié)點最后在線時間;若離線持續(xù)很久,可以將該節(jié)點狀態(tài)設成失效、甚至從節(jié)點列表移除。
所述節(jié)點列表的同步,可選用背景技術中的全量同步或增量同步方案。
所述節(jié)點間的通信是松散的,一個節(jié)點在某些時間段只能和部分節(jié)點保持通信,甚至不能和其它任何節(jié)點保持通信。優(yōu)選地,各節(jié)點還維護本節(jié)點能否與節(jié)點列表的其它節(jié)點直接通信的信息,本信息可不在節(jié)點間同步。
當節(jié)點與目標節(jié)點不能直連時,節(jié)點向目標節(jié)點發(fā)送數據及節(jié)點從目標節(jié)點獲取數據需要通過中間節(jié)點中轉,需要集群有發(fā)現(xiàn)中轉節(jié)點及選擇較優(yōu)中轉節(jié)點的能力??蛇x地,各節(jié)點維護的集群節(jié)點列表信息中,若該節(jié)點不可直接通信則維護一組到達該節(jié)點的中轉節(jié)點列表,若該中轉節(jié)點列表有N個節(jié)點,與目標節(jié)點的通信需要中轉N次。
可選地,所述計算發(fā)起節(jié)點到目標節(jié)點的中轉節(jié)點列表方法S12具體步驟為:
S120,發(fā)起節(jié)點向所有能夠直連的中間節(jié)點發(fā)起查詢目標節(jié)點路由的請求,請求附帶一請求編號;
S121,中間節(jié)點收到請求后,判斷是否收到過發(fā)起節(jié)點的該編號的查詢請求,若收到過則忽略不返回,若沒收到過,則判斷目標節(jié)點是否可以直連,若是則返回與目標節(jié)點通信的平均響應時間,否則中間節(jié)點向收到的查詢請求來源節(jié)點之外的,能夠直連的其它中間節(jié)點轉發(fā)查詢請求;
S122,中間節(jié)點和發(fā)起節(jié)點,若收到返回則在收到的每條返回內容加上與返回來源節(jié)點通信平均響應時間和該返回節(jié)點標識,中間節(jié)點將所有返回結果以列表形式返回給上一級請求來源節(jié)點;
S123,發(fā)起節(jié)點匯總所有返回后,對每條返回都累計內容中的各項通信平均響應時間,選擇總響應時間最短的返回結果經過的中間節(jié)點作為優(yōu)選的中轉節(jié)點列表。
可選地,若步驟S123中發(fā)起節(jié)點未收到任何返回,則目標節(jié)點暫時不可連接,可以擇機重試若干次中轉節(jié)點計算步驟S12??蛇x地,若發(fā)起節(jié)點與目標節(jié)點間的通信失敗或中斷,可重新發(fā)起中轉節(jié)點計算步驟S12,并按新的中轉方案進行數據傳輸??蛇x地,一次計算的結果受當前網絡狀況影響,可重試若干次S12,綜合多次結果來調整中轉列表。
可選地,發(fā)起節(jié)點將同一數據發(fā)送給多個目標節(jié)點都通過同一中間節(jié)點中轉時,只發(fā)送一份數據給中間節(jié)點,中間節(jié)點再將數據分別發(fā)送給多個目標節(jié)點,節(jié)省網絡流量。
可選地,多個目標節(jié)點向同一源節(jié)點請求同一數據且通過同一中間節(jié)點中轉時,中間節(jié)點只向源節(jié)點請求一份數據,再將數據分別返回給多個目標節(jié)點,節(jié)省網絡流量。
現(xiàn)有個人云存儲客戶端安裝后需要指定一個本地同步文件夾,若后續(xù)希望將其它現(xiàn)有本地文件夾也設置成與云端同步則需要將該文件夾移動到安裝時指定的那個文件夾,使用不方便。
本發(fā)明技術方案中,集群各節(jié)點通過數據同步,每個節(jié)點都維護一份完整的集群目錄數據,提供給用戶查看與管理。集群目錄數據包含集群的文件、文件夾信息,文件信息包括名稱、類型、大小、創(chuàng)建時間、修改時間,文件夾信息包括名稱、創(chuàng)建時間、文件夾下子文件夾和文件列表。初始狀態(tài)下,集群目錄只有一個根目錄,集群各節(jié)點接受用戶將本地的文件(夾)掛載到集群目錄,集群目錄相應的插入目錄數據,新增的集群目錄文件(夾)標記與之對應的本地文件(夾),所述映射關系標記不在節(jié)點間同步,只保存在本地。文件(夾)的掛載操作并不復制或移動文件內容,某一節(jié)點上集群目錄加入的新數據,會同步到其它節(jié)點,用戶在其它節(jié)點查看集群目錄時也能瀏覽到新加入的那部分文件目錄,目錄刪除、修改操作也同理。
優(yōu)選地,所述集群目錄數據的同步,當節(jié)點新加入集群時或節(jié)點長時間離線后回歸集群時選用背景技術中的全量同步方案,近期在線情況下選用背景技術中的增量同步方案。
優(yōu)選地,大多數情況下,本地文件夾內部的目錄結構與集群目錄中對應的文件夾內的目錄結構通常是一致的,因此當集群目錄文件(夾)的對應的本地文件(夾)可以從上一層文件夾的對應關系推導得出的情況下,只標記該文件(夾)有對應的本地文件(夾),不標記具體的路徑,從而節(jié)省集群目錄所需要的存儲空間,減少對應關系變需要更新的數據量。如集群目錄/dir1、/dir1/dir2、/dir1/dir2/dir3分別對應本地的/mnt/dir1、/mnt/dir1/dir2、/mnt/dir1/dir2/dir3則可以把對應的本地目錄改成/mnt/dir1、-、-,-代表存在對應的本地文件(夾),具體路徑可以從上級目錄的對應的本地目錄拼接得出。
優(yōu)選地,集群目錄中映射關系與上一級目錄不對應的文件(夾)在本地上一級目錄中表現(xiàn)為指向對應本地文件(夾)的快捷方式,也稱鏈接。如集群目錄/dir1下包含子目錄/dir1/dir2,dir1對應本地的/mnt/dir1,dir2對應本地的/mnt/dir2,在本地它們不是子文件夾關系而是并列關系,則節(jié)點在/mnt/dir1下創(chuàng)建名為dir2的文件夾快捷方式,該快捷方式指向/mnt/dir2。
所述集群目錄維護各文件存儲節(jié)點列表,以便獲取文件內容及提供列表信息給用戶查看。在節(jié)點上將本地目錄掛載到集群目錄之后,新加入集群目錄的文件存儲節(jié)點列表都只有該節(jié)點一項。
優(yōu)選地,存儲節(jié)點列表項包含節(jié)點標識之外,還包括當前存儲在該節(jié)點的版本、文件大小、最后更新時間信息。集群目錄中文件的信息在多個存儲節(jié)點不統(tǒng)一時,取最新版本文件的信息。
具體地,建立本地目錄與分布式存儲集群目錄的映射關系的情況包括:
S21,節(jié)點安裝完成后,用戶指定一本地目錄作為默認目錄與集群根目錄對應,或節(jié)點創(chuàng)建一默認目錄與集群根目錄對應,若本地目錄包含數據,則集群目錄相應地加入該本地文件夾的目錄信息;
S22,用戶可以將本地現(xiàn)有文件夾掛載到集群目錄中現(xiàn)有的空文件夾或掛載時直接在集群目錄中新建文件夾,建立映射后集群目錄相應地加入該本地文件夾的目錄信息;
S23,用戶可以將本地現(xiàn)有文件掛載到集群目錄中現(xiàn)有的文件夾或掛載時直接在集群目錄中新建文件夾。
優(yōu)選地,節(jié)點上,存在映射關系的集群目錄與本地目錄進行同步,同步的變更包括文件基本信息的更新、文件的刪除、文件夾內部結構變化。所述變更無論用戶在任意節(jié)點的集群目錄管理界面操作,還是在本地文件管理器界面操作。文件夾內部結構變化包括:創(chuàng)建文件、創(chuàng)建文件夾、刪除文件夾、文件(夾)移動到集群內目錄、文件(夾)移動到集群外目錄。文件(夾)移動到集群外只能在本地文件管理器操作,需要在集群目錄移除相應的節(jié)點。
所述集群目錄與本地目錄同步過程中新增的文件(夾),需要建立集群目錄與本地目錄的映射關系。
以上所述技術方案,實現(xiàn)了在任意節(jié)點查看整個集群的目錄結構,以及管理集群的目錄結構,所有的文件內容依然保留在原始節(jié)點上,還未涉及節(jié)點之間傳輸文件內容以及冗余與同步文件內容。
可選地,所述節(jié)點集群目錄管理界面接收用戶將文件分發(fā)到目標節(jié)點的請求,等同于將目標節(jié)點加入文件存儲節(jié)點列表的請求,若本節(jié)點不是目標節(jié)點,轉發(fā)該請求到目標節(jié)點;目標節(jié)點收到請求后從源文件節(jié)點復制文件到本地,完成后將本節(jié)點加入到文件的存儲節(jié)點列表。所述分發(fā)的源文件默認為各節(jié)點中最新版本的文件,也可由用戶指定某一節(jié)點上的某一版本文件。若分發(fā)的文件的上級目錄在節(jié)點上還沒有對應本地目錄,需要對應地創(chuàng)建本地目錄。文件分發(fā)到目標節(jié)點后,用戶便能夠在該節(jié)點查看文件內容。
支持文件分發(fā)后,文件存儲節(jié)點列表會存在多個節(jié)點。可選地,當在集群目錄管理界面刪除一個存儲于多個節(jié)點的文件時,系統(tǒng)詢問用戶是刪除某一節(jié)點上的文件還是刪除所有節(jié)點上的文件。
可選地,所述節(jié)點集群目錄管理界面接收用戶將文件從其某一存儲節(jié)點刪除的請求,等同于將目標節(jié)點從文件存儲節(jié)點列表移除的請求,若本節(jié)點不是目標節(jié)點,轉發(fā)該請求到目標節(jié)點;目標節(jié)點收到請求后從本地刪除文件,完成后將本節(jié)點從文件的存儲節(jié)點列表移除。
可選地,用戶可以在集群目錄管理界面選擇文件夾批量設置文件夾內文件的存儲節(jié)點列表。
可選地,所述節(jié)點集群目錄管理界面接受用戶設置文件的同步節(jié)點列表,同步源文件修改后,所在節(jié)點將文件內容或其修改同步到列表中的其它節(jié)點,源文件默認為同步節(jié)點列表各節(jié)點中最新版本的文件,也可由用戶指定某一節(jié)點上的文件。
若加入同步節(jié)點列表的同步節(jié)點原先并不存儲該文件,則文件同步到本地后,相應地將節(jié)點加入到文件的存儲節(jié)點列表。
可選地,用戶可以在集群目錄管理界面選擇文件夾批量設置文件夾內的文件的同步節(jié)點列表。上述轉發(fā)與同步新增的文件(夾),需要建立集群目錄與本地目錄的映射關系。
當其它節(jié)點上最新版文件還未同步到本節(jié)點,用戶又在本節(jié)點修改了文件時,文件同步存在沖突,節(jié)點將其中一份文件進行重命名,并告知用戶存在沖突,要求用戶解決沖突,并將兩個文件合并為一個文件??蛇x地,節(jié)點發(fā)現(xiàn)沖突時嘗試自動解決沖突。
可選地,所述分發(fā)、同步文件內容時,可應用數據源節(jié)點間負載均衡、分段并行傳輸、斷點續(xù)傳、分片哈希找出未修改內容等策略提升效率。
本發(fā)明還提供了一種分布式存儲系統(tǒng),由若干對等的節(jié)點組成,節(jié)點包括:
節(jié)點列表單元,用于發(fā)現(xiàn)網絡中的其它節(jié)點,通過節(jié)點間數據同步,維護一份完整的集群節(jié)點列表;
集群目錄單元,用于在節(jié)點本地維護并存儲一份完整的集群目錄信息,供用戶查看與管理;
目錄同步單元,用于本節(jié)點與其它節(jié)點間集群目錄數據的同步;
集群目錄單元,還用于接受用戶將本地的文件(夾)掛載到集群目錄,集群目錄相應的插入目錄數據,新增的集群目錄文件(夾)標記與之對應的本地文件(夾),所述映射關系標記不在節(jié)點間同步;
集群目錄單元,還用于為集群目錄各文件維護存儲節(jié)點列表,以便獲取文件內容及提供列表信息給用戶查看。
優(yōu)選地,節(jié)點還包括:
本地同步單元,用于同步存在映射關系的集群目錄與本地目錄,同步的變更包括文件基本信息的更新、文件的刪除、文件夾內部結構變化。
優(yōu)選地,節(jié)點還包括:
內容同步單元,用于向其它節(jié)點請求文件內容及將本地文件發(fā)送到指定節(jié)點;
集群目錄單元,還用于接收用戶將某一文件分發(fā)到目標節(jié)點的請求,等同于將目標節(jié)點加入文件存儲節(jié)點列表的請求,若本節(jié)點不是目標節(jié)點,轉發(fā)該請求到目標節(jié)點,節(jié)點收到請求后觸發(fā)內容同步單元從源文件節(jié)點復制文件到本地,完成后將本節(jié)點加入到文件的存儲節(jié)點列表。
優(yōu)選地,所述集群目錄單元,還用于接收用戶將文件從其某一存儲節(jié)點刪除的請求,等同于將目標節(jié)點從文件存儲節(jié)點列表移除的請求,若本節(jié)點不是目標節(jié)點,轉發(fā)該請求到目標節(jié)點;目標節(jié)點收到請求后從本地刪除文件,完成后將本節(jié)點從文件的存儲節(jié)點列表移除。
優(yōu)選地,節(jié)點還包括:
內容同步單元,用于將本地文件內容或其修改發(fā)送到指定節(jié)點、向其它節(jié)點請求文件內容或其修改;
集群目錄單元,還用于接受用戶設置文件同步節(jié)點列表,當同步源文件有更新時,源節(jié)點觸發(fā)內容同步單元將源文件同步到列表中的其它節(jié)點。
優(yōu)選地,節(jié)點還包括:
中轉單元,用于轉發(fā)其它節(jié)點間的數據傳輸;
節(jié)點列表單元,還用于維護節(jié)點間能否直連的狀態(tài),若不能直連,嘗試為這兩個節(jié)點間的數據傳輸尋找優(yōu)選的中轉節(jié)點列表。
應用本發(fā)明技術方案的分布式存儲方法與系統(tǒng),優(yōu)點包括:
集群節(jié)點之間是對等的,結構簡單,無中心,不存在單點故障,實施成本低,易于推廣應用。
系統(tǒng)用戶友好,部署簡單,將現(xiàn)有文件加入集群簡單快速,支持多文件夾映射到集群,解決現(xiàn)有云同步添加本地文件夾困難,設備之間無法選擇性同步的問題。
集群運行可靠,不對文件進行轉換,即使集群停用,用戶的文件依然能夠使用本地文件系統(tǒng)訪問,不存在丟失數據的風險,即使集群發(fā)生紊亂,也可以拋棄現(xiàn)有集群,根據各終端本地文件快速構建一個新的、健康的集群。
系統(tǒng)用戶透明度高,能夠知道每個文件存儲的位置,在哪幾個節(jié)點上冗余,并且可以根據用戶的意愿進行配置。
集群使用方便,可使用本地現(xiàn)有的文件管理器進行可視化圖形操作,集群管理界面也支持可視化圖形操作,面向廣大公眾,學習成本低。
系統(tǒng)用途較廣,可以作為個人眾多設備之間數據管理與同步工具,可作為企業(yè)內部共享文件系統(tǒng),可作為遠程查看企業(yè)或家庭文件的工具,可作為遠程備份數據容災工具,可作為軟件系統(tǒng)的底層存儲,可作為程序設計、工程設計、藝術設計源文件版本控制系統(tǒng)。
系統(tǒng)適應性強,可以支持資源有限的移動設備、嵌入式設備,不要求設備處于同一網段、不要求設備一直相互連接。
系統(tǒng)不依賴于服務器,可部署成私有云,數據完全在用戶的掌握范圍內,無需擔心數據被截取或利用,安全性高。
系統(tǒng)具有網絡穿透和智能路由能力,網絡配置簡單,設備間共享、同步數據方便。
附圖說明
圖1是本發(fā)明一實施例的節(jié)點網絡拓撲圖。
圖2是圖1中節(jié)點1維護的節(jié)點列表內容實施例。
圖3是本發(fā)明一實施例部署前兩個節(jié)點設備的本地目錄結構。
圖4是本發(fā)明一實施例安裝后兩個節(jié)點的集群目錄和本地目錄結構。
圖5是本發(fā)明一實施例掛載目錄后兩個節(jié)點的集群目錄和本地目錄結構。
圖6是本發(fā)明一實施例編輯集群目錄后兩個節(jié)點的集群目錄和本地目錄結構。
圖7是本發(fā)明一實施例的集群目錄管理界面。
圖8是本發(fā)明一實施例執(zhí)行分發(fā)與設置同步后兩個節(jié)點的集群目錄和本地目錄結構。
圖9是本發(fā)明一實施例的節(jié)點模塊圖。
圖10示出了本發(fā)明一實施例的系統(tǒng)部署圖。
圖11示出了本發(fā)明一實施例的系統(tǒng)部署圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。
如圖1所示,集群cluster有7個節(jié)點,節(jié)點1-4屬于局域網local1,節(jié)點5-7屬于局域網local2,節(jié)點3和節(jié)點6還分配有互聯(lián)網ip與端口,能夠接收所有節(jié)點的請求,該外網端口通常是通過網關做端口映射實現(xiàn)的。其中節(jié)點7由于某種原因和節(jié)點5、6都失去連接,可能是因為網線松動或者設備關機,從而沒有節(jié)點能夠連接上節(jié)點7,節(jié)點7相對于集群處于離線狀態(tài)。當節(jié)點7離線很久,例如超過一天,集群可以將節(jié)點7標記為失效狀態(tài)。
局域網內節(jié)點之間發(fā)現(xiàn)可以通過UDP廣播或多播實現(xiàn),而對于圖1所示結構的集群,需要管理員作一些配置,告知每個節(jié)點它可以連接的節(jié)點,當互聯(lián)的節(jié)點之間能夠同步節(jié)點列表時,管理員的配置工作量會大幅減少。假設7各節(jié)點一開始都不知道對方的存在,各節(jié)點的節(jié)點列表中只有自己,管理員向節(jié)點1提供節(jié)點2的地址后,節(jié)點1嘗試連接節(jié)點2,連接成功,且節(jié)點2聲明自己屬于集群cluster,且節(jié)點間互相完成秘鑰校驗,秘鑰由管理員事前在節(jié)點配置好,此時節(jié)點1和2的節(jié)點列表都包含兩項。同理,管理員向節(jié)點2提供節(jié)點3的地址,他們建立連接后,節(jié)點2的節(jié)點列表有三項,節(jié)點1、3的節(jié)點列表有兩項,三個節(jié)點間數據同步之后,節(jié)點1、2、3的節(jié)點列表都有三項。
在跨局域網的部署模式下,一個節(jié)點的地址不能僅僅包含ip地址,因為ip地址可能重復,還需要包含網絡域的標識,節(jié)點只與本局域網的節(jié)點、公網節(jié)點嘗試建立連接??缇钟蚓W通信可通過建立公網鏈路來實現(xiàn),如圖1所示,管理員需要為節(jié)點3、6分配公網IP,若該IP是網關IP,還需要將節(jié)點分布式存儲通信需要的端口映射到網關,這樣節(jié)點3、6便擁有內網、公網兩個IP,若7個節(jié)點都能訪問外網,則所有節(jié)點都能與節(jié)點3、6發(fā)起連接。當局域網鏈路能連接時,優(yōu)選局域網通信,所以節(jié)點1、2、4與節(jié)點3的通信還是通過內網IP在局域網完成。圖2表格中節(jié)點地址列示出了節(jié)點地址表示的一種實施例。
為輔助通信和跟蹤集群狀態(tài),節(jié)點列表需要維護節(jié)點是否在線、最后在線時間、是否失效等信息,圖2示出了節(jié)點1維護的節(jié)點列表的實施例。節(jié)點還需要維護目前與列表其它節(jié)點能否直接通信的狀態(tài),這一狀態(tài)用于暫停或恢復數據同步,提示用戶暫時無法完成某一操作等。對圖1所示的部署結構,還需要維護不能直連節(jié)點間的中轉節(jié)點列表,節(jié)點1向節(jié)點5發(fā)起請求需要通過節(jié)點6中轉,節(jié)點5向節(jié)點1發(fā)起請求需要節(jié)點3中轉。若圖1中局域網節(jié)點無法訪問外網,則節(jié)點1和5之間的通信需要節(jié)點3、6兩次中轉。
本發(fā)明方案提供一種中轉節(jié)點計算方案,以圖1的部署結構為例,假設內網平均響應時間10ms,公網平均響應時間100ms,節(jié)點1尋找通往節(jié)點5的中轉列表的計算步驟具體為:節(jié)點1發(fā)起查詢請求,發(fā)給節(jié)點2、3、4、6,節(jié)點2收到后判斷不能和5直連,轉發(fā)請求給節(jié)點3、4、6,節(jié)點3、4、6判斷收到過該編號的請求,不返回。與節(jié)點2同理,節(jié)點3、4也沒有返回結果。節(jié)點6收到請求后判斷可以和5直連,返回節(jié)點6和5之間通信的平均響應時間,即返回一條10ms給節(jié)點1,節(jié)點一收到返回后加上返回來源節(jié)點6和與節(jié)點6通信的平均響應時間,此時返回結果變成100ms-node6-10ms,由于請求是由節(jié)點1自己發(fā)起的,返回終止,最終只有一個可選鏈路,經過節(jié)點6中轉,平均響應總時間110ms。
圖3示出了兩個設備,臺式機D和手機P,在部署本發(fā)明實施例的分布式存儲系統(tǒng)之前的本地目錄結構。在安裝本發(fā)明實施例的分布式存儲系統(tǒng)節(jié)點時,臺式機在本地E盤下創(chuàng)建名為“云存儲”的新文件夾作為默認目錄,即集群根目錄對應的本地目錄。同理手機在SD卡上創(chuàng)建名為“云存儲”的新文件夾作為默認目錄。假設集群只有這兩個節(jié)點,則現(xiàn)在集群目錄只有一個空的根目錄,如圖4所示。
用戶在臺式機D將本地目錄“E盤/文案”掛載到集群目錄“根目錄/工作”后,在集群目錄創(chuàng)建“根目錄/工作”這一掛載目錄之外,同時在集群目錄創(chuàng)建與“E盤/文案”內部的文件與文件夾對應的子目錄項,并標記這些新插入的目錄項對應的本地文件與文件夾、新插入的文件目錄項的存儲列表設為本機D。同理,用戶在手機P將“SD卡/娛樂”掛載到集群目錄“根目錄/生活”也執(zhí)行相應的操作。兩個節(jié)點的集群目錄樹、目錄項存儲列表完成同步后如圖5表格所示。
優(yōu)選地,執(zhí)行上述掛載操作后,在臺式機D本地默認目錄“E盤/云存儲”下創(chuàng)建名為“工作”、指向“E盤/文案”的文件夾快捷方式。在手機P本地默認目錄“SD卡/云存儲”下創(chuàng)建名為“生活”、指向“SD卡/娛樂”的文件夾鏈接。
各節(jié)點的集群目錄提供查看與操作界面,類似現(xiàn)有操作系統(tǒng)的文件管理器。各節(jié)點的本地目錄已經由操作系統(tǒng)提供文件管理器,供用戶管理文件,本地目錄還接受來自應用程序對文件目錄的操作,當集群目錄與本地目錄建立映射時,本地目錄和集群目錄的操作需要進行同步。
如圖6所示,在臺式機P上,用戶使用集群目錄管理器在集群目錄“根目錄/工作/專利”下創(chuàng)建了子目錄“發(fā)明”,節(jié)點除了將該改變同步到其它節(jié)點外,因為“根目錄/工作/專利”存在對應的本地文件夾“E盤/文案/專利/”,節(jié)點會在“E盤/文案/專利/”下創(chuàng)建新文件夾“發(fā)明”。同理,在手機P上,用戶將“照片.jpg”從不存在和集群目錄對應的地方移動到“SD卡/娛樂”,或者通過相機拍照在“SD卡/娛樂”下創(chuàng)建了“照片.jpg”,由于該文件夾與集群目錄“根目錄/生活”存在映射關系,節(jié)點在集群的該目錄下也創(chuàng)建該文件的目錄項,該項的存儲列表為P,并將集群目錄的變更同步到其它節(jié)點。
圖7示出了一種集群目錄管理界面,與常見的操作系統(tǒng)本地文件管理器類似,包含地址欄1,詳細模式表頭2,排序按鈕3,目錄內容列表4,選中對象屬性欄5。屬性欄包含文件大小、更新時間、文件類型等基本信息。特別地,本實施還在屬性欄顯示文件的存儲節(jié)點列表6、文件的同步列表,以及編輯這兩個列表的按鈕7。所述編輯按鈕也可以設置在文件、文件夾的彈出菜單中。
如圖7所示,用戶在集群目錄管理界面選中文件“周計劃.txt”后,屬性欄顯示該文件只存儲于“臺式機”,用戶點擊存儲列表后面的編輯按鈕后,彈出存儲列表編輯框8。編輯框列出集群現(xiàn)有在線節(jié)點列表,已經存儲該文件的節(jié)點后附帶“-”號,不存儲該文件的節(jié)點后附帶“+”號。若點擊編輯框“臺式機”后面的“-”號,代表著將該文件從臺式機節(jié)點刪除,執(zhí)行后文件存儲列表為空,該文件也從集群目錄刪除。若點擊編輯框“手機”后面的“+”號,代表將該文件從臺式機節(jié)點分發(fā)到手機節(jié)點,分發(fā)完成后,文件存儲列表包含這兩個節(jié)點。
如圖7所示,同步列表的顯示與編輯與存儲列表類似,同步列表至少需要包含兩個節(jié)點,且至少有一個節(jié)點上已經存儲有該文件。將一個不存儲該文件的節(jié)點加入到同步列表,先執(zhí)行將該文件分發(fā)到該節(jié)點,文件的存儲列表也會增加該節(jié)點。將一個節(jié)點移出同步列表,并不將該文件從該節(jié)點刪除。將文件從節(jié)點刪除同時也會將節(jié)點從文件同步節(jié)點列表刪除。
如圖8所示,將“周計劃.txt”從臺式機D分發(fā)到手機P時,手機P節(jié)點首先在本地默認目錄“SD卡/云存儲”創(chuàng)建“工作”目錄,再將“周計劃.txt”從臺式機復制一份到本地新建的“工作”目錄下。將“照片.jpg”設置成在兩個節(jié)點間同步也類似,同步在分發(fā)的基礎上,進一步地,在同步列表節(jié)點上的文件內容改變時,同步到其它節(jié)點。默認情況下同步的源文件為最新版本文件,即無論在臺式機還是在手機上修改“照片.jpg”內容,都會同步到另一方。
圖9示出了本發(fā)明實施例的節(jié)點模塊圖,集群各節(jié)點包含:節(jié)點列表單元1,集群目錄單元2,目錄同步單元3,本地同步單元4,內容同步單元5,中轉單元6。
圖10示出了本發(fā)明一種實施方式的系統(tǒng)部署圖,該部署適用于企業(yè)內部將眾多臺式機搭建成分布式存儲系統(tǒng),實現(xiàn)大容量存儲與數據共享,還能將企業(yè)數據備份到遠程服務器實現(xiàn)云存儲與遠程容災,還能夠支持員工在家庭訪問企業(yè)數據、通過手機移動辦公。
圖11示出了本發(fā)明一種實施方式的系統(tǒng)部署圖,該部署適用于個人與家庭用戶在眾多個人設備間構件分布式存儲,發(fā)揮PC容量大、移動設備便攜等設備各自的優(yōu)勢,將數據傳輸、備份、管理變得簡單,還能在家庭網絡之外實現(xiàn)對家庭數據的訪問。
以上所述僅為本發(fā)明的實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。