本發(fā)明涉及一種通信、網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)同步系統(tǒng)及數(shù)據(jù)同步方法。
背景技術(shù):
現(xiàn)有技術(shù)中,跨區(qū)域的數(shù)據(jù)傳輸通過主服務(wù)器按既定周期向從服務(wù)器傳輸數(shù)據(jù)實現(xiàn)。從服務(wù)器接收主服務(wù)發(fā)送的數(shù)據(jù)后,將覆蓋原有存儲數(shù)據(jù)。因此,若數(shù)據(jù)量非常大時,跨區(qū)域數(shù)據(jù)同步就無法做到實時,數(shù)據(jù)分塊同步難以劃分,同步過程中也會出現(xiàn)錯誤導(dǎo)致數(shù)據(jù)丟失等情況。另一方面,主服務(wù)器主動發(fā)送變化數(shù)據(jù)是一個推送的過程,客戶端是否正常接收無法判斷,因此主服務(wù)器一直發(fā)送會浪費大量的資源。
因此本領(lǐng)域技術(shù)人員致力于開發(fā)一種可使主服務(wù)器和從服務(wù)器數(shù)據(jù)同步及時的系統(tǒng)及方法。
技術(shù)實現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種可使主服務(wù)器和從服務(wù)器數(shù)據(jù)同步及時的系統(tǒng)及方法。
為實現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)同步系統(tǒng),包括:
主服務(wù)器:用于存儲數(shù)據(jù),記錄數(shù)據(jù)變化日志;
至少一個解析服務(wù)器:用于監(jiān)聽主服務(wù)器日志是否發(fā)生變化,若變化,則拉取變化內(nèi)容存儲于解析服務(wù)器的內(nèi)存中,當解析服務(wù)器的內(nèi)存達到閾值時,分塊寫入磁盤;
至少一個從服務(wù)器:用于監(jiān)聽解析服務(wù)器的內(nèi)存或磁盤中是否有數(shù)據(jù),若有數(shù)據(jù)且沒有同步過,就從數(shù)據(jù)起點開始同步數(shù)據(jù);若以前同步過數(shù)據(jù)就從上次同步的位置開始同步,同步邏輯處理完成后提交同步確認,并記錄下同步到的位置。
較佳的,數(shù)據(jù)同步系統(tǒng)還包括:
容災(zāi)報警系統(tǒng):用于監(jiān)聽所述主服務(wù)器,解析服務(wù)器,從服務(wù)器之間的心跳;當服務(wù)器之間心跳無法連通時,存活端會繼續(xù)進行心跳嘗試,若嘗試次數(shù)至預(yù)設(shè)的最大值任無法連通就去掉這個節(jié)點,中斷后續(xù)流程并發(fā)送報警;
容災(zāi)服務(wù)器:當數(shù)據(jù)同步過程中后續(xù)處理流程出現(xiàn)錯誤,或者規(guī)則發(fā)生變化時,可更改同步位置重新同步數(shù)據(jù)。
本發(fā)明還提供了一種數(shù)據(jù)同步方法,包括以下步驟:
1)設(shè)置日志格式和解析服務(wù)器id;設(shè)置要解析的數(shù)據(jù)和主服務(wù)器;設(shè)置主服務(wù)器監(jiān)聽間隔時長和解析服務(wù)器;
2)監(jiān)聽主服務(wù)器日志;
3)判斷主服務(wù)器日志是否發(fā)生變化:若主服務(wù)器日志發(fā)生變化,則拉取變化內(nèi)容存儲于解析服務(wù)器的內(nèi)存中,當解析服務(wù)器的內(nèi)存達到閾值時,分塊寫入磁盤;
4)監(jiān)聽解析服務(wù)器;
5)當解析服務(wù)器的內(nèi)存或磁盤中有數(shù)據(jù)且沒有同步過,就使從服務(wù)器從數(shù)據(jù)起點開始同步數(shù)據(jù);若以前同步過數(shù)據(jù)就使從服務(wù)器從上次同步的位置開始同步;
6)同步邏輯處理完成后提交同步確認,并記錄下同步到的位置。
較佳的,數(shù)據(jù)同步方法還包括以下步驟:
7)監(jiān)聽所述主服務(wù)器,解析服務(wù)器,從服務(wù)器之間的心跳:當服務(wù)器之間心跳無法連通時,存活端會繼續(xù)進行心跳嘗試,若嘗試次數(shù)至預(yù)設(shè)的最大值任無法連通就去掉這個節(jié)點,中斷后續(xù)流程并發(fā)送報警;
8)容災(zāi)服務(wù):當數(shù)據(jù)同步過程中后續(xù)處理流程出現(xiàn)錯誤,或者規(guī)則發(fā)生變化時,可更改同步位置重新同步數(shù)據(jù)。
本發(fā)明的有益效果是:
(1)本發(fā)明的解析服務(wù)器可以對自己關(guān)注的數(shù)據(jù)進行配置,并不需要同步所有數(shù)據(jù)。
(2)同步過程中實時記錄同步的位置,當系統(tǒng)出現(xiàn)故障時不至于丟數(shù)據(jù);當同步操作有誤時,可以修改數(shù)據(jù)同步起始點重新同步數(shù)據(jù)。
(3)一個解析服務(wù)器可配置不同的從服務(wù)器并互不干擾,可以實現(xiàn)多份數(shù)據(jù)同時同步。
(4)容災(zāi)服務(wù)器會及時發(fā)現(xiàn)故障節(jié)點,移除節(jié)點,并發(fā)送報警,不會出現(xiàn)通信資源浪費的情況;當節(jié)點修復(fù)后會從中斷點繼續(xù)開始同步。
附圖說明
圖1是本發(fā)明一具體實施方式的結(jié)構(gòu)示意圖。
圖2是本發(fā)明一具體實施方式的流程圖之一。
圖3是本發(fā)明一具體實施方式的流程圖之一。
圖4是本發(fā)明一具體實施方式的流程圖之一。
圖5是本發(fā)明一具體實施方式的流程圖之一。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步說明:
如圖1所示,一種數(shù)據(jù)同步系統(tǒng),包括:
主服務(wù)器:用于存儲數(shù)據(jù),記錄數(shù)據(jù)變化日志;
多個解析服務(wù)器:用于監(jiān)聽主服務(wù)器日志是否發(fā)生變化,若變化,則拉取變化內(nèi)容存儲于解析服務(wù)器的內(nèi)存中,當解析服務(wù)器的內(nèi)存達到閾值時,分塊寫入磁盤;
從服務(wù)器,分別對應(yīng)一個或多個解析服務(wù)器:用于監(jiān)聽解析服務(wù)器的內(nèi)存或磁盤中是否有數(shù)據(jù),從服務(wù)器發(fā)起請求并攜帶同步的位置,初始狀態(tài)下同步位置為0,已經(jīng)同步過數(shù)據(jù)則獲取記錄同步位置的文件作為參數(shù)傳給解析服務(wù)器。解析服務(wù)器接收到數(shù)據(jù),查找相應(yīng)的數(shù)據(jù)塊和位置,如果有新數(shù)據(jù)則返回從服務(wù)器一次拉取條數(shù)的數(shù)據(jù),從服務(wù)器進行相關(guān)邏輯處理后向解析服務(wù)器提交確認,確認之后從服務(wù)器記錄同步過來新的位置。然后不斷重復(fù)此操作。若有數(shù)據(jù)且沒有同步過,就從數(shù)據(jù)起點開始同步數(shù)據(jù);若以前同步過數(shù)據(jù)就從上次同步的位置開始同步,同步邏輯處理完成后提交同步確認,并記錄下同步到的位置。
容災(zāi)報警系統(tǒng):用于監(jiān)聽所述主服務(wù)器,解析服務(wù)器,從服務(wù)器之間的心跳;當服務(wù)器之間心跳無法連通時,存活端會繼續(xù)進行心跳嘗試,若嘗試次數(shù)至預(yù)設(shè)的最大值任無法連通就去掉這個節(jié)點,中斷后續(xù)流程并發(fā)送報警;
容災(zāi)服務(wù)器:當數(shù)據(jù)同步過程中后續(xù)處理流程出現(xiàn)錯誤,或者規(guī)則發(fā)生變化時,可更改同步位置重新同步數(shù)據(jù)。
如圖1所示,可將主服務(wù)器的數(shù)據(jù)區(qū)分為若干數(shù)據(jù)模塊,系統(tǒng)設(shè)置與數(shù)據(jù)模塊對應(yīng)的解析服務(wù)器,從而實現(xiàn)解析不同的數(shù)據(jù)模塊,進一步提高數(shù)據(jù)同步的效率。相應(yīng)的,某一從服務(wù)器可能只關(guān)心某一個或幾個數(shù)據(jù)模塊,因此,該從服務(wù)器只需要監(jiān)聽與其關(guān)心的數(shù)據(jù)模塊對應(yīng)的解析服務(wù)器即可,從而進一步提高數(shù)據(jù)同步的效率。
如圖2至圖5所示,基于上述發(fā)明構(gòu)思,相應(yīng)的,本發(fā)明還提供了一種數(shù)據(jù)同步方法,包括以下步驟:
1)設(shè)置日志格式和解析服務(wù)器id;設(shè)置要解析的數(shù)據(jù)和主服務(wù)器;設(shè)置主服務(wù)器監(jiān)聽間隔時長和解析服務(wù)器;將主服務(wù)器的數(shù)據(jù)設(shè)置為多個數(shù)據(jù)模塊。
2)監(jiān)聽主服務(wù)器日志。解析服務(wù)器監(jiān)聽方式只需要在主服務(wù)器開通一個監(jiān)聽的線程,占用資源少,主服務(wù)器主要用于提供各種數(shù)據(jù)服務(wù),如果其他程序占用資源太多會導(dǎo)致主服務(wù)器的性能受到影響。
3)判斷主服務(wù)器日志是否發(fā)生變化:若主服務(wù)器日志發(fā)生變化,則拉取變化內(nèi)容存儲于與變化內(nèi)容所在數(shù)據(jù)模塊對應(yīng)的解析服務(wù)器的內(nèi)存中,當內(nèi)存通道達到一定閾值的時候,會將內(nèi)存中的數(shù)據(jù)寫入磁盤中,并且按順序?qū)懭氡WC同步位置的連續(xù)性。
4)監(jiān)聽解析服務(wù)器;
5)當解析服務(wù)器的內(nèi)存或磁盤中有數(shù)據(jù)且沒有同步過,就使從服務(wù)器從數(shù)據(jù)起點開始同步數(shù)據(jù);若以前同步過數(shù)據(jù)就使從服務(wù)器從上次同步的位置開始同步;從服務(wù)器去拉取數(shù)據(jù)時,先去解析服務(wù)器查找上次同步的位置,如果上次同步的位置數(shù)據(jù)存儲在磁盤中則從磁盤同步,如果在內(nèi)存中則從內(nèi)存中同步。
6)同步邏輯處理完成后提交同步確認,并記錄下同步到的位置。
同時,該方法還包括以下步驟:
7)監(jiān)聽所述主服務(wù)器,解析服務(wù)器,從服務(wù)器之間的心跳:當服務(wù)器之間心跳無法連通時,存活端會繼續(xù)進行心跳嘗試,若嘗試次數(shù)至預(yù)設(shè)的最大值任無法連通就去掉這個節(jié)點,中斷后續(xù)流程并發(fā)送報警;
8)容災(zāi)服務(wù):當數(shù)據(jù)同步過程中后續(xù)處理流程出現(xiàn)錯誤,或者規(guī)則發(fā)生變化時,可更改同步位置重新同步數(shù)據(jù)。
因此,本發(fā)明中,解析服務(wù)器主動拉取的新數(shù)據(jù)會追加到解析服務(wù)器的老數(shù)據(jù)之后并記錄位置,不用進行數(shù)據(jù)對比,位置的變化會直接方便從服務(wù)器監(jiān)聽,且無論從服務(wù)器同步的數(shù)據(jù)快慢和同步的位置是否一致都不會影響數(shù)據(jù)的一致性。解析服務(wù)器不需要從新發(fā)送數(shù)據(jù),從服務(wù)器會每隔一段時間來監(jiān)聽數(shù)據(jù)是否變化,間隔時間可以自行設(shè)置。只判斷上次同步到的位置是否是最新的位置,如果是最新位置則沒有數(shù)據(jù),如果不是最新位置則同步數(shù)據(jù)。
顯然,本發(fā)明可以根據(jù)自身的需求同步,同步的速度和頻率都可以配置,達到自由配置和按需取數(shù)據(jù)。
以上詳細描述了本發(fā)明的較佳具體實施例。應(yīng)當理解,本領(lǐng)域的普通技術(shù)人員無需創(chuàng)造性勞動就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實驗可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護范圍內(nèi)。