一種基于svn的文件自動(dòng)網(wǎng)絡(luò)同步方法
【專利摘要】本發(fā)明的目的在于提供一種基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,包括服務(wù)器端處理流程和客戶端處理流程。本方法能夠?qū)崿F(xiàn)文件在局域網(wǎng)內(nèi)任一節(jié)點(diǎn)提交后,所有節(jié)點(diǎn)在需要時(shí)自動(dòng)網(wǎng)絡(luò)同步的一種文件自動(dòng)網(wǎng)絡(luò)同步方案。本發(fā)明能夠?qū)崿F(xiàn)文件實(shí)時(shí)同步,從而能實(shí)現(xiàn)快速本地打開文件的目的。
【專利說明】—種基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電網(wǎng)系統(tǒng)文件數(shù)據(jù)傳輸【技術(shù)領(lǐng)域】,具體來說是一種電力系統(tǒng)自動(dòng)化領(lǐng)域的圖形文件和配置文件的網(wǎng)絡(luò)同步的方法。
【背景技術(shù)】
[0002]SVN, (Subversion,即文件版本管理),是近年來崛起的文件版本管理軟件,是cvs的接班人,是一個(gè)自由,開源的版本控制系統(tǒng)。在SVN管理下,文件和目錄可以超越時(shí)空。Subversion可以記錄每一次文件和目錄的修改情況。這樣就可以籍此將數(shù)據(jù)恢復(fù)到以前的版本,并可以查看數(shù)據(jù)的更改細(xì)節(jié)。
[0003]SOA(service-oriented architecture即面向服務(wù)架構(gòu)),面向服務(wù)的體系結(jié)構(gòu)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的,它獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。
[0004]本發(fā)明在SVN提供的文件版本管理服務(wù)的基礎(chǔ)上,在服務(wù)器端和客戶端都采用內(nèi)存映像文件記錄倉庫中各個(gè)文件的版本號(hào)和文件MD5值,以方便服務(wù)器和客戶端進(jìn)行文件的MD5值對(duì)比,在服務(wù)器端應(yīng)用多線程和SOA接口響應(yīng)客戶端的請(qǐng)求,在客戶端應(yīng)用多線程和任務(wù)池技術(shù)提交請(qǐng)求,從而實(shí)現(xiàn)為所有需要提供文件網(wǎng)絡(luò)同步的節(jié)點(diǎn)提供快速文件同步的服務(wù)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,能夠?qū)崿F(xiàn)文件在局域網(wǎng)內(nèi)任一節(jié)點(diǎn)提交后,所有節(jié)點(diǎn)在需要時(shí)自動(dòng)網(wǎng)絡(luò)同步的一種文件自動(dòng)網(wǎng)絡(luò)同步方案。本發(fā)明能夠?qū)崿F(xiàn)文件實(shí)時(shí)同步,從而能實(shí)現(xiàn)快速本地打開文件的目的。
[0006]本發(fā)明的目的可通過以下的技術(shù)措施來實(shí)現(xiàn):
[0007]本發(fā)明是一種基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,包括服務(wù)器端處理流程和客戶端處理流程,具體步驟如下:
[0008]服務(wù)器端處理流程如下:
[0009]1.服務(wù)器端守護(hù)RFS (resource file system,即資源文件管理系統(tǒng))服務(wù)。
[0010]2.RFS服務(wù)啟動(dòng)時(shí),加載服務(wù)器端內(nèi)存映像文件,映像文件中記錄有服務(wù)器端文件系統(tǒng)的主版本號(hào),還記錄了服務(wù)器端所有需要網(wǎng)絡(luò)同步的文件的基本資料,比如文件版本號(hào),文件的MD5值,文件狀態(tài)等。內(nèi)存映像文件相當(dāng)于一本書的目錄,各個(gè)需要網(wǎng)絡(luò)同步的文件相當(dāng)于一本書的內(nèi)容,當(dāng)一本書的內(nèi)容發(fā)生改變后,目錄也會(huì)發(fā)生改變。
[0011]3.RFS服務(wù)啟動(dòng)后,會(huì)維持一個(gè)線程,負(fù)責(zé)處理并維護(hù)服務(wù)器的內(nèi)存映像文件和日常事務(wù),比如文件的網(wǎng)絡(luò)刪除,文件狀態(tài)的改變,文件加鎖解鎖等。
[0012]4.當(dāng)檢測到客戶端的請(qǐng)求后,RFS服務(wù)通過SOA接口響應(yīng)客戶端的請(qǐng)求,比如文件上傳,文件下載,內(nèi)存映像文件內(nèi)容的下載等。當(dāng)服務(wù)結(jié)束后,自動(dòng)關(guān)閉連接。
[0013]5.對(duì)于文件上傳等會(huì)改變文件內(nèi)容或者文件狀態(tài)的請(qǐng)求,RFS服務(wù)會(huì)首先把文件提交到SVN服務(wù)器,提交成功后會(huì)獲取到SVN新生成的一個(gè)文件版本號(hào),然后用這個(gè)版本號(hào)來更新自己的內(nèi)存映像文件中的文件系統(tǒng)的主版本號(hào)和上傳文件的版本號(hào)。由于主版本號(hào)更新,當(dāng)客戶端詢問服務(wù)器,發(fā)現(xiàn)服務(wù)器上主版本號(hào)和自己的主版本號(hào)不一致,就會(huì)觸發(fā)客戶端主動(dòng)去下載剛才被上傳的文件。
[0014]客戶端處理流程如下:
[0015]1.啟動(dòng)任意一個(gè)包含網(wǎng)絡(luò)同步客戶端模塊的進(jìn)程,比如繪圖包或者調(diào)度員界面。
[0016]2.網(wǎng)絡(luò)同步客戶端模塊在啟動(dòng)時(shí),加載客戶端內(nèi)存映像文件,映像文件中記錄了客戶端文件系統(tǒng)主版本號(hào),還記錄了客戶端所有需要網(wǎng)絡(luò)同步的文件的基本資料,比如文件版本號(hào),文件的MD5值,文件狀態(tài)等。
[0017]3.客戶端啟動(dòng)后,會(huì)維持一個(gè)線程,線程會(huì)每隔3秒檢查自己的客戶端文件系統(tǒng)主版本號(hào)和服務(wù)器上的服務(wù)器端文件系統(tǒng)主版本號(hào)是否一致,如果不一致,就會(huì)向服務(wù)器發(fā)起索要服務(wù)器端內(nèi)存映像文件相對(duì)于自己變化內(nèi)容的請(qǐng)求,也即增量的方式的請(qǐng)求。
[0018]4.請(qǐng)求返回后,客戶端會(huì)把返回內(nèi)容和本地內(nèi)存映像文件中信息做對(duì)比,比較文件的版本號(hào)和文件的MD5值,如果不一致。就發(fā)起對(duì)不一致的文件的下載請(qǐng)求。
[0019]5.文件成功下載后,客戶端會(huì)更新自己的內(nèi)存映像文件,使之和服務(wù)器端一致。然后繼續(xù)每隔3秒一次的輪詢。
[0020]6.上面5個(gè)步驟是增量方式檢查文件一致性,然后下載。線程還會(huì)每隔一個(gè)小時(shí)把自己的內(nèi)存映像文件和服務(wù)器端的內(nèi)存映像文件進(jìn)行全局對(duì)比,檢查是否有不一致的文件,然后下載。所述增量方式即只檢查每次比對(duì)后新修改的內(nèi)容。
[0021]7.客戶端還可通過操作界面或者命令行方式進(jìn)行文件網(wǎng)絡(luò)保存,查看文件保存日志。下載指定文件的指定版本,網(wǎng)絡(luò)刪除指定文件等操作。
[0022]本發(fā)明對(duì)比現(xiàn)有技術(shù)具有如下優(yōu)點(diǎn):
[0023]1.文件網(wǎng)絡(luò)同步實(shí)現(xiàn)高度自動(dòng)化。
[0024]2.客戶端節(jié)點(diǎn)不需要一直在線,當(dāng)客戶端節(jié)點(diǎn)在停機(jī)一端日子后重新開機(jī),RFS客戶端進(jìn)程會(huì)自動(dòng)把所有需要更新的文件自動(dòng)更新一遍。
[0025]3.以SVN服務(wù)為基礎(chǔ),可方便的導(dǎo)出文件的任意一個(gè)版本。
[0026]4.采用S0A,使得網(wǎng)絡(luò)交互服務(wù)接口和協(xié)議都很容易擴(kuò)展。比如目前就采用了SOAP和THRIFT兩種協(xié)議。
[0027]5.服務(wù)器端對(duì)被下載的文件建立內(nèi)存緩存,從而能快速提供所有節(jié)點(diǎn)對(duì)同一個(gè)文件的集中式下載。
[0028]6.客戶端節(jié)點(diǎn)不需要配置守護(hù)進(jìn)程,文件會(huì)在需要查看時(shí)自動(dòng)網(wǎng)絡(luò)同步。
[0029]7.客戶端請(qǐng)求采用線程任務(wù)池,實(shí)現(xiàn)兼顧效率和減輕服務(wù)器負(fù)荷。
[0030]8.模塊化設(shè)計(jì),可方便的嵌入有網(wǎng)絡(luò)同步需求的應(yīng)用程序中。
【專利附圖】
【附圖說明】
[0031]圖1是本發(fā)明的系統(tǒng)架構(gòu)圖?!揪唧w實(shí)施方式】
[0032]如圖1所示,SVN服務(wù)器只需要一臺(tái)。RFS服務(wù)器可以配置多臺(tái),一般情況下只需配置兩臺(tái)互為備用。主RFS服務(wù)器負(fù)責(zé)響應(yīng)客戶的請(qǐng)求,備RFS服務(wù)器作為熱備用,維持自己的狀態(tài)和主服務(wù)器一致,在主RFS服務(wù)器退出后,備RFS服務(wù)器立即升級(jí)為主RFS服務(wù)器,并立刻對(duì)客戶端提供服務(wù)。
[0033]對(duì)于文件網(wǎng)絡(luò)同步的客戶端節(jié)點(diǎn),不需要有專門守護(hù)的進(jìn)程用來維持文件的同步。因?yàn)楫?dāng)任意一個(gè)調(diào)用了 RFS客戶端動(dòng)態(tài)庫的進(jìn)程運(yùn)行起來后,這個(gè)進(jìn)程實(shí)際上就自動(dòng)成為一個(gè)RFS客戶端進(jìn)程。當(dāng)一個(gè)節(jié)點(diǎn)上有多個(gè)RFS客戶端時(shí),只有一個(gè)進(jìn)程是主RFS客戶端進(jìn)程。主RFS客戶端進(jìn)程負(fù)責(zé)維護(hù)和服務(wù)器上文件的同步。
[0034]假定當(dāng)前有三臺(tái)節(jié)點(diǎn):Servicel,Clientl, Client2。Servicel 上運(yùn)行了 SVN服務(wù)和RFS服務(wù)。在Clientl上有一個(gè)文件名為checkin, svg的文件需要網(wǎng)絡(luò)同步。當(dāng)Clientl對(duì)checkin, svg提交后,Client2需要實(shí)現(xiàn)自動(dòng)同步。
[0035]1.客戶端提交文件
[0036]Clientl在RFS客戶端進(jìn)程對(duì)checkin, svg做提交操作(即網(wǎng)絡(luò)保存),那么首先Clientl的RFS客戶端進(jìn)程會(huì)對(duì)checkin, svg計(jì)算MD5值,然后用算出來的MD5值和客戶端內(nèi)存映像文件中checkin, svg的MD5值進(jìn)行對(duì)比,如果不一致,表示文件有改動(dòng),那么就會(huì)通過SOA接口向Servicel上的RFS服務(wù)提交該文件。
[0037]2.服務(wù)器端修改文件系統(tǒng)版本號(hào)
[0038]Servicel接受請(qǐng)求,接收客戶端發(fā)過來的checkin, svg文件,然后通過SVNAPI接口函數(shù)把checkin, svg文件提交到SVN得倉庫里,文件成功提交后,SVN會(huì)把最新版本號(hào)加I后返回給RFS服務(wù)器。RFS服務(wù)器就會(huì)把這個(gè)返回的版本號(hào)作為自己的內(nèi)存映像文件的主版本號(hào),同時(shí)也會(huì)把這個(gè)版本號(hào)作為checkin, svg文件的版本號(hào)。
[0039]3.其它客戶端下載文件
[0040]Client2上的RFS客戶端進(jìn)程,也包括Servicel的RFS客戶端進(jìn)程,會(huì)每隔3秒向Servicel的RFS服務(wù)器進(jìn)程詢問服務(wù)器文件系統(tǒng)主版本號(hào),會(huì)發(fā)現(xiàn)服務(wù)器上主版本號(hào)比自己的主版本號(hào)要大。那么RFS客戶端進(jìn)程就會(huì)向服務(wù)器端請(qǐng)求所有大于自己主版本號(hào)的服務(wù)器端的文件列表。請(qǐng)求到被改動(dòng)的文件列表后,就和自己內(nèi)存映像文件的內(nèi)容進(jìn)行對(duì)比,會(huì)發(fā)現(xiàn)checkin, svg文件的MD5值和本地不一致或者本地根本沒有這個(gè)文件的記錄信息,那么RFS客戶端就從Servicel的RFS服務(wù)器進(jìn)程哪兒請(qǐng)求下載checkin, svg文件,同時(shí)更新自己的客戶端內(nèi)存映像文件,使之和服務(wù)器端保持一致。
[0041]本發(fā)明的實(shí)施方式不限于此,在本發(fā)明上述基本技術(shù)思想前提下,按照本領(lǐng)域的普通技術(shù)知識(shí)和慣用手段對(duì)本
【發(fā)明內(nèi)容】
所做出其它多種形式的修改、替換或變更,均落在本發(fā)明權(quán)利保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,包括服務(wù)器端處理流程和客戶端處理流程,其特征在于: 服務(wù)器端處理流程如下: 1.1)服務(wù)器端守護(hù)資源文件管理系統(tǒng)(resource file system, RFS)服務(wù); 1.2)RFS服務(wù)啟動(dòng)時(shí),加載服務(wù)器端內(nèi)存映像文件,映像文件中記錄有服務(wù)器端文件系統(tǒng)的主版本號(hào),還記錄了服務(wù)器端所有需要網(wǎng)絡(luò)同步的文件的基本資料; 1.3)RFS服務(wù)啟動(dòng)后,會(huì)維持一個(gè)線程,負(fù)責(zé)處理并維護(hù)服務(wù)器的內(nèi)存映像文件和日常事務(wù); 1.4)當(dāng)檢測到客戶端的請(qǐng)求后,RFS服務(wù)通過SOA接口響應(yīng)客戶端的請(qǐng)求,并進(jìn)行相應(yīng)的服務(wù),當(dāng)服務(wù)結(jié)束后,自動(dòng)關(guān)閉連接; 客戶端處理流程如下: 2.1)啟動(dòng)任意一個(gè) 包含網(wǎng)絡(luò)同步客戶端模塊的進(jìn)程; 2.2)網(wǎng)絡(luò)同步客戶端模塊在啟動(dòng)時(shí),加載客戶端內(nèi)存映像文件,映像文件中記錄了客戶端文件系統(tǒng)主版本號(hào),還記錄了客戶端所有需要網(wǎng)絡(luò)同步的文件的基本資料; 2.3)客戶端啟動(dòng)后,會(huì)維持一個(gè)線程,線程會(huì)每隔3秒檢查自己的客戶端文件系統(tǒng)主版本號(hào)和服務(wù)器上的服務(wù)器端文件系統(tǒng)主版本號(hào)是否一致,如果不一致,就會(huì)向服務(wù)器發(fā)起索要服務(wù)器端內(nèi)存映像文件相對(duì)于自己變化內(nèi)容的請(qǐng)求; 2.4)請(qǐng)求返回后,客戶端會(huì)把返回內(nèi)容和本地內(nèi)存映像文件中信息做對(duì)比,如果不一致,則發(fā)起對(duì)不一致的文件的下載請(qǐng)求; 2.5)文件成功下載后,客戶端會(huì)更新自己的內(nèi)存映像文件,使之和服務(wù)器端一致;然后繼續(xù)每隔3秒一次的輪詢。
2.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述需要網(wǎng)絡(luò)同步的文件的基本資料包括文件版本號(hào)、文件的MD5值、文件狀態(tài)。
3.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述處理并維護(hù)服務(wù)器的內(nèi)存映像文件和日常事務(wù)包括文件的網(wǎng)絡(luò)刪除、文件狀態(tài)的改變、文件加鎖解鎖。
4.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述客戶端的請(qǐng)求包括文件上傳,文件下載,內(nèi)存映像文件內(nèi)容的下載。
5.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述服務(wù)器對(duì)客戶端請(qǐng)求的服務(wù)過程包括:對(duì)于會(huì)改變文件內(nèi)容或者文件狀態(tài)的請(qǐng)求,RFS服務(wù)會(huì)首先把文件提交到SVN服務(wù)器,提交成功后會(huì)獲取到SVN新生成的一個(gè)文件版本號(hào),然后用這個(gè)版本號(hào)來更新自己的內(nèi)存映像文件中的文件系統(tǒng)的主版本號(hào)和上傳文件的版本號(hào);由于主版本號(hào)更新,當(dāng)客戶端詢問服務(wù)器,發(fā)現(xiàn)服務(wù)器上主版本號(hào)和自己的主版本號(hào)不一致,則觸發(fā)客戶端主動(dòng)去下載剛才被上傳的文件。
6.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述包含網(wǎng)絡(luò)同步客戶端模塊的進(jìn)程包括繪圖包和調(diào)度員界面以及其它需要網(wǎng)絡(luò)同步文件服務(wù)的進(jìn)程。
7.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述客戶端處理流程還包括以增量方式檢查文件一致性,然后下載;所述線程還會(huì)每隔一個(gè)小時(shí)把自己的內(nèi)存映像文件和服務(wù)器端的內(nèi)存映像文件進(jìn)行全局對(duì)比,檢查是否有不一致的文件,然后下載;所述增量方式即只檢查每次比對(duì)后新修改的內(nèi)容。
8.根據(jù)權(quán)利要求1所述的基于SVN的文件自動(dòng)網(wǎng)絡(luò)同步方法,其特征在于:所述客戶端還通過操作界面或者命令行方式進(jìn)行文件網(wǎng)絡(luò)保存,查看文件保存日志;下載指定文件的指定 版本,網(wǎng)絡(luò)刪除指定文件。
【文檔編號(hào)】H04L29/06GK103595707SQ201310488067
【公開日】2014年2月19日 申請(qǐng)日期:2013年10月17日 優(yōu)先權(quán)日:2013年10月17日
【發(fā)明者】朱廣名, 陳宏輝, 胡鐵斌, 鄒劍, 吳錫武, 李文朝, 任永偉, 吳海勇, 劉仲堯, 孔海濱 申請(qǐng)人:廣東電網(wǎng)公司茂名供電局