技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)保障技術(shù)領(lǐng)域,具體涉及一種實(shí)現(xiàn)數(shù)據(jù)一致性保障的方法、裝置及系統(tǒng)。
背景技術(shù):
近年來(lái),隨著各種IT系統(tǒng)的不斷發(fā)展,用戶和業(yè)務(wù)規(guī)模的不斷加大,越來(lái)越多的數(shù)據(jù)需要在多個(gè)系統(tǒng)之間共享,而且不同系統(tǒng)之間的數(shù)據(jù)訪問(wèn)特性不同:有需要提供批量訪問(wèn)的,有需要提供短時(shí)延實(shí)時(shí)訪問(wèn)的,諸如此類(lèi)。為滿足各種業(yè)務(wù)需要,需要將相同的數(shù)據(jù)在多個(gè)系統(tǒng)存放,以保證各個(gè)系統(tǒng)的高性能訪問(wèn),因此,如何實(shí)現(xiàn)存放于多個(gè)系統(tǒng)中相同數(shù)據(jù)的一致性即同步已經(jīng)成為目前IT分布式系統(tǒng)建設(shè)的嚴(yán)峻問(wèn)題。
目前,傳統(tǒng)IT系統(tǒng)主要通過(guò)數(shù)據(jù)變更消息/文件同步方式,進(jìn)行多個(gè)系統(tǒng)間數(shù)據(jù)的同步,具體實(shí)現(xiàn)方式可如附圖1所示,包括:
步驟11,初始化時(shí),所有系統(tǒng)(包括數(shù)據(jù)的發(fā)布方和接收方)停止對(duì)外服務(wù)和數(shù)據(jù)變更,進(jìn)行全量即全部數(shù)據(jù)同步。
由于系統(tǒng)處于工作狀態(tài)時(shí),各系統(tǒng)中的數(shù)據(jù)處于不斷變化狀態(tài),導(dǎo)致無(wú)法實(shí)時(shí)比對(duì)得出差異數(shù)據(jù),因此現(xiàn)有技術(shù)通常通過(guò)將當(dāng)前全量數(shù)據(jù)最新值(由于數(shù)據(jù)處于不斷變化中,任何時(shí)刻都無(wú)法取得數(shù)據(jù)的最終值,只能獲取到全量數(shù)據(jù)導(dǎo)出時(shí)刻的數(shù)據(jù)的最新取值,即為當(dāng)前全量數(shù)據(jù)最新值,僅表示導(dǎo)出時(shí)刻的全量數(shù)據(jù)快照)作為增量的方式更新到數(shù)據(jù)接收方,以達(dá)到數(shù)據(jù)一致性恢復(fù)的目的。
步驟12,當(dāng)數(shù)據(jù)發(fā)布方發(fā)生數(shù)據(jù)變化時(shí),如數(shù)據(jù)的版本發(fā)生更新,數(shù)據(jù)發(fā)布方將數(shù)據(jù)變化日志通過(guò)消息或文件方式按照相應(yīng)的順序發(fā)給數(shù)據(jù)接收方進(jìn)行處理;
步驟13,數(shù)據(jù)接收方接收到數(shù)據(jù)變更消息或文件,按照消息或文件中的序號(hào)順序先后進(jìn)行數(shù)據(jù)更新,實(shí)現(xiàn)與數(shù)據(jù)發(fā)布方之間的數(shù)據(jù)同步,并返回處理結(jié)果。
由于傳輸和處理存在遺漏可能,故現(xiàn)有技術(shù)需要定期進(jìn)行數(shù)據(jù)一致性檢查,并按照檢查結(jié)果更新存在差異的接收方數(shù)據(jù)。
現(xiàn)有技術(shù)在數(shù)據(jù)發(fā)布方數(shù)據(jù)修改之后,需要立即完成數(shù)據(jù)發(fā)布方和接收方之間的數(shù)據(jù)同步,否則,系統(tǒng)獲取的數(shù)據(jù)就不準(zhǔn)確,因此,對(duì)數(shù)據(jù)發(fā)布方和數(shù)據(jù)接收方的系統(tǒng)響應(yīng)要求較高。而且,現(xiàn)有技術(shù)在實(shí)際應(yīng)用過(guò)程中,如果數(shù)據(jù)發(fā)布方或接收方發(fā)生問(wèn)題,系統(tǒng)恢復(fù)時(shí)會(huì)產(chǎn)生大量數(shù)據(jù)同步請(qǐng)求,會(huì)造成數(shù)據(jù)發(fā)布方嚴(yán)重性能瓶頸。另外,現(xiàn)有技術(shù)中一旦發(fā)現(xiàn)數(shù)據(jù)發(fā)布方和接收方數(shù)據(jù)不一致情形,必須清空數(shù)據(jù)接收方所有數(shù)據(jù),重新從數(shù)據(jù)發(fā)布方獲取最新數(shù)據(jù)。
基于上述現(xiàn)有技術(shù)所存在的問(wèn)題,導(dǎo)致現(xiàn)有數(shù)據(jù)一致性技術(shù)方案,無(wú)法提供高效、實(shí)用的數(shù)據(jù)一致性保障機(jī)制。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)所存在的技術(shù)問(wèn)題,提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障方法、裝置及系統(tǒng),從而提供了一種高效、實(shí)用的數(shù)據(jù)一致性保障機(jī)制。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供方案如下:
本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障方法,所述方法應(yīng)用于一數(shù)據(jù)系統(tǒng)中,所述數(shù)據(jù)系統(tǒng)中包括一數(shù)據(jù)發(fā)布方和至少一個(gè)數(shù)據(jù)接收方;所述方法包括:
當(dāng)數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
數(shù)據(jù)接收方接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
優(yōu)選的,所述方法在數(shù)據(jù)接收方將所述數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)之前還包括:
數(shù)據(jù)發(fā)布方記錄所述第一數(shù)據(jù)更新后的版本信息;
數(shù)據(jù)發(fā)布方向數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知,所述通知中包括所述第一數(shù)據(jù)更新后的版本信息和所述第一數(shù)的據(jù)標(biāo)識(shí)信息。
優(yōu)選的,所述數(shù)據(jù)發(fā)布方向數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知包括:
所述數(shù)據(jù)發(fā)布方向訂閱了所述第一數(shù)據(jù)更新后的版本信息的數(shù)據(jù)接收方發(fā)送所述數(shù)據(jù)更新通知。
優(yōu)選的,所述數(shù)據(jù)更新通知中還包括:
數(shù)據(jù)發(fā)布方中所述第一數(shù)據(jù)所屬的數(shù)據(jù)分區(qū)的版本信息,所述數(shù)據(jù)分區(qū)的版本信息中包括數(shù)據(jù)分區(qū)中保存的全部數(shù)據(jù)的最高版本信息和/或最低版本信息,所述數(shù)據(jù)分區(qū)用于保存與所述第一數(shù)據(jù)具有業(yè)務(wù)關(guān)聯(lián)性的所有數(shù)據(jù);
所述方法在數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息之前還包括:
當(dāng)數(shù)據(jù)接收方保存的所述第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)分區(qū)的版本信息中的最低版本信息或者高于所述數(shù)據(jù)分區(qū)的版本信息中最高版本信息時(shí),數(shù)據(jù)接收方將保存的所述第一數(shù)據(jù)所在數(shù)據(jù)分區(qū)內(nèi)的全部數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。
本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障裝置,所述裝置應(yīng)用于一數(shù)據(jù)系統(tǒng)中,所述數(shù)據(jù)系統(tǒng)中包括一數(shù)據(jù)發(fā)布方和至少一個(gè)所述裝置;所述裝置包括:
發(fā)送模塊,用于當(dāng)所述裝置保存的失效數(shù)據(jù)被訪問(wèn)時(shí),向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)所述裝置所保存的第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),所述裝置將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
處理模塊,用于接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
優(yōu)選的,所述實(shí)現(xiàn)數(shù)據(jù)一致性保障裝置還包括:
接收模塊,用于接收所述數(shù)據(jù)發(fā)布方發(fā)送的數(shù)據(jù)更新通知,所述通知中包括所述第一數(shù)據(jù)更新后的版本信息和所述第一數(shù)據(jù)的標(biāo)識(shí)信息。
優(yōu)選的,所述接收模塊接收的數(shù)據(jù)更新通知中還包括:數(shù)據(jù)發(fā)布方中所述第一數(shù)據(jù)所屬的數(shù)據(jù)分區(qū)的版本信息,所述數(shù)據(jù)分區(qū)的版本信息中包括數(shù)據(jù)分區(qū)中保存的全部數(shù)據(jù)的最高版本信息和/或最低版本信息,所述數(shù)據(jù)分區(qū)用于保存與所述第一數(shù)據(jù)具有業(yè)務(wù)關(guān)聯(lián)性的所有數(shù)據(jù);
所述處理模塊還用于:當(dāng)所述裝置保存的所述第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)分區(qū)的版本信息中的最低版本信息或者高于所述數(shù)據(jù)分區(qū)的版本信息中最高版本信息時(shí),將保存的所述第一數(shù)據(jù)所在數(shù)據(jù)分區(qū)內(nèi)的全部數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。
本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障裝置,所述裝置應(yīng)用于一數(shù)據(jù)系統(tǒng)中,所述數(shù)據(jù)系統(tǒng)中包括一所述裝置和至少一個(gè)數(shù)據(jù)接收方;所述裝置包括:
接收模塊,用于接收數(shù)據(jù)接收方發(fā)送的請(qǐng)求信息,所述請(qǐng)求信息是當(dāng)所述數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),所述數(shù)據(jù)接收方所發(fā)送的,所述請(qǐng)求信息用于獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)所述數(shù)據(jù)接收方所保存的第一數(shù)據(jù)的版本信息,低于所述裝置發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
發(fā)送模塊,用于向所述數(shù)據(jù)接收方發(fā)送所述失效數(shù)據(jù)的最新版本,以用于所述數(shù)據(jù)接收方接收并保存所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
優(yōu)選的,所述實(shí)現(xiàn)數(shù)據(jù)一致性保障裝置還包括:
記錄模塊,用于記錄所述第一數(shù)據(jù)更新后的版本信息;
所述發(fā)送模塊,還用于向所述數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知,所述通知中包括所述第一數(shù)據(jù)更新后的版本信息和所述第一數(shù)據(jù)標(biāo)識(shí)信息。
本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障系統(tǒng),所述系統(tǒng)中包括一數(shù)據(jù)發(fā)布方和至少一個(gè)數(shù)據(jù)接收方;
所述數(shù)據(jù)接收方包括:
發(fā)送模塊,用于當(dāng)所述數(shù)據(jù)接收方保存的失效數(shù)據(jù)被訪問(wèn)時(shí),向所述數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)所述數(shù)據(jù)接收方所保存的第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),所述數(shù)據(jù)接收方將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
處理模塊,用于接收并保存所述數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù);
所述數(shù)據(jù)發(fā)布方包括:
接收模塊,用于接收所述數(shù)據(jù)接收方發(fā)送的請(qǐng)求信息;
發(fā)送模塊,用于向所述數(shù)據(jù)接收方發(fā)送所述失效數(shù)據(jù)的最新版本。
從以上所述可以看出,本發(fā)明提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障方法、裝置及系統(tǒng),通過(guò)當(dāng)數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);數(shù)據(jù)接收方接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。從而提供了一種高效、實(shí)用的數(shù)據(jù)一致性保障機(jī)制。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)具體實(shí)現(xiàn)過(guò)程示意圖;
圖2為本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障方法具體實(shí)現(xiàn)過(guò)程示意圖一;
圖3為本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障方法中數(shù)據(jù)分區(qū)版本信息示意圖;
圖4為本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障方法具體實(shí)現(xiàn)過(guò)程示意圖一;
圖5為本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障系統(tǒng)結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障裝置即數(shù)據(jù)接收方結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障裝置即數(shù)據(jù)發(fā)布方結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障方法,該方法應(yīng)用于一數(shù)據(jù)系統(tǒng)中,所述數(shù)據(jù)系統(tǒng)中包括一數(shù)據(jù)發(fā)布方和至少一個(gè)數(shù)據(jù)接收方。
如附圖2所示,該方法具體可以包括:
步驟201,當(dāng)數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述數(shù)據(jù)更新后的版本信息時(shí),將所述數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
步驟202,數(shù)據(jù)接收方接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
本發(fā)明實(shí)施例提供上述方法,可以有效地實(shí)現(xiàn)數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)發(fā)布方和數(shù)據(jù)接收方之間數(shù)據(jù)的一致性。
本發(fā)明實(shí)施例中,將數(shù)據(jù)發(fā)布方以及數(shù)據(jù)接收方的職責(zé)進(jìn)行分解,其中,數(shù)據(jù)發(fā)布方負(fù)責(zé)數(shù)據(jù)通知管理,而數(shù)據(jù)接收方負(fù)責(zé)數(shù)據(jù)訪問(wèn)管理。
數(shù)據(jù)發(fā)布方所負(fù)責(zé)的數(shù)據(jù)通知管理具體可以體現(xiàn)在數(shù)據(jù)發(fā)布方負(fù)責(zé)管理數(shù)據(jù)版本信息的記錄,以及負(fù)責(zé)在數(shù)據(jù)版本信息發(fā)生變更時(shí),向數(shù)據(jù)接收方發(fā)送更新通知,即本發(fā)明實(shí)施例所涉及的數(shù)據(jù)發(fā)布方具體可以涉及以下操作:
記錄數(shù)據(jù)更新后的版本信息;
向數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知,所述通知中包括數(shù)據(jù)更新后的版本信息和數(shù)據(jù)的標(biāo)識(shí)信息。
由于本發(fā)明實(shí)施例中包括至少一個(gè)數(shù)據(jù)接收方,因此,數(shù)據(jù)發(fā)布方可只向事先訂閱了數(shù)據(jù)更新通知的數(shù)據(jù)接收方,或者,數(shù)據(jù)發(fā)布方也向可數(shù)據(jù)系統(tǒng)內(nèi)的全部數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知。
對(duì)于事先訂閱了數(shù)據(jù)更新通知的數(shù)據(jù)接收方,可基于數(shù)據(jù)更新通知中包括的數(shù)據(jù)標(biāo)識(shí)信息,獲取數(shù)據(jù)接收方保存的相應(yīng)數(shù)據(jù)以及該數(shù)據(jù)的版本信息。
而對(duì)于沒(méi)有事先訂閱數(shù)據(jù)更新通知的數(shù)據(jù)接收方,在接收到數(shù)據(jù)更新通知時(shí),同樣可以基于數(shù)據(jù)標(biāo)識(shí)信息,進(jìn)行對(duì)應(yīng)數(shù)據(jù)的查找,如果沒(méi)有找到相應(yīng)的數(shù)據(jù),則該數(shù)據(jù)接收方可拋棄即無(wú)視該數(shù)據(jù)更新通知。
另外,本發(fā)明實(shí)施例所涉及的數(shù)據(jù)發(fā)布方,在接收到數(shù)據(jù)接收方發(fā)送的、用于獲取失效數(shù)據(jù)的最新版本信息的請(qǐng)求信息時(shí),還可向數(shù)據(jù)接收方發(fā)送所述失效數(shù)據(jù)的最新版本,以便數(shù)據(jù)接收方保存并更新失效數(shù)據(jù),并將失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
本發(fā)明實(shí)施例中,數(shù)據(jù)接收方所負(fù)責(zé)的數(shù)據(jù)訪問(wèn)管理具體可以體現(xiàn)在,數(shù)據(jù)接收方可根據(jù)數(shù)據(jù)發(fā)布方發(fā)送數(shù)據(jù)更新通知,判定自身保存的數(shù)據(jù)是否有效,并可進(jìn)行標(biāo)識(shí)。當(dāng)數(shù)據(jù)接收方中失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以請(qǐng)求該失效數(shù)據(jù)的最新版本。
具體的,當(dāng)數(shù)據(jù)接收方接收到數(shù)據(jù)發(fā)布方所發(fā)送的數(shù)據(jù)更新通知后,會(huì)基于數(shù)據(jù)更新通知中包括的數(shù)據(jù)更新后的版本信息和數(shù)據(jù)的標(biāo)識(shí)信息,判定自身保存的數(shù)據(jù)是否失效。如果數(shù)據(jù)接收方所保存的一數(shù)據(jù)的版本信息,低于數(shù)據(jù)發(fā)布方發(fā)送的數(shù)據(jù)更新后的版本信息,則數(shù)據(jù)接收方可將該數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。這里,數(shù)據(jù)接收方可以根據(jù)接收的數(shù)據(jù)的標(biāo)識(shí)信息,獲取自身保存的相應(yīng)數(shù)據(jù)及其版本信息。
但是,本發(fā)明實(shí)施例為了避免再次出現(xiàn)現(xiàn)有技術(shù)中,數(shù)據(jù)發(fā)布方數(shù)據(jù)修改之后,需要立即完成數(shù)據(jù)發(fā)布方和接收方之間的數(shù)據(jù)同步而導(dǎo)致對(duì)數(shù)據(jù)發(fā)布方和數(shù)據(jù)接收方的系統(tǒng)響應(yīng)要求較高,以及多個(gè)數(shù)據(jù)接收方同時(shí)向數(shù)據(jù)發(fā)布方發(fā)送大量同步請(qǐng)求信息而導(dǎo)致數(shù)據(jù)發(fā)布方嚴(yán)重性能瓶頸的問(wèn)題,本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障方法中,數(shù)據(jù)接收方并不是在根據(jù)數(shù)據(jù)發(fā)布方發(fā)送的數(shù)據(jù)更新通知,將自身保存的數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)后,立即向數(shù)據(jù)發(fā)布方發(fā)送用于獲取該失效數(shù)據(jù)最新版本的請(qǐng)求消息,而是在數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),才觸發(fā)數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方請(qǐng)求失效數(shù)據(jù)的最新版本的操作,從而避免了上述現(xiàn)有技術(shù)所存在的問(wèn)題的再次出現(xiàn)。
當(dāng)數(shù)據(jù)接收方接收到數(shù)據(jù)發(fā)布方發(fā)送的失效數(shù)據(jù)更新后的最新版本數(shù)據(jù)時(shí),更新自身保存的該失效數(shù)據(jù),同時(shí),將該失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
可見(jiàn),本發(fā)明實(shí)施例提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障方法中,當(dāng)數(shù)據(jù)發(fā)布方與數(shù)據(jù)接收方之間可通過(guò)對(duì)賬方式發(fā)現(xiàn)不一致的數(shù)據(jù),并且,數(shù)據(jù)接收方可通過(guò)置失效位的方式,對(duì)不一致的數(shù)據(jù)進(jìn)行標(biāo)識(shí),并當(dāng)失效數(shù)據(jù)被觸發(fā)時(shí)(即被訪問(wèn)、提取、讀寫(xiě)等),啟動(dòng)數(shù)據(jù)更新流程,以從數(shù)據(jù)發(fā)布方獲取失效數(shù)據(jù)的最新版本,從而避免數(shù)據(jù)更新操作對(duì)系統(tǒng)的影響,實(shí)現(xiàn)最小代價(jià)的實(shí)時(shí)數(shù)據(jù)一致性重置。并通過(guò)版本管理數(shù)據(jù)時(shí)效性,系統(tǒng)僅需要保證不漏處理即可,數(shù)據(jù)同步無(wú)需在數(shù)據(jù)變更后即時(shí)完成,僅需保證數(shù)據(jù)被系統(tǒng)使用時(shí)能夠完成同步即可。
另外,基于業(yè)務(wù)數(shù)據(jù)的關(guān)聯(lián)特性,為保證數(shù)據(jù)及時(shí)更新無(wú)誤,本發(fā)明實(shí)施例還可建立數(shù)據(jù)分區(qū)版本機(jī)制,將數(shù)據(jù)按照業(yè)務(wù)關(guān)聯(lián)性進(jìn)行數(shù)據(jù)分區(qū),并建立數(shù)據(jù)分區(qū)版本信息。
本發(fā)明實(shí)施例中,數(shù)據(jù)所屬的數(shù)據(jù)分區(qū)可以根據(jù)數(shù)據(jù)的主鍵(每條數(shù)據(jù)均具有唯一的主鍵,多條記錄間不會(huì)重復(fù),一般為手機(jī)號(hào)碼、用戶ID、客戶ID等)進(jìn)行散列劃分,例如通過(guò)hash算法等對(duì)主鍵進(jìn)行計(jì)算,并根據(jù)分區(qū)的數(shù)目取模,將所有數(shù)據(jù)均勻映射到多個(gè)分區(qū)中。
那么,當(dāng)數(shù)據(jù)發(fā)布方向數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知時(shí),除可發(fā)布數(shù)據(jù)發(fā)生變更的版本信息以及數(shù)據(jù)標(biāo)識(shí)之外,同時(shí)還可發(fā)布數(shù)據(jù)歸屬的數(shù)據(jù)分區(qū)的版本信息,數(shù)據(jù)分區(qū)的版本信息具體可為數(shù)據(jù)分區(qū)中所有數(shù)據(jù)的最高版本和/或最低版本。
舉例說(shuō)明,如附圖3所示,數(shù)據(jù)發(fā)布方一版本信息發(fā)生變化的數(shù)據(jù)所屬數(shù)據(jù)分區(qū)中,包括若干數(shù)據(jù)(數(shù)據(jù)A-I等),并且,上述數(shù)據(jù)記錄信息中分別包括數(shù)據(jù)對(duì)應(yīng)的版本信息,例如數(shù)據(jù)A的版本信息(Version)為:11011,數(shù)據(jù)I的Version為:11888,那么,在數(shù)據(jù)更新通知中,數(shù)據(jù)發(fā)布方中所述數(shù)據(jù)所屬的數(shù)據(jù)分區(qū)的版本信息即可為:數(shù)據(jù)A的Version11011(版本信息最低)和/或數(shù)據(jù)I的Version11888(版本信息最高)。
數(shù)據(jù)接收方在實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)管理時(shí),根據(jù)數(shù)據(jù)更新通知中包含的信息,即數(shù)據(jù)發(fā)布方中數(shù)據(jù)所屬數(shù)據(jù)分區(qū)的最高版本信息和最低版本信息,對(duì)自身保存的相應(yīng)數(shù)據(jù)進(jìn)行比對(duì)處理。
當(dāng)數(shù)據(jù)接收方保存的相應(yīng)數(shù)據(jù)的版本信息,低于數(shù)據(jù)發(fā)布方中該數(shù)據(jù)所屬數(shù)據(jù)分區(qū)的版本信息中的最低版本信息或者高于數(shù)據(jù)發(fā)布方中該數(shù)據(jù)所屬數(shù)據(jù)分區(qū)的版本信息中最高版本信息時(shí),數(shù)據(jù)接收方將保存的該數(shù)據(jù)所屬數(shù)據(jù)分區(qū)內(nèi)的全部數(shù)據(jù)(例如附圖3中的數(shù)據(jù)A-I)標(biāo)識(shí)為失效數(shù)據(jù)。
由于同一數(shù)據(jù)分區(qū)中數(shù)據(jù)的業(yè)務(wù)關(guān)聯(lián)性密切,如全部為同一客戶的不同數(shù)據(jù)記錄,通過(guò)上述本發(fā)明實(shí)施例提供的數(shù)據(jù)分區(qū)版本機(jī)制,可以有效保證在數(shù)據(jù)訪問(wèn)時(shí),訪問(wèn)的數(shù)據(jù)具有高度一致性。
可見(jiàn),本發(fā)明實(shí)施例提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障方法,通過(guò)對(duì)一點(diǎn)(數(shù)據(jù)發(fā)布方)數(shù)據(jù)修改,多點(diǎn)(至少一個(gè)數(shù)據(jù)接收方)數(shù)據(jù)同步查詢更新機(jī)制,具有簡(jiǎn)單、易行、容錯(cuò)率高等優(yōu)點(diǎn),該方法可為數(shù)據(jù)中心類(lèi)系統(tǒng)提供多點(diǎn)高性能訪問(wèn)提供了良好的數(shù)據(jù)復(fù)制、更新和一致性保障機(jī)制。例如在電信業(yè)務(wù)運(yùn)營(yíng)支撐系統(tǒng),通過(guò)本發(fā)明實(shí)施例提供的該方法,可以實(shí)現(xiàn)客戶、賬戶以及用戶三戶信息和訂購(gòu)關(guān)系等數(shù)據(jù)在營(yíng)業(yè)系統(tǒng)、帳務(wù)系統(tǒng)以及計(jì)費(fèi)系統(tǒng)的各個(gè)節(jié)點(diǎn)上數(shù)據(jù)的一致性,因此可以證明,本發(fā)明實(shí)施例提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障方法,具有應(yīng)用廣泛的特點(diǎn)。
而且,本發(fā)明實(shí)施例中所涉及的數(shù)據(jù)發(fā)布方和數(shù)據(jù)接收方,均可永久保存數(shù)據(jù),在數(shù)據(jù)同步時(shí),無(wú)需進(jìn)行數(shù)據(jù)清空處理。
下面,對(duì)本發(fā)明實(shí)施例提供的數(shù)據(jù)一致性保障方法的一個(gè)具體實(shí)施例的實(shí)現(xiàn)過(guò)程進(jìn)行詳盡的描述。
附圖4所示,該過(guò)程具體可以包括:
步驟41,數(shù)據(jù)發(fā)布方記錄數(shù)據(jù)更新后的版本信息。
當(dāng)數(shù)據(jù)發(fā)布方所保存的一數(shù)據(jù)發(fā)生版本信息變更時(shí),數(shù)據(jù)發(fā)布方在實(shí)現(xiàn)自身數(shù)據(jù)更新的同時(shí),記錄該數(shù)據(jù)更新后的版本信息。
步驟42,數(shù)據(jù)發(fā)布方向數(shù)據(jù)接收方發(fā)送數(shù)據(jù)更新通知。
該數(shù)據(jù)更新通知中,具體可以包括數(shù)據(jù)更新后的版本信息,以及該數(shù)據(jù)的標(biāo)識(shí)信息。
進(jìn)一步的,該數(shù)據(jù)更新通知中,還可以包括該數(shù)據(jù)所屬數(shù)據(jù)分區(qū)中的版本信息。
步驟43,數(shù)據(jù)接收方進(jìn)行數(shù)據(jù)版本信息比對(duì)處理。
具體的,數(shù)據(jù)接收方在接收到數(shù)據(jù)發(fā)布方發(fā)送的數(shù)據(jù)更新通知后,可基于數(shù)據(jù)更新通知中的數(shù)據(jù)標(biāo)識(shí)信息,獲取自身保存的對(duì)應(yīng)數(shù)據(jù)及其版本信息,并將自身保存的該數(shù)據(jù)的版本信息,與數(shù)據(jù)更新通知中包括的該數(shù)據(jù)最新的版本信息進(jìn)行比對(duì)處理。
如果數(shù)據(jù)更新通知中,還包括該數(shù)據(jù)在數(shù)據(jù)發(fā)布方中所屬數(shù)據(jù)分區(qū)的版本信息,則數(shù)據(jù)接收方進(jìn)一步還可以執(zhí)行將自身保存的該數(shù)據(jù)版本信息,與數(shù)據(jù)更新通知中的數(shù)據(jù)分區(qū)的版本信息(即數(shù)據(jù)發(fā)布方中該數(shù)據(jù)所屬數(shù)據(jù)分區(qū)的版本信息)進(jìn)行比對(duì)處理的操作。
步驟44,數(shù)據(jù)接收方案基于版本信息比對(duì)結(jié)果,標(biāo)識(shí)數(shù)據(jù)是否有效。
如果數(shù)據(jù)接收方保存的該數(shù)據(jù)的版本信息,低于數(shù)據(jù)更新通知中該數(shù)據(jù)的版本信息,則數(shù)據(jù)接收方將該數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。
這里需要說(shuō)明的是,對(duì)于比對(duì)結(jié)果為版本信息相同時(shí),數(shù)據(jù)接收方可無(wú)需進(jìn)行數(shù)據(jù)的同步更新處理。另外,由于數(shù)據(jù)更新通知是在數(shù)據(jù)發(fā)布方數(shù)據(jù)版本信息更新后發(fā)送的,因此不可能出現(xiàn)數(shù)據(jù)更新通知中的數(shù)據(jù)版本信息高于數(shù)據(jù)接收方保存的該數(shù)據(jù)的版本信息的情況,如果出現(xiàn),則可以確定數(shù)據(jù)系統(tǒng)出現(xiàn)了故障。
進(jìn)一步的,如果數(shù)據(jù)接收方保存的該數(shù)據(jù)的版本信息,低于數(shù)據(jù)更新通知包括的數(shù)據(jù)分區(qū)的版本信息中的最低版本信息或者高于數(shù)據(jù)更新通知包括的數(shù)據(jù)分區(qū)的版本信息中最高版本信息時(shí),數(shù)據(jù)接收方將保存的該數(shù)據(jù)所屬數(shù)據(jù)分區(qū)內(nèi)的全部數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。
步驟45,數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息。
當(dāng)數(shù)據(jù)接收方保存的失效數(shù)據(jù)(這里可以包括單一數(shù)據(jù)或者數(shù)據(jù)分區(qū)內(nèi)的全部數(shù)據(jù))被訪問(wèn)時(shí),數(shù)據(jù)接收方可向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以請(qǐng)求該失效數(shù)據(jù)的更新后即最新的版本數(shù)據(jù)。
步驟46,數(shù)據(jù)發(fā)布方向數(shù)據(jù)接收方發(fā)送失效數(shù)據(jù)的最新版本。
數(shù)據(jù)發(fā)布方在接收到數(shù)據(jù)發(fā)送方發(fā)送的請(qǐng)求信息時(shí),可將失效數(shù)據(jù)的最新版本數(shù)據(jù)發(fā)送至數(shù)據(jù)接收方。
步驟47,數(shù)據(jù)接收方完成數(shù)據(jù)更新。
數(shù)據(jù)接收方可基于接收的失效數(shù)據(jù)的最新版本,進(jìn)行失效數(shù)據(jù)的更新,并將更新后的失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù),從而完成同步操作。
通過(guò)上述步驟,即可實(shí)現(xiàn)數(shù)據(jù)系統(tǒng)中數(shù)據(jù)發(fā)布方與數(shù)據(jù)接收方之間數(shù)據(jù)的一致性。
通過(guò)上述描述可以看出,本發(fā)明提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障方法,通過(guò)當(dāng)數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);數(shù)據(jù)接收方接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。從而提供了一種高效、實(shí)用的數(shù)據(jù)一致性保障機(jī)制。
基于本發(fā)明實(shí)施例提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障方法,本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)數(shù)據(jù)一致性保障系統(tǒng),該系統(tǒng)可為一數(shù)據(jù)系統(tǒng),如附圖5所示,該系統(tǒng)具體可以包括一數(shù)據(jù)發(fā)布方51以及至少一個(gè)數(shù)據(jù)接收方52,且數(shù)據(jù)發(fā)布方51與數(shù)據(jù)接收方52保存相同的數(shù)據(jù)。
其中,如附圖6所示,本發(fā)明實(shí)施例所涉及的數(shù)據(jù)接收方,具體可以包括:
發(fā)送模塊61,用于當(dāng)數(shù)據(jù)接收方保存的失效數(shù)據(jù)被訪問(wèn)時(shí),向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的該數(shù)據(jù)更新后的版本信息時(shí),數(shù)據(jù)接收方將該數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
處理模塊62,用于接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
另外,數(shù)據(jù)接收方51還可以包括:
接收模塊63,用于接收數(shù)據(jù)發(fā)布方發(fā)送的數(shù)據(jù)更新通知,所述通知中包括數(shù)據(jù)更新后的版本信息和數(shù)據(jù)標(biāo)識(shí)信息。
接收模塊63接收的數(shù)據(jù)更新通知中還包括:數(shù)據(jù)發(fā)布方中數(shù)據(jù)所屬的數(shù)據(jù)分區(qū)的版本信息,所述數(shù)據(jù)分區(qū)的版本信息中包括數(shù)據(jù)分區(qū)中保存的全部數(shù)據(jù)的最高版本信息和/或最低版本信息,所述數(shù)據(jù)分區(qū)用于保存與一數(shù)據(jù)具有業(yè)務(wù)關(guān)聯(lián)性的所有數(shù)據(jù)。
處理模塊62還用于:當(dāng)數(shù)據(jù)接收方保存的一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)分區(qū)的版本信息中的最低版本信息或者高于所述數(shù)據(jù)分區(qū)的版本信息中最高版本信息時(shí),將保存的該數(shù)據(jù)所在數(shù)據(jù)分區(qū)內(nèi)的全部數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。
處理模塊62還用于:當(dāng)數(shù)據(jù)接收方所保存的一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的該數(shù)據(jù)更新后的版本信息時(shí),數(shù)據(jù)接收方將該數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù)。
本發(fā)明實(shí)施例所涉及的數(shù)據(jù)發(fā)布方52,如附圖7所示,具體可以包括:
接收模塊71,用于接收數(shù)據(jù)接收方51發(fā)送的請(qǐng)求信息,所述請(qǐng)求信息是當(dāng)所述數(shù)據(jù)接收方51所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方所發(fā)送的,所述請(qǐng)求信息用于獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的一數(shù)據(jù)的版本信息,低于數(shù)據(jù)發(fā)布方52發(fā)送的該數(shù)據(jù)更新后的版本信息時(shí),將該數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);
發(fā)送模塊72,用于向數(shù)據(jù)接收方51發(fā)送所述失效數(shù)據(jù)的最新版本,以用于所述數(shù)據(jù)接收方51接收并保存所述失效數(shù)據(jù)的最新,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。
另外,數(shù)據(jù)發(fā)布方52具體還可以包括:
記錄模塊73,用于記錄數(shù)據(jù)更新后的版本信息;
發(fā)送模塊72,還用于向所述數(shù)據(jù)接收方51發(fā)送數(shù)據(jù)更新通知,所述通知中包括所述第一數(shù)據(jù)更新后的版本信息和所述第一數(shù)據(jù)標(biāo)識(shí)信息。
所示數(shù)據(jù)更新通知中,進(jìn)一步還可以包括:數(shù)據(jù)發(fā)布方中數(shù)據(jù)所屬的數(shù)據(jù)分區(qū)的版本信息,所述數(shù)據(jù)分區(qū)的版本信息中包括數(shù)據(jù)分區(qū)中保存的全部數(shù)據(jù)的最高版本信息和/或最低版本信息,所述數(shù)據(jù)分區(qū)用于保存與一數(shù)據(jù)具有業(yè)務(wù)關(guān)聯(lián)性的所有數(shù)據(jù)。
通過(guò)上述描述可以看出,本發(fā)明提供的實(shí)現(xiàn)數(shù)據(jù)一致性保障系統(tǒng),通過(guò)當(dāng)數(shù)據(jù)接收方所保存的失效數(shù)據(jù)被訪問(wèn)時(shí),數(shù)據(jù)接收方向數(shù)據(jù)發(fā)布方發(fā)送請(qǐng)求信息,以獲取所述失效數(shù)據(jù)的最新版本,所述失效數(shù)據(jù)為當(dāng)數(shù)據(jù)接收方所保存的第一數(shù)據(jù)的版本信息,低于所述數(shù)據(jù)發(fā)布方發(fā)送的所述第一數(shù)據(jù)更新后的版本信息時(shí),將所述第一數(shù)據(jù)標(biāo)識(shí)為失效數(shù)據(jù);數(shù)據(jù)接收方接收并保存數(shù)據(jù)發(fā)布方所發(fā)送的所述失效數(shù)據(jù)的最新版本,并將所述失效數(shù)據(jù)標(biāo)識(shí)為有效數(shù)據(jù)。從而提供了一種高效、實(shí)用的數(shù)據(jù)一致性保障機(jī)制。
以上所述僅是本發(fā)明的實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。