本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)同步方法。
背景技術(shù):
隨著經(jīng)濟(jì)與信息化建設(shè)的快速發(fā)展,集團(tuán)公司也迅猛地發(fā)展壯大,原來僅僅實(shí)現(xiàn)其集團(tuán)機(jī)關(guān)總部及直屬單位的辦公自動(dòng)化是不能滿足該集團(tuán)的需求,因此伴隨著全集團(tuán)實(shí)現(xiàn)辦公自動(dòng)化的同時(shí),產(chǎn)生了一個(gè)問題:集團(tuán)內(nèi)各分公司都要根據(jù)自身的業(yè)務(wù)特點(diǎn)搭建各自的系統(tǒng),這些系統(tǒng)都是相對(duì)獨(dú)立地運(yùn)行的,但是依據(jù)集團(tuán)的業(yè)務(wù)規(guī)則,各分公司系統(tǒng)之間要進(jìn)行一些信息的交互和共享基礎(chǔ)數(shù)據(jù),交互信息和共享數(shù)據(jù)的同步是分布部署的集團(tuán)化系統(tǒng)必須解決關(guān)鍵的問題之一,即如何選擇并控制相應(yīng)的數(shù)據(jù)同步到對(duì)應(yīng)的分公司服務(wù)器上其中還涉及到當(dāng)服務(wù)器重啟或者是網(wǎng)絡(luò)連接中斷時(shí),若產(chǎn)生了數(shù)據(jù)變動(dòng)且需要同步,這就需要如何進(jìn)行延時(shí)同步和解決同步時(shí)所造成的數(shù)據(jù)沖突。這是一個(gè)非常關(guān)鍵的問題。其中所涉及的信息并不僅僅是數(shù)據(jù)庫中的數(shù)據(jù)表紀(jì)錄,同時(shí)還包括磁盤中所存儲(chǔ)的文件信息(如審批文檔或圖表附件等),而且這些信息只能同步到指定的分公司服務(wù)器之上,其他不相關(guān)的分公司服務(wù)器不得同步,同時(shí)只有指定的數(shù)據(jù)才能進(jìn)行同步,不需要同步的數(shù)據(jù)一律不得同步。
以上不僅僅只是某一個(gè)集團(tuán)的需求,對(duì)于其他的集團(tuán)公司也存在相同的需求。集團(tuán)下屬的每個(gè)分公司都可能會(huì)有各自的運(yùn)行機(jī)制和管理機(jī)制,一般情況下都是相互獨(dú)立的,只有在某些特殊的時(shí)候,各個(gè)分公司之間才會(huì)有一些辦公信息的交互。這就產(chǎn)生了一個(gè)與本文研究?jī)?nèi)容一致的數(shù)據(jù)同步問題,即在集團(tuán)環(huán)境中各個(gè)分公司的獨(dú)立而又可相互聯(lián)系的系統(tǒng)之間的數(shù)據(jù)庫數(shù)據(jù)及磁盤數(shù)據(jù)如何進(jìn)行同步的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種數(shù)據(jù)同步方法,該方法實(shí)現(xiàn)了本地服務(wù)器在不上線或斷網(wǎng)情況下,進(jìn)行數(shù)據(jù)請(qǐng)求及保存的同步數(shù)據(jù),保證了數(shù)據(jù)同步共享,數(shù)據(jù)及時(shí)同步交互。
為解決上述技術(shù)問題,本發(fā)明所采取的技術(shù)方案是:一種數(shù)據(jù)同步方法,各個(gè)服務(wù)器之間均相互通信連接,包括以下步驟:
1)前期數(shù)據(jù)處理,進(jìn)行業(yè)務(wù)邏輯處理,并為同步接口準(zhǔn)備數(shù)據(jù),待同步的服務(wù)器訪問地址;
2)檢查并鎖定數(shù)據(jù),檢查待鎖定本地?cái)?shù)據(jù)以及相關(guān)的網(wǎng)絡(luò)數(shù)據(jù),若存在數(shù)據(jù)項(xiàng)被其他操作鎖定,則返回,否則立即鎖定傳入接口的所有數(shù)據(jù)項(xiàng),鎖定的數(shù)據(jù)項(xiàng)會(huì)在待同步的各服務(wù)器上進(jìn)行同步鎖定,防止其他操作修改這些數(shù)據(jù),此步驟中的檢查鎖定數(shù)據(jù)主要是針對(duì)數(shù)據(jù)的修改與刪除操作,而新增操作不需要這一步;
3)本地?cái)?shù)據(jù)操作,在本地?cái)?shù)據(jù)庫進(jìn)行數(shù)據(jù)的業(yè)務(wù)檢查、修改、刪除操作以及本地文件的新建、修改保存、刪除操作;
4)網(wǎng)絡(luò)數(shù)據(jù)同步并解鎖,將對(duì)本地?cái)?shù)據(jù)庫的修改操作及相關(guān)文件的操作跟待同步的服務(wù)器進(jìn)行同步,然后解鎖先前鎖定的數(shù)據(jù),同樣的,對(duì)于新增操作也不需要解鎖,此步驟中的解鎖也是主要針對(duì)數(shù)據(jù)的修改與刪除操作;
5)當(dāng)本地服務(wù)器不在線或斷網(wǎng)時(shí),待同步的服務(wù)器需等本地服務(wù)器上線后再進(jìn)行數(shù)據(jù)同步,本地服務(wù)器上線時(shí),進(jìn)行數(shù)據(jù)更新,檢查同步指令,并鎖定服務(wù)器,進(jìn)行各個(gè)服務(wù)器之間的數(shù)據(jù)同步操作。
進(jìn)一步優(yōu)化的技術(shù)方案為所述步驟5)中當(dāng)本地服務(wù)器不在線或斷網(wǎng)時(shí),待同步的服務(wù)器需等本地服務(wù)器上線后再進(jìn)行數(shù)據(jù)同步,其包括以下步驟:
1)待同步服務(wù)器的新增操作,直接給本地服務(wù)器發(fā)送同步要數(shù)據(jù)信息并等待接收?qǐng)?zhí)行結(jié)果,由于本地服務(wù)器不在線,此時(shí)執(zhí)行結(jié)果的反饋不到待服務(wù)器,那么相當(dāng)于這次同步?jīng)]有完成,此時(shí)就可以把這條同步的相關(guān)信息全部保存下來,等待本地服務(wù)器上線再次進(jìn)行同步;
2)待同步服務(wù)器的修改和刪除操作,首先向本地服務(wù)器發(fā)送送鎖定對(duì)應(yīng)數(shù)據(jù)的消息然后等待反饋信息,如果反饋信息中沒有鎖定失敗的結(jié)果,并且本地服務(wù)器沒有反饋信息,即本地服務(wù)器不在線,此時(shí)將這條同步的相關(guān)信息全部保存下來,等待本地服務(wù)器上線再次進(jìn)行同步。
進(jìn)一步優(yōu)化的技術(shù)方案為所述步驟5)中本地服務(wù)器上線時(shí),進(jìn)行數(shù)據(jù)更新,檢查同步指令,并鎖定服務(wù)器,進(jìn)行各個(gè)服務(wù)器之間的數(shù)據(jù)同步操作,其包括以下步驟:
1)當(dāng)檢測(cè)到本地服務(wù)器由下線狀態(tài)轉(zhuǎn)變成上線狀態(tài)時(shí),鎖定本服務(wù)器,禁止相關(guān)的操作;
2)由本服務(wù)器向其他各個(gè)服務(wù)器廣播一條本服務(wù)器已經(jīng)上線并請(qǐng)求數(shù)據(jù)同步的消息;
3)讀取本地未完成的同步數(shù)據(jù)以及網(wǎng)絡(luò)上未完成的同步數(shù)據(jù),并進(jìn)行各個(gè)服務(wù)器之間的數(shù)據(jù)同步操作;
4)當(dāng)所有數(shù)據(jù)同步完成后,解除鎖定。
采用上述技術(shù)方案所產(chǎn)生的有益效果在于:本發(fā)明同根據(jù)對(duì)應(yīng)的系統(tǒng)部署分析得出在數(shù)據(jù)進(jìn)行同步交互時(shí)所有可能產(chǎn)生的情況,并且針對(duì)每種情況,都給出相應(yīng)的處理過程流程,實(shí)現(xiàn)了面向業(yè)務(wù)規(guī)則的分布式數(shù)據(jù)同步方法,可解決集團(tuán)內(nèi)各分公司分散部署的應(yīng)用系統(tǒng)之間的信息通暢交流和共享所涉及到的問題,促進(jìn)在集團(tuán)內(nèi)使其數(shù)據(jù)和信息的利益最大化。
附圖說明
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
圖1是本發(fā)明實(shí)施例的服務(wù)器互聯(lián)示意圖;
圖2是本發(fā)明實(shí)施例待同步服務(wù)器處理流程圖;
圖3是本發(fā)明實(shí)施例本地服務(wù)器上線后處理流程圖。
具體實(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ù)的范圍。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是本發(fā)明還可以采用其他不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類似推廣,因此本發(fā)明不受下面公開的具體實(shí)施例的限制。
如圖1所示,以四個(gè)公司服務(wù)器為例,每個(gè)分公司的服務(wù)器之間都可以互聯(lián),并且每個(gè)分公司的服務(wù)器之間沒有主從之分,相互之間都是平等的。當(dāng)每個(gè)分公司服務(wù)器之間連接正常,沒有任何障礙,服務(wù)器都工作正常,此時(shí)各個(gè)服務(wù)器之間都按照常規(guī)方式來處理數(shù)據(jù)同步的問題;其具體的處理過程包括以下步驟:
1)前期數(shù)據(jù)處理,進(jìn)行業(yè)務(wù)邏輯處理,并為同步接口準(zhǔn)備數(shù)據(jù),待同步的服務(wù)器訪問地址;
2)檢查并鎖定數(shù)據(jù),檢查待鎖定本地?cái)?shù)據(jù)以及相關(guān)的網(wǎng)絡(luò)數(shù)據(jù),若存在數(shù)據(jù)項(xiàng)被其他操作鎖定,則返回,否則立即鎖定傳入接口的所有數(shù)據(jù)項(xiàng),鎖定的數(shù)據(jù)項(xiàng)會(huì)在待同步的各服務(wù)器上進(jìn)行同步鎖定,防止其他操作修改這些數(shù)據(jù),此步驟中的檢查鎖定數(shù)據(jù)主要是針對(duì)數(shù)據(jù)的修改與刪除操作,而新增操作不需要這一步;
3)本地?cái)?shù)據(jù)操作,在本地?cái)?shù)據(jù)庫進(jìn)行數(shù)據(jù)的業(yè)務(wù)檢查、修改、刪除操作以及本地文件的新建、修改保存、刪除操作;
4)網(wǎng)絡(luò)數(shù)據(jù)同步并解鎖,將對(duì)本地?cái)?shù)據(jù)庫的修改操作及相關(guān)文件的操作跟待同步的服務(wù)器進(jìn)行同步,然后解鎖先前鎖定的數(shù)據(jù),同樣的,對(duì)于新增操作也不需要解鎖,此步驟中的解鎖也是主要針對(duì)數(shù)據(jù)的修改與刪除操作;
當(dāng)某一個(gè)分公司的服務(wù)器不在線(本章節(jié)中的不在線主要指服務(wù)器斷網(wǎng),或者因停電或其他原因關(guān)機(jī)),此時(shí)若有其他服務(wù)器要與該服務(wù)器進(jìn)行數(shù)據(jù)交互,這是外部特殊處理情況。如果該服務(wù)器僅僅只是斷網(wǎng),如果此時(shí)需要同其他服務(wù)器進(jìn)行數(shù)據(jù)交互,這是內(nèi)部特殊處理的一種情況。如果該服務(wù)器上線此處與之前提到的不在線對(duì)應(yīng),主要指服務(wù)器網(wǎng)絡(luò)恢復(fù),或者是重新啟動(dòng)),此時(shí)服務(wù)器需要進(jìn)行相關(guān)處理,這也是一種特殊的處理情況。
1、當(dāng)某一分公司服務(wù)器不在線時(shí),即該服務(wù)器斷網(wǎng)或者因停電或其他原因關(guān)機(jī),在這里主要分析外部處理的過程,如圖2所示,其處理過程包括以下步驟:
1)待同步服務(wù)器的新增操作,直接給本地服務(wù)器發(fā)送同步要數(shù)據(jù)信息并等待接收?qǐng)?zhí)行結(jié)果,由于本地服務(wù)器不在線,此時(shí)執(zhí)行結(jié)果的反饋不到待服務(wù)器,那么相當(dāng)于這次同步?jīng)]有完成,此時(shí)就可以把這條同步的相關(guān)信息全部保存下來,等待本地服務(wù)器上線再次進(jìn)行同步;
2)待同步服務(wù)器的修改和刪除操作,首先向本地服務(wù)器發(fā)送送鎖定對(duì)應(yīng)數(shù)據(jù)的消息然后等待反饋信息,如果反饋信息中沒有鎖定失敗的結(jié)果,并且本地服務(wù)器沒有反饋信息,即本地服務(wù)器不在線,此時(shí)將這條同步的相關(guān)信息全部保存下來,等待本地服務(wù)器上線再次進(jìn)行同步。
2、當(dāng)某一個(gè)服務(wù)器不在線后再次上線時(shí),如圖3所示,其服務(wù)器上線后的處理過程包括以下步驟:
1)當(dāng)檢測(cè)到本地服務(wù)器由下線狀態(tài)轉(zhuǎn)變成上線狀態(tài)時(shí),鎖定本服務(wù)器,禁止相關(guān)的操作;
2)由本服務(wù)器向其他各個(gè)服務(wù)器廣播一條本服務(wù)器已經(jīng)上線并請(qǐng)求數(shù)據(jù)同步的消息;
3)讀取本地未完成的同步數(shù)據(jù)以及網(wǎng)絡(luò)上未完成的同步數(shù)據(jù),并進(jìn)行各個(gè)服務(wù)器之間的數(shù)據(jù)同步操作;
4)當(dāng)所有數(shù)據(jù)同步完成后,解除鎖定。