本發(fā)明涉及數(shù)據(jù)庫數(shù)據(jù)同步技術(shù)領(lǐng)域,具體涉及一種用于數(shù)據(jù)同步的多級架構(gòu)、數(shù)據(jù)同步方法和故障處理方法。
背景技術(shù):
視頻會議系統(tǒng)一般包括核心數(shù)據(jù)庫和從屬數(shù)據(jù)庫,核心數(shù)據(jù)庫主要用于存儲核心業(yè)務(wù)的相關(guān)數(shù)據(jù),當(dāng)核心數(shù)據(jù)庫修改后,有些需要同步到從屬數(shù)據(jù)庫中。
核心數(shù)據(jù)庫的數(shù)據(jù)同步到從屬數(shù)據(jù)庫的架構(gòu)可以是待同步數(shù)據(jù)從核心數(shù)據(jù)庫對應(yīng)的服務(wù)器傳遞到其中一個從屬數(shù)據(jù)庫對應(yīng)的服務(wù)器然后依次傳遞給其他從屬數(shù)據(jù)庫對應(yīng)的服務(wù)器。但是這種數(shù)據(jù)同步架構(gòu)與對應(yīng)的數(shù)據(jù)同步方法,一旦其中一個傳遞鏈發(fā)生故障,將會導(dǎo)致待同步數(shù)據(jù)無法下傳,從而導(dǎo)致下級從屬數(shù)據(jù)庫無法完成數(shù)據(jù)同步。
因此,目前亟需一個能夠可靠完成核心數(shù)據(jù)庫修改數(shù)據(jù)向其他從屬數(shù)據(jù)庫同步的架構(gòu)以及對應(yīng)的數(shù)據(jù)同步方法。
技術(shù)實(shí)現(xiàn)要素:
因此,本發(fā)明要解決的技術(shù)問題在于現(xiàn)有用于將核心數(shù)據(jù)庫的數(shù)據(jù)向其他數(shù)據(jù)庫同步的架構(gòu)和方法可靠性低。
為此,本發(fā)明實(shí)施例提供了如下技術(shù)方案:
一種用于數(shù)據(jù)同步的多級架構(gòu),包括頂級域和多個依次連接的從級域,從級域中的第一級從級域與頂級域之間存在有數(shù)據(jù)下發(fā)鏈路,相鄰兩個從級域之間也存在有數(shù)據(jù)下發(fā)鏈路,待同步數(shù)據(jù)從頂級域向第一級從級域下發(fā),第一級從級域再將待同步數(shù)據(jù)下發(fā)給第二級從級域并逐級下發(fā);
每個從級域包括多個服務(wù)器,其中一個為主服務(wù)器,其他為從服務(wù)器,第一級從級域與頂級域之間的數(shù)據(jù)下發(fā)鏈路是設(shè)置在頂級域與第一級從級域的主服務(wù)器之間,其他相鄰兩個從級域之間的數(shù)據(jù)下發(fā)鏈路也是設(shè)置該兩個從級域的主服務(wù)器之間,每個從級域的主服務(wù)器與各從服務(wù)器之間分別設(shè)有數(shù)據(jù)同步鏈路,主服務(wù)器用于接收待同步數(shù)據(jù)并在其完成數(shù)據(jù)同步后將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給該從級域內(nèi)的各個從服務(wù)器,從服務(wù)器接收待同步數(shù)據(jù)并完成數(shù)據(jù)同步。
一種基于上述多級架構(gòu)的數(shù)據(jù)同步方法,包括如下步驟:
頂級域?qū)⒋綌?shù)據(jù)下發(fā)到其中一個從級域;
該從級域的主服務(wù)器接收待同步數(shù)據(jù)并完成同步;
主服務(wù)器將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給從服務(wù)器以完成從服務(wù)器的數(shù)據(jù)同步。
可選地,上述數(shù)據(jù)同步方法還包括如下步驟:
主服務(wù)器將待同步數(shù)據(jù)下發(fā)給下一個從級域。
可選地,上述頂級域?qū)⒋綌?shù)據(jù)下發(fā)到其中一個從級域的步驟包括:
頂級域獲取待同步數(shù)據(jù);
頂級域?qū)⒋綌?shù)據(jù)發(fā)布至頂級域的下發(fā)消息隊列中;
從級域通過訂閱頂級域的下發(fā)消息隊列中的消息獲取待同步數(shù)據(jù)。
可選地,上述從級域的主服務(wù)器接收待同步數(shù)據(jù)并完成同步的步驟之后,還包括:
主服務(wù)器向該從級域的通知消息隊列發(fā)送數(shù)據(jù)同步完成消息。
可選地,上述主服務(wù)器將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給從服務(wù)器以完成從服務(wù)器的數(shù)據(jù)同步的步驟包括:
主服務(wù)器向該從級域的同步消息隊列發(fā)送待同步數(shù)據(jù);
從服務(wù)器通過訂閱該從級域的同步消息隊列獲取待同步數(shù)據(jù)并完成數(shù)據(jù)同步。
可選地,上述從服務(wù)器通過訂閱該從級域的同步消息隊列獲取待同步數(shù)據(jù)并完成數(shù)據(jù)同步的步驟之后,還包括:
從服務(wù)器向該從級域的同步消息隊列發(fā)送數(shù)據(jù)同步完成消息;
主服務(wù)器通過該從級域的同步消息隊列獲取從服務(wù)器發(fā)送的數(shù)據(jù)同步完成消息;
主服務(wù)器在獲取了該從級域各個從服務(wù)器的數(shù)據(jù)同步完成消息后,將待同步數(shù)據(jù)發(fā)送到該從級域的下發(fā)消息隊列中,以供下一個從級域訂閱獲取待同步數(shù)據(jù)。
可選地,每個從級域均對應(yīng)一個唯一標(biāo)識符,與待同步數(shù)據(jù)同時下發(fā)的還有待同步從級域標(biāo)識符列表;上述頂級域?qū)⒋綌?shù)據(jù)和待同步從級域標(biāo)識符列表下發(fā)到其中一個從級域之后,還包括如下步驟:
從級域的主服務(wù)器判斷該從級域?qū)?yīng)的標(biāo)識符是否存在于其接收到的待同步從級域標(biāo)識符列表中;
如果否,則從級域的主服務(wù)器將其接收到的待同步數(shù)據(jù)和待同步從級域標(biāo)識符列表下發(fā)給下一個從級域。
可選地,上述方法還包括以下步驟:
如果從級域的主服務(wù)器判定該從級域?qū)?yīng)的標(biāo)識符存在于其接收到的待同步從級域標(biāo)識符列表中,則在該從級域完成數(shù)據(jù)同步后,刪除待同步從級域標(biāo)識符列表中該從級域?qū)?yīng)的標(biāo)識符;
主服務(wù)器判斷修改后的待同步從級域標(biāo)識符列表是否為空;
如果否,則將修改后的待同步從級域標(biāo)識符列表與待同步數(shù)據(jù)一起下發(fā)給下一個從級域。
可選地,上述在頂級域?qū)⒋綌?shù)據(jù)下發(fā)到其中一個從級域的步驟之前,還包括:
頂級域獲取待同步數(shù)據(jù);
頂級域為待同步數(shù)據(jù)分配版本號,版本號唯一且遞增。
可選地,上述從級域的主服務(wù)器接收到待同步數(shù)據(jù)并完成同步的步驟包括:
獲取上一次完成同步的數(shù)據(jù)版本號和當(dāng)前待同步數(shù)據(jù)版本號;
判斷當(dāng)前待同步數(shù)據(jù)的版本號是否是上一次同步的數(shù)據(jù)版本號的下一個;
如果否,則判斷當(dāng)前待同步數(shù)據(jù)的版本號是否大于上一次同步的數(shù)據(jù)版本號;
如果是,則主服務(wù)器請求頂級域重新下發(fā)上一次同步的數(shù)據(jù)版本號的下一個版本號對應(yīng)的待同步數(shù)據(jù),并完成同步;
完成當(dāng)前待同步數(shù)據(jù)的同步。
一種基于上述多級架構(gòu)和數(shù)據(jù)同步方法的故障處理方法,包括以下步驟:
當(dāng)其中一個從級域的主服務(wù)器出現(xiàn)故障,選定該從級域內(nèi)的一個從服務(wù)器作為新主服務(wù)器;
增加新主服務(wù)器與上一個從級域或者頂級域之間的數(shù)據(jù)下發(fā)鏈路,以使得上一個從級域或者頂級域能夠直接將待同步數(shù)據(jù)下發(fā)到新主服務(wù)器;
刪除從級域的原主服務(wù)器與下一個從級域之間的數(shù)據(jù)下發(fā)鏈路,相應(yīng)增加新主服務(wù)器與下一個從級域之間的數(shù)據(jù)下發(fā)鏈路;
將原主服務(wù)器修改為從服務(wù)器;
刪除原主服務(wù)器與各個從服務(wù)器之間的數(shù)據(jù)同步鏈路,相應(yīng)增加新主服務(wù)器與各個從服務(wù)器之間的數(shù)據(jù)同步鏈路。
本發(fā)明技術(shù)方案,具有如下優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供的用于數(shù)據(jù)同步的多級架構(gòu)、數(shù)據(jù)同步方法以及故障處理方法,每級從級域包括多個服務(wù)器,其中一個為主服務(wù)器,其他為從服務(wù)器。主服務(wù)器用于接收上級從級域或頂級域下發(fā)的待同步數(shù)據(jù)并在其完成數(shù)據(jù)同步后將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給該從級域內(nèi)的各個從服務(wù)器,以使得從服務(wù)器完成數(shù)據(jù)同步。本發(fā)明實(shí)施例中,主服務(wù)器不是固定不變的,每個從服務(wù)器都可以配置為主服務(wù)器,從而代替原主服務(wù)器來完成數(shù)據(jù)同步過程。因此,即使在數(shù)據(jù)同步過程中出現(xiàn)故障導(dǎo)致數(shù)據(jù)無法向下級下發(fā)或者主服務(wù)器無法將數(shù)據(jù)同步到同級的從服務(wù)器上時,就可以通過更換主服務(wù)器的方式來解決數(shù)據(jù)無法同步的問題,而不是需要找出具體的故障原因并消除故障后才能繼續(xù)進(jìn)行數(shù)據(jù)同步。
附圖說明
為了更清楚地說明本發(fā)明具體實(shí)施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實(shí)施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例1中用于數(shù)據(jù)同步的多級架構(gòu)結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例2中數(shù)據(jù)同步方法的流程圖;
圖3為本發(fā)明實(shí)施例2和3中數(shù)據(jù)同步方法的過程示意圖;
圖4為本發(fā)明實(shí)施例4中從級域的主服務(wù)器接收到待同步數(shù)據(jù)并完成同步過程的流程圖;
圖5為本發(fā)明實(shí)施例5中故障處理方法的示意圖。
具體實(shí)施方式
下面將結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
此外,下面所描述的本發(fā)明不同實(shí)施方式中所涉及的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互結(jié)合。
實(shí)施例1
如圖1所示,本實(shí)施例提供了一種用于數(shù)據(jù)同步的多級架構(gòu),包括頂級域和多個依次連接的從級域,待同步數(shù)據(jù)從頂級域向第一級從級域下發(fā),第一級從級域再將待同步數(shù)據(jù)下發(fā)給第二級從級域并逐級下發(fā)。具體地,第一級從級域與頂級域之間存在有數(shù)據(jù)下發(fā)鏈路,相鄰兩個從級域之間也存在有數(shù)據(jù)下發(fā)鏈路。
每個從級域包括多個服務(wù)器,其中一個為主服務(wù)器,其他為從服務(wù)器,主服務(wù)器用于接收待同步數(shù)據(jù)并在其完成數(shù)據(jù)同步后將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給該從級域內(nèi)的各個從服務(wù)器,從服務(wù)器接收待同步數(shù)據(jù)并完成數(shù)據(jù)同步。具體地,第一級從級域與頂級域之間的數(shù)據(jù)下發(fā)鏈路是設(shè)置在頂級域與第一級從級域的主服務(wù)器之間,其他相鄰兩個從級域之間的數(shù)據(jù)下發(fā)鏈路也是設(shè)置該兩個從級域的主服務(wù)器之間,每個從級域的主服務(wù)器與各從服務(wù)器之間也分別設(shè)有數(shù)據(jù)同步鏈路。
本實(shí)施例提供的用于數(shù)據(jù)同步的多級架構(gòu),每個從級域包括多個服務(wù)器,其中一個為主服務(wù)器,其他為從服務(wù)器。主服務(wù)器用于接收上一級從級域或頂級域下發(fā)的待同步數(shù)據(jù)并在其完成數(shù)據(jù)同步后將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給該從級域內(nèi)的各個從服務(wù)器,以使得從服務(wù)器完成數(shù)據(jù)同步。本實(shí)施例中,主服務(wù)器不是固定不變的,每個從服務(wù)器都可以配置為主服務(wù)器,從而代替原主服務(wù)器來完成數(shù)據(jù)同步過程。因此,即使在數(shù)據(jù)同步過程中出現(xiàn)故障導(dǎo)致數(shù)據(jù)無法向下級下發(fā)或者主服務(wù)器無法將數(shù)據(jù)同步到同級的從服務(wù)器上時,就可以通過更換主服務(wù)器的方式來解決數(shù)據(jù)無法同步的問題,而不是需要找出具體的故障原因并消除故障后才能繼續(xù)進(jìn)行數(shù)據(jù)同步。
實(shí)施例2
本實(shí)施例提供了一種數(shù)據(jù)同步方法,該數(shù)據(jù)同步方法基于上述實(shí)施例1所述的多級架構(gòu),如圖2和3所示,包括如下步驟:
S1:頂級域?qū)⒋綌?shù)據(jù)下發(fā)到其中一個從級域,該待同步數(shù)據(jù)可以是由頂級域產(chǎn)生的;
S2:該從級域的主服務(wù)器接收待同步數(shù)據(jù)并完成同步;
S3:主服務(wù)器將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給從服務(wù)器以完成從服務(wù)器的數(shù)據(jù)同步。
本實(shí)施例提供的數(shù)據(jù)同步方法,該方法是基于上述實(shí)施例1提供的多級架構(gòu),因此,相應(yīng)地該方法能夠可靠地完成頂級域待同步數(shù)據(jù)向下級從級域的同步。
具體地,該數(shù)據(jù)同步方法還包括如下步驟:
主服務(wù)器將待同步數(shù)據(jù)下發(fā)給下一個從級域,以實(shí)現(xiàn)待同步數(shù)據(jù)的逐級傳遞。
作為具體的實(shí)施方式,上述步驟S1,即頂級域?qū)⒋綌?shù)據(jù)下發(fā)到其中一個從級域的步驟包括:
首先,頂級域獲取待同步數(shù)據(jù),該待同步數(shù)據(jù)需要同步到下級從級域中;
然后,頂級域?qū)⒋綌?shù)據(jù)發(fā)布至頂級域的下發(fā)消息隊列中;
最后,從級域通過訂閱頂級域的下發(fā)消息隊列中的消息獲取待同步數(shù)據(jù),具體是由從級域中的主服務(wù)器來訂閱頂級域中核心服務(wù)器的下發(fā)消息隊列中的消息以獲取待同步數(shù)據(jù)。
作為具體的實(shí)施方式,上述步驟S2,即從級域的主服務(wù)器接收待同步數(shù)據(jù)并完成同步的步驟之后,還包括:
主服務(wù)器向該從級域的通知消息隊列發(fā)送數(shù)據(jù)同步完成消息。
具體地,上述步驟S3,即主服務(wù)器將待同步數(shù)據(jù)轉(zhuǎn)發(fā)給從服務(wù)器以完成從服務(wù)器的數(shù)據(jù)同步的步驟包括:
首先,主服務(wù)器向該從級域的同步消息隊列發(fā)送待同步數(shù)據(jù);
然后,從服務(wù)器通過訂閱該從級域的同步消息隊列獲取待同步數(shù)據(jù)并完成數(shù)據(jù)同步。
作為進(jìn)一步具體的實(shí)施方式,即從服務(wù)器通過訂閱該從級域的同步消息隊列獲取待同步數(shù)據(jù)并完成數(shù)據(jù)同步的步驟之后,還包括:
首先,從服務(wù)器向該從級域的同步消息隊列發(fā)送數(shù)據(jù)同步完成消息;
然后,主服務(wù)器通過該從級域的同步消息隊列獲取從服務(wù)器發(fā)送的數(shù)據(jù)同步完成消息;
最后,主服務(wù)器在獲取了該從級域中各個從服務(wù)器的數(shù)據(jù)同步完成消息后,將待同步數(shù)據(jù)發(fā)送到該從級域的下發(fā)消息隊列中,以供下一個從級域訂閱獲取待同步數(shù)據(jù)。
作為優(yōu)選的實(shí)施方式,每個從級域均對應(yīng)一個唯一標(biāo)識符,與待同步數(shù)據(jù)同時下發(fā)的還有待同步從級域標(biāo)識符列表,該待同步從級域標(biāo)識符列表中記錄的是需要進(jìn)行數(shù)據(jù)同步的從級域;頂級域?qū)⒋綌?shù)據(jù)和待同步從級域標(biāo)識符列表下發(fā)到其中一個從級域之后,還包括如下步驟:
從級域的主服務(wù)器判斷該從級域?qū)?yīng)的標(biāo)識符是否存在于其接收到的待同步從級域標(biāo)識符列表中;
如果否,則該從級域的主服務(wù)器將其接收到的待同步數(shù)據(jù)和待同步從級域標(biāo)識符列表下發(fā)給下一個從級域。
具體地,該數(shù)據(jù)同步方法還包括以下步驟:
如果從級域的主服務(wù)器判定該從級域?qū)?yīng)的標(biāo)識符存在于其接收到的待同步從級域標(biāo)識符列表中,則該從級域在按照上述步驟完成數(shù)據(jù)同步后,刪除待同步從級域標(biāo)識符列表中該從級域?qū)?yīng)的標(biāo)識符;
主服務(wù)器判斷修改后的待同步從級域標(biāo)識符列表是否為空;
如果否,則將修改后的待同步從級域標(biāo)識符列表與待同步數(shù)據(jù)一起下發(fā)給下一個從級域。
如果修改后的待同步從級域標(biāo)識符列表是空的,就不處理。
實(shí)施例3
如圖3所示,本實(shí)施例提供了一種數(shù)據(jù)同步方法,該方法同樣是基于上述實(shí)施例1提供的多級架構(gòu),本實(shí)施例采用消息隊列來實(shí)現(xiàn)同步消息的存儲、各級從級域通過訂閱上級從級域或頂級域消息隊列中存儲的消息來實(shí)現(xiàn)數(shù)據(jù)的逐級下發(fā)與同步,各級從級域內(nèi)的從服務(wù)器也是通過訂閱本級消息隊列中存儲的消息來實(shí)現(xiàn)數(shù)據(jù)同步的。為方便描述,本實(shí)施例中每級從級域僅設(shè)置三個服務(wù)器,其中一個為主服務(wù)器、其他為從服務(wù)器,該數(shù)據(jù)同步方法具體包括以下步驟:
1)頂級域業(yè)務(wù)修改數(shù)據(jù)庫后,如果需要通知下級從級域,則生成一條攜帶待同步數(shù)據(jù)和待同步從級域標(biāo)識符列表的消息,投遞到頂級域的通知消息隊列中。其中,待同步從級域標(biāo)識符列表中指定了需要進(jìn)行同步的從級域ID(即從級域?qū)?yīng)的唯一標(biāo)識符)。
2)頂級域Modb-core通過訂閱獲取到頂級域的通知消息隊列中存儲的消息。之后,先查找待同步從級域標(biāo)識符列表中是否存在有自己的唯一標(biāo)識符。如果有,則在本地數(shù)據(jù)庫完成數(shù)據(jù)同步,并從待同步從級域標(biāo)識符列表中刪除自身的唯一標(biāo)識符。刪除自身的唯一標(biāo)識符后,頂級域Modb-core需要判斷修改后的待同步從級域標(biāo)識符列表是否是空的,如果不為空,則將修改后的消息(包括待同步數(shù)據(jù)和修改后的待同步從級域標(biāo)識符列表)發(fā)布至頂級域的下發(fā)消息隊列中,等待下級從級域處理。本實(shí)施例中,由于是頂級域數(shù)據(jù)庫首先被修改,所以只用根據(jù)需要在下級從級域中進(jìn)行數(shù)據(jù)同步而不用在頂級域進(jìn)行數(shù)據(jù)同步,因此待同步從級域標(biāo)識符列表中是不包括頂級域自己的唯一標(biāo)識符的。
3)第一級從級域A的主服務(wù)器A1通過訂閱從頂級域的下發(fā)消息隊列得到包括待同步數(shù)據(jù)和修改后的待同步從級域標(biāo)識符列表的同步消息,根據(jù)待同步從級域標(biāo)識符列表判斷是否需要在本地執(zhí)行同步過程(即是否存在第一級從級域的唯一標(biāo)識符),如果不需要,直接下發(fā)至第二級從級域B。否則先在本地數(shù)據(jù)庫執(zhí)行數(shù)據(jù)同步,成功后向本級從級域的通知消息隊列發(fā)送消息通知業(yè)務(wù)數(shù)據(jù)產(chǎn)生了變更,即完成了數(shù)據(jù)同步。
4)第一級從級域A的主服務(wù)器A1向本級從級域的同步消息隊列發(fā)送需要進(jìn)行數(shù)據(jù)同步的消息(該消息中包括待同步數(shù)據(jù)),以通知本級從級域A的從服務(wù)器A2、從服務(wù)器A3進(jìn)行數(shù)據(jù)同步。
5)從服務(wù)器A2和A3分別通過訂閱本級從級域的同步消息隊列獲取同步消息,同步完成后向本級從級域的同步消息隊列發(fā)送同步完成消息,從而主服務(wù)器A1可以通過本級從級域的同步消息隊列來判斷從服務(wù)器A2和A3是否完成了數(shù)據(jù)同步。
6)主服務(wù)器A1在確認(rèn)本級所有服務(wù)器(包括從服務(wù)器A2和A3、主服務(wù)器A1自身,主服務(wù)器A1自身是否完成了數(shù)據(jù)同步是通過本級從級域的通知消息隊列來確認(rèn)的)均同步成功后,刪除待同步從級域標(biāo)識符列表中的本級從級域ID,然后判斷待同步從級域標(biāo)識符列表是否為空,如果為空不處理,如果不為空將修改后的消息(包括待同步數(shù)據(jù)和修改后的待同步從級域標(biāo)識符列表)發(fā)送至本級從級域的下發(fā)消息隊列中,等待下級從級域處理。
第二級從級域B的同步過程同上述第3-6步。其他的下級從級域也依次執(zhí)行上述第3-6步。
實(shí)施例4
由于每次頂級域業(yè)務(wù)修改數(shù)據(jù)庫后,各級需要同步的從級域都要進(jìn)行一次數(shù)據(jù)同步,因此,隨著同步次數(shù)的增加,有些從級域可能會出現(xiàn)一次或多次未能完成同步過程的情況,而如果不采取有效措施來避免這種漏同步現(xiàn)象,將會導(dǎo)致數(shù)據(jù)不一致,甚至數(shù)據(jù)混亂。
為解決上述問題,本實(shí)施例提供了一種數(shù)據(jù)同步方法,該方法也是基于上述實(shí)施例1提供的多級架構(gòu),該數(shù)據(jù)同步方法與上述實(shí)施例2和3的區(qū)別在于:增加了版本號控制。
本實(shí)施例提供的數(shù)據(jù)同步方法中,在頂級域?qū)⒋綌?shù)據(jù)下發(fā)到其中一個從級域的步驟之前,還包括:
首先,頂級域獲取待同步數(shù)據(jù);
然后,頂級域為待同步數(shù)據(jù)分配版本號,該版本號唯一且遞增。該版本號可以存儲于與該待同步數(shù)據(jù)對應(yīng)的待同步從級域標(biāo)識符列表中。
相應(yīng)地,如圖4所示,從級域的主服務(wù)器接收到待同步數(shù)據(jù)并完成同步的步驟包括:
S41:獲取上一次完成同步的數(shù)據(jù)版本號和當(dāng)前待同步數(shù)據(jù)版本號;
S42:判斷當(dāng)前待同步數(shù)據(jù)的版本號是否是上一次同步的數(shù)據(jù)版本號的下一個;
S43:如果否,則判斷當(dāng)前待同步數(shù)據(jù)的版本號是否大于上一次同步的數(shù)據(jù)版本號;
S44:如果是,則主服務(wù)器請求頂級域重新下發(fā)上一次同步的數(shù)據(jù)版本號的下一個版本號對應(yīng)的待同步數(shù)據(jù),并完成同步;
S45:最后,完成當(dāng)前待同步數(shù)據(jù)的同步。
如果當(dāng)前待同步數(shù)據(jù)的版本號是上一次同步的數(shù)據(jù)版本號的下一個,則直接完成當(dāng)前待同步數(shù)據(jù)的同步。
而如果,當(dāng)前待同步數(shù)據(jù)的版本號小于等于上一次同步的數(shù)據(jù)版本號,則不作處理,以避免重復(fù)執(zhí)行同步過程。
本實(shí)施例提供的數(shù)據(jù)同步方法,通過以上步驟可以避免部分從級域的服務(wù)器因同步消息丟失或者處理異常等原因從而導(dǎo)致未能成功同步的情況出現(xiàn),進(jìn)而保證數(shù)據(jù)一致性和完整性。
對于在某些次數(shù)據(jù)同步過程中不需要進(jìn)行數(shù)據(jù)同步的從級域,作為一個可選的實(shí)施方式,在其主服務(wù)器接收到待同步從級域標(biāo)識符列表后根據(jù)其中的待同步數(shù)據(jù)版本號對應(yīng)修改已完成數(shù)據(jù)同步的版本號,以在下一次數(shù)據(jù)同步過程中,根據(jù)該已完成數(shù)據(jù)同步的版本號確定該從級域是否出現(xiàn)數(shù)據(jù)漏同步的情況。
實(shí)施例5
如圖5所示,本實(shí)施例提供了一種基于上述實(shí)施例1-3提供的故障處理方法,包括以下步驟:
1)當(dāng)其中一個從級域的主服務(wù)器出現(xiàn)故障,選定該從級域內(nèi)的一個從服務(wù)器作為新主服務(wù)器。例如,第一級從級域A中主服務(wù)器A1出現(xiàn)故障,則選擇從服務(wù)器A2作為新主服務(wù)器。
2)增加新主服務(wù)器與上一級從級域或者頂級域之間的數(shù)據(jù)下發(fā)鏈路L4,以使得上一級從級域或者頂級域能夠直接將待同步數(shù)據(jù)下發(fā)到新主服務(wù)器。新主服務(wù)器A2通過訂閱頂級域的下發(fā)消息隊列得到同步消息。
3)刪除該從級域的原主服務(wù)器與下一級從級域之間的數(shù)據(jù)下發(fā)鏈路L8,相應(yīng)增加新主服務(wù)器與下一級從級域之間的數(shù)據(jù)下發(fā)鏈路L9和L5,即在新主服務(wù)器A2獲取同步消息后(且確認(rèn)本級所有服務(wù)器均同步完成后),由新主服務(wù)器A2將同步消息發(fā)送至本級從級域的下發(fā)消息隊列中。
4)將原主服務(wù)器修改為從服務(wù)器;
5)刪除原主服務(wù)器與各個從服務(wù)器之間的數(shù)據(jù)同步鏈路L3、L6,相應(yīng)增加新主服務(wù)器與各個從服務(wù)器之間的數(shù)據(jù)同步鏈路L7和L5′以及L10,即在新主服務(wù)器A2獲取同步消息后,由新主服務(wù)器A2將需要進(jìn)行數(shù)據(jù)同步的消息(該消息中包括待同步數(shù)據(jù))發(fā)送給本級從級域的同步消息隊列中,以通知本級從級域A的從服務(wù)器A3、從服務(wù)器A1進(jìn)行數(shù)據(jù)同步。
作為本實(shí)施例的優(yōu)選實(shí)施方式,首先修改第二級從級域B的主服務(wù)器B1的配置,然后修改第一級從級域A的服務(wù)器A1的配置,再然后修改第一級從級域A的服務(wù)器A3的配置,最后修改第一級從級域A的服務(wù)器A2的配置。
顯然,上述實(shí)施例僅僅是為清楚地說明所作的舉例,而并非對實(shí)施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實(shí)施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發(fā)明創(chuàng)造的保護(hù)范圍之中。