【技術領域】
本申請涉及通信技術領域,尤其涉及一種數(shù)據(jù)校驗方法、數(shù)據(jù)容錯方法及裝置。
背景技術:
現(xiàn)在各種手機應用(application,app),例如淘寶、支付寶、微信、qq等,都依賴于服務端提供的數(shù)據(jù),客戶端的工作就是把這些數(shù)據(jù)通過友好的方式展示在用戶界面上。然而,服務端發(fā)來的數(shù)據(jù)并不總是正確的,例如數(shù)據(jù)在傳輸過程中出現(xiàn)了信息丟失、破損等現(xiàn)象。這時,客戶端拿到的就是異常的數(shù)據(jù),基于異常的數(shù)據(jù)無法渲染出正常的用戶界面,可能導致白屏甚至崩潰(crash)。
現(xiàn)有的解決方案,一般都是在獲取數(shù)據(jù)之后,通過消息摘要的方式對整個數(shù)據(jù)進行校驗,保證數(shù)據(jù)的完整性。這種方式的缺點是校驗的粒度太粗,消息摘要只能說明數(shù)據(jù)在傳輸過程中是否損壞,卻不能說明數(shù)據(jù)是否正確。
技術實現(xiàn)要素:
本申請的多個方面提供一種數(shù)據(jù)校驗方法、數(shù)據(jù)容錯方法及裝置,用以對數(shù)據(jù)進行正確性校驗,實現(xiàn)對數(shù)據(jù)更細粒度的校驗。
本申請的一方面,提供一種數(shù)據(jù)校驗方法,包括:
獲取待校驗數(shù)據(jù);
獲取數(shù)據(jù)校驗規(guī)則,所述數(shù)據(jù)校驗規(guī)則包括所述待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則;
根據(jù)所述數(shù)據(jù)校驗規(guī)則和所述待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系, 對所述待校驗數(shù)據(jù)的正確性進行校驗。
本申請的另一方面,提供一種數(shù)據(jù)容錯方法,包括:
獲取未通過正確性校驗的數(shù)據(jù)作為待容錯數(shù)據(jù),并獲取所述待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息;
根據(jù)所述待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對所述待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。
本申請的又一方面,提供一種數(shù)據(jù)校驗裝置,包括:
數(shù)據(jù)獲取模塊,用于獲取待校驗數(shù)據(jù);
規(guī)則獲取模塊,用于獲取數(shù)據(jù)校驗規(guī)則,所述數(shù)據(jù)校驗規(guī)則包括所述待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則;
校驗模塊,用于根據(jù)所述數(shù)據(jù)校驗規(guī)則和所述待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,對所述待校驗數(shù)據(jù)的正確性進行校驗。
本申請的又一方面,提供一種數(shù)據(jù)容錯裝置,包括:
獲取模塊,用于獲取未通過正確性校驗的數(shù)據(jù)作為待容錯數(shù)據(jù),并獲取所述待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息;
容錯模塊,用于根據(jù)所述待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對所述待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。
在本申請中,獲取待校驗數(shù)據(jù)對象的數(shù)據(jù)校驗規(guī)則,該數(shù)據(jù)校驗規(guī)則中包括待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則,根據(jù)該數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,可以對待校驗數(shù)據(jù)中的各數(shù)據(jù)對象進行校驗,進而獲得該待校驗數(shù)據(jù)是否正確的結果,達到對數(shù)據(jù)的正確性進行校驗的目的,與現(xiàn)有技術相比,能夠從更細粒度上對數(shù)據(jù)進行校驗。
進一步,本申請還可以針對未通過正確性校驗的數(shù)據(jù),根據(jù)該數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息對該數(shù)據(jù)進行修正處理,以獲容錯數(shù)據(jù),容錯處理更加準確,有利于提高容錯效率。
【附圖說明】
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請一實施例提供的數(shù)據(jù)校驗方法的流程示意圖;
圖2為本申請另一實施例提供的數(shù)據(jù)校驗方法的流程示意圖;
圖3為本申請又一實施例提供的數(shù)據(jù)容錯方法的流程示意圖;
圖4和圖5為本申請又一實施例提供的圖片展示位置與圖片url之間的對應關系示意圖;
圖6為本申請又一實施例提供的數(shù)據(jù)校驗裝置的結構示意圖;
圖7為本申請又一實施例提供的數(shù)據(jù)容錯裝置的結構示意圖。
【具體實施方式】
為使本申請實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請一實施例提供的數(shù)據(jù)校驗方法的流程示意圖。如圖1所示,該方法包括:
101、獲取待校驗數(shù)據(jù)。
102、獲取數(shù)據(jù)校驗規(guī)則,該數(shù)據(jù)校驗規(guī)則包括待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則。
103、根據(jù)上述數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,對待校驗數(shù)據(jù)的正確性進行校驗。
本實施例提供一種數(shù)據(jù)校驗方法,可由數(shù)據(jù)校驗裝置來執(zhí)行,用以對數(shù)據(jù)的正確性進行校驗。
在實際應用中,客戶端與服務端之間一般會進行數(shù)據(jù)傳輸??蛻舳丝梢越邮辗斩税l(fā)送的數(shù)據(jù),服務端也可以接收客戶端上報的數(shù)據(jù)。無論是客戶端還是服務端,其接收到的數(shù)據(jù)有可能是異常數(shù)據(jù),而基于異常的數(shù)據(jù)均無法執(zhí)行相應業(yè)務。例如,客戶端基于異常的數(shù)據(jù)就無法渲染出正常的用戶界面,可能導致白屏甚至崩潰(crash)。服務端基于異常的數(shù)據(jù)就無法識別出客戶端的請求等。
在現(xiàn)有技術中,可以采用消息摘要的方式,對整個數(shù)據(jù)進行校驗,保證數(shù)據(jù)的完整性。這種通過消息摘要的校驗方式,只能說明數(shù)據(jù)在傳輸過程中是否損壞,卻不能說明數(shù)據(jù)是否正確。
舉個例子,客戶端需要展示一張圖片,此時需要從服務端獲得這張圖片的統(tǒng)一資源定位符(uniformresourcelocator,url)地址,而服務端由于某個原因,傳輸給客戶端的圖片的url地址最后少了一個字符,也就是說服務端發(fā)出的數(shù)據(jù)本身就是不正確的。如果在數(shù)據(jù)傳輸過程中沒有出現(xiàn)錯誤,則該數(shù)據(jù)在客戶端就能通過完整性校驗,但是這份數(shù)據(jù)實際上是不正確的,所以客戶端無法展示出圖片。
針對上述問題,本實施例提供一種數(shù)據(jù)校驗方法,具體原理如下:
首先,需要獲取待校驗數(shù)據(jù)。本實施例不對待校驗數(shù)據(jù)進行限制,凡是需要進行正確性校驗的數(shù)據(jù)均可以作為本實施例中的待校驗數(shù)據(jù)。舉例說明,待校驗數(shù)據(jù)可以是商品的詳情數(shù)據(jù)、游戲數(shù)據(jù)、應用插件、網頁內容、url地址等。在一具體實施方式中,數(shù)據(jù)校驗裝置作為客戶端,可以接收服務端發(fā)送的數(shù)據(jù),將接收到的數(shù)據(jù)作為待校驗數(shù)據(jù)。
為了對待校驗數(shù)據(jù)進行校驗,還需要獲取待校驗數(shù)據(jù)對應的數(shù)據(jù)校驗規(guī)則,該數(shù)據(jù)校驗規(guī)則包括待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則。
可選的,該數(shù)據(jù)校驗規(guī)則中數(shù)據(jù)對象的校驗規(guī)則可以按照待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系定義的,即能夠體現(xiàn)待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的 層次關系。
其中,待校驗數(shù)據(jù)一般會采用一定編程語言實現(xiàn),具有確定的數(shù)據(jù)結構,數(shù)據(jù)結構由采用的編程語言決定。一般不同編程語言支持不同的數(shù)據(jù)結構。待校驗數(shù)據(jù)一般包括多個數(shù)據(jù)對象,待校驗數(shù)據(jù)的數(shù)據(jù)結構決定了這些數(shù)據(jù)對象之間的層次關系,且各數(shù)據(jù)對象具有類型屬性。本實施例不限定數(shù)據(jù)對象的類型,例如可是對象型、數(shù)組型、字符串型等。舉例說明,本實施例的待校驗數(shù)據(jù)可以是基于json(javascriptobjectnotationv)格式的數(shù)據(jù)(簡稱為json數(shù)據(jù)),相應的,數(shù)據(jù)校驗規(guī)則可以是基于json模式(schema)定義的校驗規(guī)則。json模式是一種基于json格式定義json數(shù)據(jù)結構的規(guī)范。另外,本實施例的待校驗數(shù)據(jù)還可以是其他它結構化數(shù)據(jù),例如可擴展標記語言(extensiblemarkuplanguage,xml)格式的數(shù)據(jù)(簡稱為xml數(shù)據(jù)),相應的,數(shù)據(jù)校驗規(guī)則可以是基于xml模式定義(xmlschemasdefinition,xsd)定義的校驗規(guī)則。xsd是一種基于xml格式定義xml數(shù)據(jù)結構的規(guī)范。例如,一種待校驗的json數(shù)據(jù)以及基于json模式的校驗規(guī)則分別如下所示:
json數(shù)據(jù):
基于json模式的校驗規(guī)則:
可選的,上述待校驗數(shù)據(jù)的使用者可預先配置好數(shù)據(jù)校驗規(guī)則,并存儲在指定位置,例如數(shù)據(jù)校驗裝置本地或者遠端指定存儲空間中。
基于上述,可以根據(jù)數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,對待校驗數(shù)據(jù)的正確性進行校驗。
由于上述數(shù)據(jù)校驗規(guī)則中包括待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則,因此根據(jù)該數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,可以對待校驗數(shù)據(jù)中的各數(shù)據(jù)對象進行校驗,進而獲得該待校驗數(shù)據(jù)是否正確的結果,達到對數(shù)據(jù)的正確性進行校驗的目的,與現(xiàn)有技術相比,能夠從更細粒度上對數(shù)據(jù)進行校驗。
圖2為本申請另一實施例提供的數(shù)據(jù)校驗方法的流程示意圖。如圖2所示,該方法包括:
201、獲取待校驗數(shù)據(jù)。
202、采用消息摘要的方式,對待校驗數(shù)據(jù)的完整性進行校驗。
203、若待校驗數(shù)據(jù)通過完整性校驗,則獲取數(shù)據(jù)校驗規(guī)則,并根據(jù)數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,對待校驗數(shù)據(jù)的正確性進行校驗。
本實施例與上述圖1所示實施例相類似,區(qū)別僅在于:在對待校驗數(shù)據(jù)進行正確性校驗之前,先對待校驗數(shù)據(jù)進行完整性校驗。
在一應用場景中,服務端可以通過md5算法生成數(shù)據(jù)摘要,并把它和數(shù)據(jù)一起傳輸給客戶端?;诖?,客戶端中的數(shù)據(jù)校驗裝置接收服務端發(fā)送的數(shù)據(jù),將其作為待校驗數(shù)據(jù),對待校驗數(shù)據(jù)再次生成md5碼,并把生成的md5碼與服務端發(fā)來的md5碼進行對比,如果完全一樣說明待校驗數(shù)據(jù)在傳輸過程中保持了完整性,并進入對待校驗數(shù)據(jù)的正確性校驗過程;否則說明待校驗數(shù)據(jù)在傳輸過程中發(fā)生破損,可以進入后續(xù)的數(shù)據(jù)容錯過程。
可選的,除了采用md5算法之外,也可以采用sha-1算法對待校驗數(shù)據(jù)進行完整性校驗。
在一種具體實施方式中,上述根據(jù)數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對 象之間的層次關系,對待校驗數(shù)據(jù)的正確性進行校驗的方式包括:
按照待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,依次根據(jù)數(shù)據(jù)校驗規(guī)則中數(shù)據(jù)對象的校驗規(guī)則,對待校驗數(shù)據(jù)中的相應數(shù)據(jù)對象進行正確性校驗。
進一步,數(shù)據(jù)校驗裝置還可以根據(jù)對待校驗數(shù)據(jù)的正確性校驗結果,輸出校驗報告,該校驗報告包括:待校驗數(shù)據(jù)是否通過正確性校驗的結果信息以及在結果信息表示待校驗數(shù)據(jù)未通過正確性校驗時待校驗數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。這里的錯誤數(shù)據(jù)對象是指待校驗數(shù)據(jù)中存在錯誤的數(shù)據(jù)對象。這里錯誤數(shù)據(jù)對象的信息可以是任何能夠唯一標識該錯誤數(shù)據(jù)對象的信息,例如錯誤數(shù)據(jù)對象的名稱。
值得說明的是,上述校驗報告還可以包括待校驗數(shù)據(jù)是否通過完整性校驗的結果信息。一般來說,若待校驗數(shù)據(jù)未通過完整性校驗,一般不會進一步對待校驗數(shù)據(jù)進行正確性校驗,所以這種情況下的校驗報告中一般只包括待校驗數(shù)據(jù)未通過完整性校驗的結果信息。反之,若待校驗數(shù)據(jù)通過完整性校驗,一般會進一步對待校驗數(shù)據(jù)進行正確性校驗,所以這種情況下的校驗報告中一般會包括待校驗數(shù)據(jù)通過完整性校驗的結果信息、待校驗數(shù)據(jù)是否通過正確性校驗的結果信息以及在該結果信息表示待校驗數(shù)據(jù)未通過正確性校驗時待校驗數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。
本實施例提供的數(shù)據(jù)校驗方法不僅能夠發(fā)現(xiàn)數(shù)據(jù)是否完整,而且能夠發(fā)現(xiàn)數(shù)據(jù)是否正確,并且能夠確定不正確的數(shù)據(jù)部分,能夠從更細粒度上對數(shù)據(jù)進行校驗,以便于及時發(fā)現(xiàn)數(shù)據(jù)是否完整和正確。
圖3為本申請又一實施例提供的數(shù)據(jù)容錯方法的流程示意圖。如圖3所示,該方法包括:
301、獲取未通過正確性校驗的數(shù)據(jù)作為待容錯數(shù)據(jù),并獲取待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。
302、根據(jù)待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。
本實施例提供一種數(shù)據(jù)容錯方法,可由數(shù)據(jù)容錯裝置來執(zhí)行,用以對未 通過正確性校驗的數(shù)據(jù)進行容錯處理。
具體的,獲取未通過正確性校驗的數(shù)據(jù)作為待容錯數(shù)據(jù)。另外,獲取待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。錯誤數(shù)據(jù)對象是指待容錯數(shù)據(jù)中發(fā)生錯誤的數(shù)據(jù)對象。錯誤數(shù)據(jù)對象的信息可以是任何能夠唯一標識該錯誤數(shù)據(jù)對象的信息,例如錯誤數(shù)據(jù)對象的名稱。
可選的,在進行容錯處理之前,可以先對數(shù)據(jù)進行校驗,并輸出校驗報告。這里的校驗主要是指正確性校驗。校驗報告中包括該數(shù)據(jù)是否通過正確性的結果信息以及在該結果信息表示該數(shù)據(jù)未通過正確性校驗時數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。
進一步,在對數(shù)據(jù)進行正確性校驗之前,還可以對數(shù)據(jù)進行完整性校驗,并在數(shù)據(jù)通過完整性校驗的情況下,對數(shù)據(jù)進行正確性校驗。此時,校驗報告中可能包括數(shù)據(jù)是否通過完整性校驗的結果信息,若該結果信息表示數(shù)據(jù)通過完整性校驗,則該校驗報告還需要包括表示數(shù)據(jù)是否通過正確性校驗的結果信息以及該結果信息表示數(shù)據(jù)通過正確性校驗時數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息等。
基于上述,可以根據(jù)校驗報告,判斷數(shù)據(jù)是否通過正確性校驗;如果校驗報告中的結果信息顯示該數(shù)據(jù)未通過正確性校驗,則確定該數(shù)據(jù)作為待容錯數(shù)據(jù);如果校驗報告中的結果信息顯示該數(shù)據(jù)通過正確性校驗,則可以忽略對該數(shù)據(jù)的容錯處理。
值得說明的是,本申請并不限定對數(shù)據(jù)進行正確性校驗的方式,例如可以采用本申請上述實施例提供的方法,但不限于此。
在本實施例中,待容錯數(shù)據(jù)一般采用一定編程語言實現(xiàn),具有確定的數(shù)據(jù)結構,數(shù)據(jù)結構由采用的編程語言決定。一般不同編程語言支持不同的數(shù)據(jù)結構。待容錯數(shù)據(jù)一般包括多個數(shù)據(jù)對象,待校驗數(shù)據(jù)的數(shù)據(jù)結構決定了這些數(shù)據(jù)對象之間具的層次關系,且各數(shù)據(jù)對象具有類型屬性。本實施例不限定數(shù)據(jù)對象的類型,例如可是對象型、數(shù)組型、字符串型等。舉例說明,本實施例的待容錯數(shù)據(jù)可以是json數(shù)據(jù),除此之外,待容錯數(shù)據(jù)還可以是 xml數(shù)據(jù)。
在確定待容錯數(shù)據(jù)以及待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息之后,數(shù)據(jù)容錯裝置可以根據(jù)待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。
在一可選實施方式中,考慮到之前可能已經請求過該待容錯數(shù)據(jù),將之前請求的待容錯數(shù)據(jù)稱為該容錯數(shù)據(jù)的舊版本數(shù)據(jù)。基于此,一種根據(jù)待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)的實施方式可以包括:
判斷本地是否存在待容錯數(shù)據(jù)的舊版本數(shù)據(jù),若判斷結果為存在,則根據(jù)舊版本數(shù)據(jù)和待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。反之,若本地不存在待容錯數(shù)據(jù)的舊版本數(shù)據(jù),則可以重新從服務端獲取待容錯數(shù)據(jù)對應的正確數(shù)據(jù)。
具體的,數(shù)據(jù)容錯裝置可以根據(jù)待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,獲取舊版本數(shù)據(jù)中對應該錯誤數(shù)據(jù)對象的舊版本數(shù)據(jù)對象;用該舊版本數(shù)據(jù)對象替換待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象,以獲得容錯數(shù)據(jù)。
其中,上述修正方法能夠自動修正完整但不正確的數(shù)據(jù),不影響業(yè)務執(zhí)行效率。進一步,在獲得容錯數(shù)據(jù)之后,可以根據(jù)容錯數(shù)據(jù)進行業(yè)務處理。這里并不限定業(yè)務處理的類型和方式,具體視應用場景而定。例如,在基于容錯數(shù)據(jù)進行用戶界面顯示的業(yè)務場景中,與直接使用本地的舊版本數(shù)據(jù)替換待容錯數(shù)據(jù)的方案相比,能夠讓用戶及時看到部分正確的數(shù)據(jù),不至于只看到舊數(shù)據(jù)。另外,如果待容錯數(shù)據(jù)來自于服務端,則采用本實施例的方法,不需要重新向服務端請求數(shù)據(jù),因此可以節(jié)約數(shù)據(jù)容錯裝置的流量。
舉例說明:假設一個客戶端的組件需要展示三張圖片,分別對應三個url地址??蛻舳说谝淮螐姆斩双@取了三張圖片的url地址分別記為u1、u2和u3,基于這三個url地址獲取圖片并進行了展示,同時在本地緩存了這三張圖片的url地址,即u1,、u2和u3。之后,客戶端需要重新從服務端獲取新圖片的url地址,即u4、u5和u6。其中,圖片位置與圖片url 地址之間的對應關系如圖4所示。
通過本申請上述方法實施例的校驗發(fā)現(xiàn)新數(shù)據(jù)中的u6是錯誤的,因此可以采用緩存中的u3替換到新數(shù)據(jù)中的u6。這樣用戶可以看到u4和u5對應的新圖片以及u3對應的舊圖片,最終不僅可以成功顯示圖片,而且不會對客戶端造成任何影響。最終顯示的圖片及圖片url之間的對應關系如圖5所示。
在另一可選實施方式中,一種根據(jù)待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)的實施方式可以包括:
根據(jù)錯誤數(shù)據(jù)對象的信息,從服務端重新獲取錯誤數(shù)據(jù)對象對應的正確數(shù)據(jù)對象;
用正確數(shù)據(jù)對象替換待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象,以獲得容錯數(shù)據(jù)。
上述實施方式適用于本地沒有緩存待容錯數(shù)據(jù)的舊版本數(shù)據(jù)的情況,這種只需向服務端申請錯誤數(shù)據(jù)對象對應的正確數(shù)據(jù)對象,數(shù)據(jù)量相對較小,有利于節(jié)約數(shù)據(jù)容錯裝置的流量。
進一步,除了上述實施方式之外,還可以向服務端重新請求待容錯數(shù)據(jù)對應的正確數(shù)據(jù)。例如,當無法通過上述幾種實施方式對待容錯數(shù)據(jù)進行修正時,可以采用向服務端重新請求待容錯數(shù)據(jù)對應的正確數(shù)據(jù)的方式。
可選的,為了避免無限制地向服務端重新請求數(shù)據(jù),可以預先設定請求次數(shù)的上限值,當重新請求的次數(shù)達到預設上線值時,結束操作,并提示用戶無法獲取正確數(shù)據(jù)。
進一步,上述校驗報告還可以包括數(shù)據(jù)是否通過完整性校驗的結果信息、如果該結果信息顯示該數(shù)據(jù)未通過完整性校驗,則說明該數(shù)據(jù)也需要進行容錯處理,數(shù)據(jù)容錯裝置還可以對未完整性校驗的數(shù)據(jù)進行容錯處理。
具體的,數(shù)據(jù)容錯裝置可以判斷本地是否緩存有該未通過完整性校驗的數(shù)據(jù)的舊版本數(shù)據(jù),如果判斷結果為是,則獲取舊版本數(shù)據(jù)并用該舊版本數(shù)據(jù)替換該未通過完整性校驗的數(shù)據(jù)?;蛘?,數(shù)據(jù)容錯裝置也可以重新向服務端請求正確的數(shù)據(jù)。
由上述可見,本實施針對未通過正確性校驗的數(shù)據(jù),根據(jù)該數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息對該數(shù)據(jù)進行修正處理,以獲容錯數(shù)據(jù),容錯處理更加準確,有利于提高容錯效率。進一步,基于容錯數(shù)據(jù)進行業(yè)務處理,保證業(yè)務能夠正常開展。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請并不受所描述的動作順序的限制,因為依據(jù)本申請,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖6為本申請又一實施例提供的數(shù)據(jù)校驗裝置的結構示意圖。如圖6所示,該裝置包括:數(shù)據(jù)獲取模塊61、規(guī)則獲取模塊62和校驗模塊63。
數(shù)據(jù)獲取模塊61,用于獲取待校驗數(shù)據(jù)。
規(guī)則獲取模塊62,用于獲取數(shù)據(jù)校驗規(guī)則,數(shù)據(jù)校驗規(guī)則包括待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則;
校驗模塊63,用于根據(jù)數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,對待校驗數(shù)據(jù)的正確性進行校驗。
在一可選實施方式中,校驗模塊63具體用于:
按照待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,依次根據(jù)數(shù)據(jù)校驗規(guī)則中數(shù)據(jù)對象的校驗規(guī)則,對待校驗數(shù)據(jù)中的相應數(shù)據(jù)對象進行正確性校驗。
進一步,校驗模塊63還用于:在根據(jù)數(shù)據(jù)校驗規(guī)則,對待校驗數(shù)據(jù)的正確性進行校驗之后,根據(jù)對待校驗數(shù)據(jù)的正確性校驗結果,輸出校驗報告,校驗報告包括:待校驗數(shù)據(jù)是否通過正確性校驗的結果信息以及在結果信息表示待校驗數(shù)據(jù)未通過正確性校驗時待校驗數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。
進一步,校驗模塊63還用于:在根據(jù)數(shù)據(jù)校驗規(guī)則,對待校驗數(shù)據(jù)的正確性進行校驗之前,采用消息摘要的方式,對待校驗數(shù)據(jù)的完整性進行校 驗。
具體的,校驗模塊63在待校驗數(shù)據(jù)未通過完整性校驗時,根據(jù)數(shù)據(jù)校驗規(guī)則對待校驗數(shù)據(jù)的正確性進行校驗。
可選的,上述待校驗數(shù)據(jù)為結構化數(shù)據(jù)。
本實施例提供的數(shù)據(jù)校驗裝置,可以獲取待校驗數(shù)據(jù)對象的數(shù)據(jù)校驗規(guī)則,該數(shù)據(jù)校驗規(guī)則中包括待校驗數(shù)據(jù)中數(shù)據(jù)對象的校驗規(guī)則,根據(jù)該數(shù)據(jù)校驗規(guī)則和待校驗數(shù)據(jù)中數(shù)據(jù)對象之間的層次關系,可以對待校驗數(shù)據(jù)中的各數(shù)據(jù)對象進行校驗,進而獲得該待校驗數(shù)據(jù)是否正確的結果,達到對數(shù)據(jù)的正確性進行校驗的目的,與現(xiàn)有技術相比,能夠從更細粒度上對數(shù)據(jù)進行校驗。
圖7為本申請又一實施例提供的數(shù)據(jù)容錯裝置的結構示意圖。如圖7所示,該裝置包括:獲取模塊71和容錯模塊72。
獲取模塊71,用于獲取未通過正確性校驗的數(shù)據(jù)作為待容錯數(shù)據(jù),并獲取待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息。
容錯模塊72,用于根據(jù)待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。
進一步,數(shù)據(jù)容錯裝置還可以包括:業(yè)務模塊,用于根據(jù)容錯數(shù)據(jù),進行業(yè)務處理。
在一可選實施方式中,容錯模塊72具體可用于:
若本地存在待容錯數(shù)據(jù)的舊版本數(shù)據(jù),則根據(jù)舊版本數(shù)據(jù)和待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息,對待容錯數(shù)據(jù)進行修正處理,以獲得容錯數(shù)據(jù)。
進一步,容錯模塊72具體可用于:
根據(jù)錯誤數(shù)據(jù)對象中的信息,獲取舊版本數(shù)據(jù)中對應錯誤數(shù)據(jù)對象的舊版本數(shù)據(jù)對象;
用舊版本數(shù)據(jù)對象替換待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象,以獲得容錯數(shù)據(jù)。
在一可選實施方式中,容錯模塊72具體可用于:
根據(jù)錯誤數(shù)據(jù)對象的信息,從服務端重新獲取錯誤數(shù)據(jù)對象對應的正確數(shù) 據(jù)對象;
用正確數(shù)據(jù)對象替換待容錯數(shù)據(jù)中錯誤數(shù)據(jù)對象,以獲得容錯數(shù)據(jù)。
在一可選實施方式中,獲取模塊71具體可用于:
根據(jù)數(shù)據(jù)的校驗報告,判斷數(shù)據(jù)是否通過正確性校驗;
若判斷結果為否,則獲取數(shù)據(jù)作為待容錯數(shù)據(jù)。
進一步,獲取模塊71還用于:在根據(jù)數(shù)據(jù)的校驗報告,判斷數(shù)據(jù)是否通過正確性校驗之前,根據(jù)校驗報告,判斷數(shù)據(jù)是否通過完整性校驗,并在通過完整性校驗時,執(zhí)行根據(jù)數(shù)據(jù)的校驗報告,判斷數(shù)據(jù)是否通過正確性校驗的操作。
可選的,上述待容錯數(shù)據(jù)為結構化數(shù)據(jù)。
本實施例提供的數(shù)據(jù)容錯裝置,針對未通過正確性校驗的數(shù)據(jù),根據(jù)該數(shù)據(jù)中錯誤數(shù)據(jù)對象的信息對該數(shù)據(jù)進行修正處理,以獲容錯數(shù)據(jù),容錯處理更加準確,有利于提高容錯效率。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執(zhí)行本申請各個實施例所述方法的部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(read-onlymemory,rom)、隨機存取存儲器(randomaccessmemory,ram)、磁碟或者光盤等各種可以存儲程序代碼的介質。
最后應說明的是:以上實施例僅用以說明本申請的技術方案,而非對其限制;盡管參照前述實施例對本申請進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本申請各實施例技術方案的精神和范圍。