一種分布式數(shù)據(jù)同步系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫應(yīng)用技術(shù)領(lǐng)域,特別涉及一種分布式數(shù)據(jù)同步系統(tǒng)及方法。
【背景技術(shù)】
[0002]大型企業(yè)的不同分支機構(gòu)分布在不同的地區(qū),而現(xiàn)代企業(yè)都要求信息化統(tǒng)一管理?;诖艘螅壳巴ǔS袃煞N實現(xiàn)方案。一為單數(shù)據(jù)庫方式,即總公司和分支機構(gòu)都使用同一數(shù)據(jù)庫;二為多數(shù)據(jù)庫方式,即每個分支機構(gòu)都使用自己獨立的數(shù)據(jù)庫,再將分支機構(gòu)數(shù)據(jù)庫里的數(shù)據(jù)與總公司數(shù)據(jù)庫里的數(shù)據(jù)同步。
[0003]其中,單數(shù)據(jù)庫方式的優(yōu)點是數(shù)據(jù)及時,但缺點是一旦公網(wǎng)出現(xiàn)問題,將導(dǎo)致系統(tǒng)無法正常使用,并且所有的性能壓力全部集中在總公司方。多數(shù)據(jù)庫方式的優(yōu)點是不受公網(wǎng)情況影響,并且性能壓力分散在各個分支機構(gòu),缺點是總公司不能實時了解分支機構(gòu)的數(shù)據(jù),并且總公司與分支機構(gòu)的數(shù)據(jù)在公網(wǎng)同步面臨數(shù)據(jù)泄漏風(fēng)險。
【發(fā)明內(nèi)容】
[0004]本發(fā)明解決的問題在于提供一種分布式數(shù)據(jù)同步系統(tǒng)及方法,數(shù)據(jù)更新及時,且實現(xiàn)了壓力均衡,降低了對服務(wù)器的要求,減少了對服務(wù)器的成本投入,同時,數(shù)據(jù)傳輸量小,節(jié)約通信流量,減輕通信負擔(dān)。
[0005]為解決上述技術(shù)問題,本發(fā)明的實施方式提供了一種分布式數(shù)據(jù)同步方法,應(yīng)用于分布式數(shù)據(jù)同步系統(tǒng),所述分布式數(shù)據(jù)同步系統(tǒng)包含服務(wù)器總站與若干服務(wù)器子站;所有所述服務(wù)器子站分別與所述服務(wù)器總站通信連接;所述服務(wù)器總站為數(shù)據(jù)發(fā)送端,所述服務(wù)器子站為數(shù)據(jù)接收端;或者,所述服務(wù)器總站為數(shù)據(jù)接收端,所述服務(wù)器子站為數(shù)據(jù)發(fā)送端;
[0006]所述分布式數(shù)據(jù)同步方法包含以下步驟:
[0007]數(shù)據(jù)發(fā)送端實時檢測待同步的數(shù)據(jù)的狀態(tài),并僅將數(shù)據(jù)更新日志按照預(yù)設(shè)的數(shù)據(jù)格式發(fā)送至數(shù)據(jù)接收端;其中,所述待同步的數(shù)據(jù)包含若干數(shù)據(jù)項;所述數(shù)據(jù)更新日志中包含數(shù)據(jù)發(fā)送端中狀態(tài)更新的數(shù)據(jù)項;
[0008]所述數(shù)據(jù)接收端實時地接收來自所述數(shù)據(jù)發(fā)送端的數(shù)據(jù),并將所述數(shù)據(jù)更新日志中的數(shù)據(jù)項賦值給數(shù)據(jù)接收端中相應(yīng)的數(shù)據(jù)項,使數(shù)據(jù)接收端與數(shù)據(jù)發(fā)送端數(shù)據(jù)一致;其中,所述數(shù)據(jù)接收端的數(shù)據(jù)項與所述數(shù)據(jù)發(fā)送端的數(shù)據(jù)項一一對應(yīng)。
[0009]本發(fā)明的實施方式還提供了一種分布式數(shù)據(jù)同步系統(tǒng),所述分布式數(shù)據(jù)同步系統(tǒng)包含服務(wù)器總站與若干服務(wù)器子站;所有所述服務(wù)器子站分別與所述服務(wù)器總站通信連接;所述服務(wù)器總站為數(shù)據(jù)發(fā)送端,所述服務(wù)器子站為數(shù)據(jù)接收端;或者,所述服務(wù)器總站為數(shù)據(jù)接收端,所述服務(wù)器子站為數(shù)據(jù)發(fā)送端;
[0010]所述數(shù)據(jù)發(fā)送端,用于實時檢測待同步的數(shù)據(jù)的狀態(tài),并僅將數(shù)據(jù)更新日志按照預(yù)設(shè)的數(shù)據(jù)格式發(fā)送至數(shù)據(jù)接收端;其中,所述待同步的數(shù)據(jù)包含若干數(shù)據(jù)項;所述數(shù)據(jù)更新日志中包含數(shù)據(jù)發(fā)送端中狀態(tài)更新的數(shù)據(jù)項;[0011 ]所述數(shù)據(jù)接收端,用于實時地接收來自所述數(shù)據(jù)發(fā)送端的數(shù)據(jù),并將所述數(shù)據(jù)更新日志中的數(shù)據(jù)項賦值給數(shù)據(jù)接收端中相應(yīng)的數(shù)據(jù)項,使數(shù)據(jù)接收端與數(shù)據(jù)發(fā)送端數(shù)據(jù)一致;其中,所述數(shù)據(jù)接收端的數(shù)據(jù)項與所述數(shù)據(jù)發(fā)送端的數(shù)據(jù)項一一對應(yīng)。
[0012]本發(fā)明實施方式相對于現(xiàn)有技術(shù)而言,由于服務(wù)器總站可以實時地向服務(wù)器子站發(fā)送數(shù)據(jù),服務(wù)器子站也可以實時地向服務(wù)器總站發(fā)送數(shù)據(jù),這樣,無論服務(wù)器總站還是服務(wù)器子站數(shù)據(jù)更新都很及時,而且,由于服務(wù)器總站與各個服務(wù)器子站之間只將狀態(tài)更新的數(shù)據(jù)項發(fā)送至對方,即服務(wù)器總站與各個服務(wù)器子站之間只交互狀態(tài)更新的數(shù)據(jù),所以,即使服務(wù)器總站與各個服務(wù)器子站之間出現(xiàn)通信中斷,服務(wù)器總站與各個服務(wù)器子站將各自分攤一部分壓力,實現(xiàn)了壓力均衡,降低了對服務(wù)器的要求,減少了對服務(wù)器的成本投入;同時,由于服務(wù)器總站與各個服務(wù)器子站之間只交互狀態(tài)更新的數(shù)據(jù),數(shù)據(jù)傳輸量小,可以節(jié)約通信流量、減輕通信負擔(dān)。
[0013]進一步地,在所述數(shù)據(jù)發(fā)送端將所述數(shù)據(jù)更新日志按照預(yù)設(shè)的數(shù)據(jù)格式發(fā)送至數(shù)據(jù)接收端的步驟中,所述數(shù)據(jù)發(fā)送端將所有狀態(tài)更新的數(shù)據(jù)更新日志按照預(yù)先配置的數(shù)據(jù)格式逐一發(fā)送至所述數(shù)據(jù)接收端。通過分包單獨傳輸,降低了服務(wù)器子站對通信的速度和穩(wěn)定性要求,減少了對通信的成本投入。
[0014]進一步地,在所述數(shù)據(jù)發(fā)送端將所有數(shù)據(jù)更新日志按照預(yù)先配置的數(shù)據(jù)格式逐一發(fā)送至所述數(shù)據(jù)接收端的步驟中,所述數(shù)據(jù)發(fā)送端將所有數(shù)據(jù)更新日志分別進行加密后發(fā)送至所述數(shù)據(jù)接收端;在所述數(shù)據(jù)接收端實時地接收來自所述數(shù)據(jù)發(fā)送端的數(shù)據(jù),并將所述數(shù)據(jù)更新日志中的數(shù)據(jù)項賦值給數(shù)據(jù)接收端中相應(yīng)的數(shù)據(jù)項的步驟中,包含以下子步驟:所述數(shù)據(jù)接收端對接收的數(shù)據(jù)包進行解密,得到所述數(shù)據(jù)更新日志;所述數(shù)據(jù)接收端讀取解密后的所述數(shù)據(jù)更新日志;所述數(shù)據(jù)接收端執(zhí)行所述數(shù)據(jù)更新日志,使所述數(shù)據(jù)接收端與所述數(shù)據(jù)發(fā)送端中相應(yīng)的數(shù)據(jù)項一致。通過對發(fā)送的數(shù)據(jù)進行加密,可以確保發(fā)送的數(shù)據(jù)通過公網(wǎng)的傳輸安全性,因此節(jié)省了搭建VPN(虛擬專用網(wǎng)絡(luò))所需設(shè)備的成本投入。
[0015]進一步地,所述數(shù)據(jù)發(fā)送端將所有數(shù)據(jù)更新日志按照預(yù)先配置的數(shù)據(jù)格式逐一發(fā)送至所述數(shù)據(jù)接收端的步驟中,還包含以下步驟:將加密后的數(shù)據(jù)更新日志壓縮成數(shù)據(jù)包,并發(fā)送至所述數(shù)據(jù)接收端;在所述數(shù)據(jù)接收端對接收的數(shù)據(jù)包進行解密的步驟之前,包含以下步驟:所述數(shù)據(jù)接收端對接收的數(shù)據(jù)包進行解壓縮。對發(fā)送的數(shù)據(jù)進行壓縮后再進行傳輸,可以降低傳輸?shù)呢摀?dān),降低服務(wù)器子站對通信的速度和穩(wěn)定性要求。
[0016]進一步地,在所述數(shù)據(jù)接收端實時地接收來自所述數(shù)據(jù)發(fā)送端的數(shù)據(jù)的步驟中,包含以下步驟:記錄接收的數(shù)據(jù)包信息;其中,所述數(shù)據(jù)包信息包含接收端的數(shù)據(jù)請求標識ID、數(shù)據(jù)包數(shù)量、已接收的數(shù)據(jù)包序號;如果在所述數(shù)據(jù)接收端接收來自所述數(shù)據(jù)發(fā)送端的數(shù)據(jù)時發(fā)生數(shù)據(jù)傳輸中斷的情況,則所述數(shù)據(jù)接收端保存已接收的數(shù)據(jù),并在恢復(fù)數(shù)據(jù)傳輸后根據(jù)記錄的數(shù)據(jù)包信息繼續(xù)接收未接收的數(shù)據(jù)。在接收數(shù)據(jù)時,實時保存接收的數(shù)據(jù),并記錄接收的數(shù)據(jù)包信息,以避免發(fā)生數(shù)據(jù)傳輸中斷,并在恢復(fù)數(shù)據(jù)傳輸后根據(jù)記錄的數(shù)據(jù)包信息繼續(xù)接收未接收的數(shù)據(jù),即實現(xiàn)了斷點續(xù)傳功能,這樣,可以避免數(shù)據(jù)漏傳數(shù)據(jù)以及數(shù)據(jù)重復(fù)傳輸。
【附圖說明】
[0017]圖1是根據(jù)本發(fā)明第一實施方式中的分布式數(shù)據(jù)同步系統(tǒng)結(jié)構(gòu)框圖;
[0018]圖2是根據(jù)本發(fā)明第一實施方式的分布式數(shù)據(jù)同步方法流程圖;
[0019]圖3是根據(jù)本發(fā)明第二實施方式的分布式數(shù)據(jù)同步方法流程圖。
【具體實施方式】
[0020]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的各實施方式進行詳細的闡述。然而,本領(lǐng)域的普通技術(shù)人員可以理解,在本發(fā)明各實施方式中,為了使讀者更好地理解本申請而提出了許多技術(shù)細節(jié)。但是,即使沒有這些技術(shù)細節(jié)和基于以下各實施方式的種種變化和修改,也可以實現(xiàn)本申請各權(quán)利要求所要求保護的技術(shù)方案。
[0021]本發(fā)明的第一實施方式涉及一種分布式數(shù)據(jù)同步方法,應(yīng)用于分布式數(shù)據(jù)同步系統(tǒng)。在本實施方式中,分布式數(shù)據(jù)同步系統(tǒng),具體如圖1所示,包含服務(wù)器總站與若干服務(wù)器子站;所有服務(wù)器子站分別與服務(wù)器總站通信連接。比如,服務(wù)器總站可以用于管理總公司的數(shù)據(jù),各個服務(wù)器子站可以分別還用于管理總公司下屬的子公司的數(shù)據(jù)。而且,服務(wù)器總站可以為數(shù)據(jù)發(fā)送端,服務(wù)器子站為數(shù)據(jù)接收端,或者,服務(wù)器總站可以為數(shù)據(jù)接收端,月艮務(wù)器子站為數(shù)據(jù)發(fā)送端。即,服務(wù)器總站可以向服務(wù)器子站發(fā)送數(shù)據(jù),服務(wù)器子站也可以向服務(wù)器總站發(fā)送數(shù)據(jù)。
[0022]在本實施方式中,數(shù)據(jù)發(fā)送端實時檢測待同步的數(shù)據(jù)的狀態(tài),并僅將數(shù)據(jù)更新日志按照預(yù)設(shè)的數(shù)據(jù)格式發(fā)送至數(shù)據(jù)接收端;其中,待同步的數(shù)據(jù)包含若干數(shù)據(jù)項;數(shù)據(jù)更新日志中包含數(shù)據(jù)發(fā)送端中狀態(tài)更新的數(shù)據(jù)項。數(shù)據(jù)接收端實時地接收來自數(shù)據(jù)發(fā)送端的數(shù)據(jù),并將數(shù)據(jù)更新日志中的數(shù)據(jù)項賦值給數(shù)據(jù)接收端中相應(yīng)的數(shù)據(jù)項,使數(shù)據(jù)接收端與數(shù)據(jù)發(fā)送端數(shù)據(jù)一致,也就是,