一種客戶端數(shù)據(jù)同步方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種客戶端數(shù)據(jù)同步方法及系統(tǒng)。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)連接模式中,客戶端/服務(wù)器架構(gòu)的網(wǎng)絡(luò)是不同于對(duì)等網(wǎng)的另一種形式的網(wǎng)絡(luò)。在客戶端/服務(wù)器構(gòu)架中,服務(wù)器是網(wǎng)絡(luò)的核心,而客戶端是網(wǎng)絡(luò)的基礎(chǔ),客戶端依靠服務(wù)器獲得所需要的網(wǎng)絡(luò)資源,服務(wù)器為客戶端提供網(wǎng)絡(luò)必須的資源。目前,客戶端/服務(wù)器構(gòu)架在網(wǎng)絡(luò)中扮演了重要的角色,為人們提供豐富的服務(wù),比如地址本地管理,聊天記錄管理等等。
[0003]由于客戶端和服務(wù)器均存在數(shù)據(jù),系統(tǒng)需要進(jìn)行必要的數(shù)據(jù)同步?,F(xiàn)有的技術(shù)中,數(shù)據(jù)同步是根據(jù)時(shí)間戳和客戶端標(biāo)識(shí)將數(shù)據(jù)分割成不同的數(shù)據(jù)段,分別存儲(chǔ)于客戶端和服務(wù)器的庫中。在同步時(shí)傳輸整個(gè)數(shù)據(jù)段數(shù)據(jù)完成同步。
[0004]這樣就會(huì)產(chǎn)生如下缺點(diǎn):
[0005]1.數(shù)據(jù)根據(jù)時(shí)間戳和客戶端標(biāo)識(shí)分割并分別存儲(chǔ)于客戶端和服務(wù)器,數(shù)據(jù)存儲(chǔ)冗余大。
[0006]2.數(shù)據(jù)同步時(shí)傳輸整個(gè)數(shù)據(jù)段,傳輸過程需要占用網(wǎng)絡(luò)資源較大。
[0007]3.多客戶端同時(shí)更改同一數(shù)據(jù)時(shí)會(huì)發(fā)生沖突。
[0008]因此,如何設(shè)置合理同步方法,成為技術(shù)人員需要考慮。
【發(fā)明內(nèi)容】
[0009]本發(fā)明所要解決的技術(shù)問題是,提供了一種客戶端數(shù)據(jù)同步方法及系統(tǒng),能有效的避免多客戶端同時(shí)更改同一數(shù)據(jù)時(shí)產(chǎn)生的沖突,減少了網(wǎng)絡(luò)傳輸時(shí)占用的資源,同時(shí)有效的避免了冗余數(shù)據(jù),從而能更好地實(shí)現(xiàn)對(duì)客戶端數(shù)據(jù)的同步。
[0010]為解決上述技術(shù)問題,本發(fā)明提供了一種客戶端數(shù)據(jù)同步方法及系統(tǒng),其中,所述方法包括:
[0011]當(dāng)客戶端數(shù)據(jù)發(fā)生變更時(shí),客戶端將所述數(shù)據(jù)對(duì)應(yīng)的版本號(hào)加固定常數(shù)作為新版本號(hào),并向服務(wù)器發(fā)送向服務(wù)器提交變更后客戶端數(shù)據(jù)的請(qǐng)求,所述請(qǐng)求中包括變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào);
[0012]服務(wù)器接收到所述請(qǐng)求后,解析出變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào);并下載服務(wù)器最新數(shù)據(jù)所對(duì)應(yīng)的版本號(hào),與所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào)進(jìn)行比較;
[0013]當(dāng)所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào)比所述服務(wù)器數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)大或與之無對(duì)應(yīng),則發(fā)送應(yīng)答消息到客戶端,允許客戶端向服務(wù)器發(fā)送變更后的客戶端數(shù)據(jù)。
[0014]另外,本發(fā)明還提供了一種客戶端數(shù)據(jù)同步系統(tǒng),所述系統(tǒng)包括:
[0015]發(fā)送請(qǐng)求模塊,用于當(dāng)客戶端數(shù)據(jù)發(fā)生變更時(shí),客戶端將所述數(shù)據(jù)對(duì)應(yīng)的版本號(hào)加固定常數(shù)作為新版本號(hào),并向服務(wù)器發(fā)送請(qǐng)求,所述請(qǐng)求中包括變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào);
[0016]比較模塊,用于服務(wù)器接收到所述請(qǐng)求后,解析出變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào);并下載服務(wù)器最新數(shù)據(jù)所對(duì)應(yīng)的版本號(hào),與所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào)進(jìn)行比較;
[0017]確認(rèn)請(qǐng)求模塊,用于當(dāng)所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào)比所述服務(wù)器數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)大或與之無對(duì)應(yīng),則發(fā)送應(yīng)答消息到客戶端,允許客戶端向服務(wù)器發(fā)送變更后的客戶端數(shù)據(jù)。
[0018]上述技術(shù)方案具有如下有益效果:數(shù)據(jù)存儲(chǔ)方面:數(shù)據(jù)只存儲(chǔ)在服務(wù)器,所有數(shù)據(jù)以服務(wù)器為準(zhǔn),客戶端只存儲(chǔ)需要用的數(shù)據(jù),這樣就減少了冗余。數(shù)據(jù)傳輸資源方面:客戶端同步時(shí)只需要同步一段時(shí)間內(nèi)有變化的數(shù)據(jù),這樣就有效的減少了傳輸過程中所占用的網(wǎng)絡(luò)資源。數(shù)據(jù)準(zhǔn)確方面:同步時(shí)客戶端會(huì)比較數(shù)據(jù)版本,確定是否更新數(shù)據(jù),這樣就解決了多客戶端同時(shí)更改同一數(shù)據(jù)時(shí)會(huì)發(fā)生沖突。
【附圖說明】
[0019]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1為本發(fā)明實(shí)施例一種客戶端數(shù)據(jù)同步方法流程圖;
[0021]圖2為本發(fā)明實(shí)施例中異常數(shù)據(jù)處理流程圖;
[0022]圖3為本發(fā)明實(shí)施例中更新所述本地?cái)?shù)據(jù)流程圖;
[0023]圖4為本發(fā)明實(shí)施例一種客戶端數(shù)據(jù)同步系統(tǒng)流程圖;
[0024]圖5為本發(fā)明實(shí)施例中異常數(shù)據(jù)處理模塊流程圖;
[0025]圖6為本發(fā)明實(shí)施例中更新所述本地?cái)?shù)據(jù)模塊流程圖。
【具體實(shí)施方式】
[0026]下面將結(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ù)的范圍。
[0027]本發(fā)明的主要思想是:通過把發(fā)生變更的客戶端數(shù)據(jù)寫入緩存,再由緩存發(fā)送到服務(wù)器,所有數(shù)據(jù)以服務(wù)器為準(zhǔn),客戶端只存儲(chǔ)需要用的數(shù)據(jù),這樣就減少了冗余。具體為,在把數(shù)據(jù)寫入服務(wù)器時(shí),需要客戶端發(fā)送請(qǐng)求信號(hào),相應(yīng)的服務(wù)器應(yīng)答請(qǐng)求,這樣就解決了多客戶端同時(shí)更改同一數(shù)據(jù)時(shí)會(huì)發(fā)生沖突。并且在客戶端發(fā)送請(qǐng)求信號(hào)后,對(duì)數(shù)據(jù)的版本號(hào)進(jìn)行比較,這樣就能確定是否更新數(shù)據(jù),保證了客戶端存儲(chǔ)數(shù)據(jù)的正確性。這樣就能更好的實(shí)現(xiàn)客戶端數(shù)據(jù)的同步。
[0028]如圖1所示,為本發(fā)明實(shí)施例一種客戶端數(shù)據(jù)同步方法流程圖,所述方法包括:
[0029]101、當(dāng)客戶端數(shù)據(jù)發(fā)生變更時(shí),客戶端將所述數(shù)據(jù)對(duì)應(yīng)的版本號(hào)加固定常數(shù)作為新版本號(hào),并向服務(wù)器發(fā)送請(qǐng)求,所述請(qǐng)求中包括變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào);
[0030]102、服務(wù)器接收到所述請(qǐng)求后,解析出變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào);并下載服務(wù)器最新數(shù)據(jù)所對(duì)應(yīng)的版本號(hào),與所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào)進(jìn)行比較;
[0031]103、當(dāng)所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的新版本號(hào)比所述服務(wù)器數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)大或與之無對(duì)應(yīng),則發(fā)送應(yīng)答消息到客戶端,允許客戶端向服務(wù)器發(fā)送變更后的客戶端數(shù)據(jù)。
[0032]在步驟101中,當(dāng)客戶端數(shù)據(jù)發(fā)生變更時(shí),將所述客戶端數(shù)據(jù)對(duì)應(yīng)的版本號(hào)加固定常數(shù),也可以是對(duì)客戶端數(shù)據(jù)對(duì)應(yīng)的版本號(hào)做出其他有規(guī)律變更,方便對(duì)版本號(hào)進(jìn)行比較判斷即可。為了操作和使用的方便,本實(shí)施例中,
[0033]作為優(yōu)選,數(shù)據(jù)每發(fā)生一次變化,就需要對(duì)版本號(hào)進(jìn)行一次加I。這樣,即方便操作又方便在寫入服務(wù)器前用版本號(hào)進(jìn)行比較。其中,客戶端向服務(wù)器發(fā)起請(qǐng)求的目的是:將所述緩存內(nèi)的數(shù)據(jù)發(fā)送給所述服務(wù)器。
[0034]所述客戶端向服務(wù)器發(fā)送請(qǐng)求之前,還包括:所述客戶端將變更后的客戶端數(shù)據(jù)寫入緩存的步驟;
[0035]具體為把變更后的客戶端數(shù)據(jù)寫入緩存,而不是定時(shí)的把所有數(shù)據(jù)寫入緩存,這樣就可以減少緩存內(nèi)的存儲(chǔ)的數(shù)據(jù),從而有效的提高運(yùn)行的速度。
[0036]在步驟102中,服務(wù)器接收到所述請(qǐng)求后,從所述服務(wù)器下載最新數(shù)據(jù)所對(duì)應(yīng)的版本號(hào),與所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)進(jìn)行比較;在比較時(shí),用了版本號(hào)而沒有用數(shù)據(jù)進(jìn)行整體比較,這樣就有效的提高了比較的速度,從而大大的提高了工作效率。
[0037]在步驟103中,當(dāng)所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)比所述服務(wù)器數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)比大,或所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)在服務(wù)器數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)不存在,則所述服務(wù)器應(yīng)答所述客戶端發(fā)出的請(qǐng)求,這樣就有效的提高了服務(wù)器端存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性;
[0038]在步驟101中,客戶端向服務(wù)器發(fā)送提交數(shù)據(jù)的請(qǐng)求,與在步驟102中應(yīng)答所述客戶端發(fā)出的請(qǐng)求是對(duì)應(yīng)的,在提交數(shù)據(jù)前進(jìn)行請(qǐng)求和應(yīng)答可以有效的避免多客戶端同時(shí)更改服務(wù)器數(shù)據(jù)時(shí)發(fā)生的沖突,在請(qǐng)求和應(yīng)答之間對(duì)版本號(hào)進(jìn)行比較,確定是否更新數(shù)據(jù),這樣就可以大大提高存入數(shù)據(jù)的準(zhǔn)確性。
[0039]在步驟102之后,當(dāng)所述變更后的客戶端數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)比所述服務(wù)器最新數(shù)據(jù)所對(duì)應(yīng)的版本號(hào)小,則把所述變更后的客戶端數(shù)據(jù)判定為異常數(shù)據(jù),并將所述異常數(shù)據(jù)進(jìn)行處理。
[0040]其中,所述異常數(shù)據(jù)進(jìn)行處理之前先將異常數(shù)據(jù)存入異常表中,之后進(jìn)行異常數(shù)據(jù)的處理。如圖2所示,作為優(yōu)選,異常數(shù)據(jù)處理流程包括:
[0041]1021、讀取異常數(shù)據(jù)發(fā)送給服務(wù)器;
[0042]1022、服務(wù)器接收到異常數(shù)據(jù),并對(duì)其進(jìn)行檢查;
[0043]1023、當(dāng)服務(wù)器數(shù)據(jù)錯(cuò)誤,則服務(wù)器更新數(shù)據(jù),版本號(hào)設(shè)為收到變更后的客戶端數(shù)據(jù)版本號(hào);
[0044]當(dāng)變更后的客戶端數(shù)據(jù)錯(cuò)誤,則將服務(wù)器數(shù)據(jù)版本號(hào)設(shè)為比本地變更后的客戶端數(shù)據(jù)版本號(hào)大的版本號(hào);
[0045]1024、下次同步過程更新數(shù)據(jù)。
[0046]在步驟103之后還包括,客戶端向服務(wù)器發(fā)送變更后的客戶端數(shù)據(jù)的步驟,具體為:客戶端接收到