本申請涉及數據檢測技術領域,尤其涉及一種數據一致性的自檢方法、裝置、系統(tǒng)和業(yè)務裝置。
背景技術:
在以數據訪問和查詢?yōu)橹鞯南到y(tǒng)中,全量狀態(tài)型數據(例如用戶基本信息,簽約信息等相對靜態(tài)的狀態(tài)型數據,尤其是讀寫分離、設置緩存的數據)天然具備修改少、查詢多的特性,架構設計上多采用復制多份,用空間換取查詢時間的方式,即為了提高查詢性能,通常會在一份源數據的基礎上將全量狀態(tài)型數據冗余多份保存在不同的數據庫或緩存中。這種設計直接帶來多份數據之間的一致性的數據質量難題。
在這種系統(tǒng)中,多份數據間的一致性保障尤其關鍵。傳統(tǒng)驗證多份數據復制邏輯和最終一致性保障方式,基本是線下通過模擬業(yè)務場景,模擬各類數據,模擬網絡異常等手段來驗證代碼邏輯,成本高且難以覆蓋各種極端情況,以及各類實際網絡異常情況,造成還是會有生產數據不一致,不準確情況產生。當多份數據不一致時,系統(tǒng)本身沒有有效的手段感知,不會報錯,只有在對用戶產生業(yè)務影響后用戶上報反饋,系統(tǒng)才能得知。因此,如果關鍵的數據不準確,將會直接帶來用戶資產損失或操作中斷,影響惡劣。
目前,可通過數據倉庫清洗后匯總到一個數據庫中,依據一定業(yè)務邏輯進行比對,以實現數據是否一致的比對,但這種方法需要在所有業(yè)務都處理完畢后進行最終匯總才能比對,實時性較差,且只能適用于數據庫型存儲,對緩存型存儲還不能支持。
技術實現要素:
為解決現有技術中的上述問題,本申請的一個目的在于提出一種數據一致性的自檢方法、裝置、系統(tǒng)和業(yè)務裝置,可以在業(yè)務變更源數據后對副本是否變更一致進行校驗,校驗過程與業(yè)務裝置隔離,且時效性好。
為達到上述目的,本申請實施例提出的數據一致性的自檢方法,包括:接收業(yè)務裝置發(fā)送的變更數據信息;根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置 發(fā)送比對數據調用請求;接收返回的比對數據,并對所述比對數據進行一致性校驗。
為達到上述目的,本申請實施例提出的數據一致性的自檢方法,包括:根據業(yè)務變更將變更數據信息發(fā)送至自檢裝置;接收所述自檢裝置發(fā)送的比對數據調用請求;根據所述比對數據調用請求返回對應的比對數據,以進行一致性校驗。
為達到上述目的,本申請實施例提出的數據一致性的自檢裝置,包括:接收模塊,用于接收業(yè)務裝置發(fā)送的變更數據信息;發(fā)送模塊,用于根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求;校驗模塊,用于接收返回的比對數據,并對所述比對數據進行一致性校驗。
為達到上述目的,本申請實施例提出的業(yè)務裝置,包括:通知模塊,用于根據業(yè)務變更將變更數據信息發(fā)送至自檢裝置;第一接收模塊,用于接收所述自檢裝置發(fā)送的比對數據調用請求;發(fā)送模塊,用于根據所述比對數據調用請求返回對應的比對數據,以進行一致性校驗。
為達到上述目的,本申請實施例提出的數據一致性的自檢系統(tǒng),包括本申請任一實施例所述的數據一致性的自檢裝置和本申請任一實施例所述的業(yè)務裝置。
由以上本申請實施例提供的技術方案可見,通過業(yè)務裝置發(fā)送變更數據信息,自檢裝置根據預設的校驗模式和變更數據信息向業(yè)務裝置發(fā)送比對數據調用請求,并根據業(yè)務裝置返回的比對數據進行一致性校驗,數據校驗過程不影響業(yè)務裝置工作,校驗過程和結果不影響正常業(yè)務的進行,且能夠及時對變更的數據進行校驗,具有良好的實時性和隔離性,并能夠同時適用于數據庫型存儲和緩存型存儲。
本申請附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請的實踐了解到。
附圖說明
為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本申請一實施例提出的數據一致性的自檢方法的流程示意圖;
圖2是本申請一實施例的數據一致性的自檢裝置的結構示意圖;
圖3是本申請另一實施例的數據一致性的自檢裝置的結構示意圖;
圖4是本申請另一實施例提出的數據一致性的自檢方法的流程示意圖;
圖5是本申請一實施例的業(yè)務裝置的結構示意圖;
圖6是本申請另一實施例的業(yè)務裝置的結構示意圖;
圖7所示是本申請一具體實施例的數據一致性的自檢系統(tǒng)的結構示意圖;
圖8是根據本申請一具體實施例的數據一致性的自檢方法的流程示意圖;
圖9是根據本申請一具體實施例的數據一致性的自檢系統(tǒng)的結構示意圖。
具體實施方式
本申請實施例提供一種數據一致性的自檢方法、裝置、系統(tǒng)和業(yè)務裝置。
為了使本技術領域的人員更好地理解本申請中的技術方案,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本申請保護的范圍。
圖1是本申請一實施例提出的數據一致性的自檢方法的流程示意圖,在該圖所示的實施例中,自檢裝置通過接收業(yè)務裝置修改數據后發(fā)送的變更數據信息確定要進行校驗的目標數據,再到業(yè)務裝置獲取各個數據庫中的待校驗的目標數據進行一致性校驗。如圖1所示,該方法包括:
步驟101,接收業(yè)務裝置發(fā)送的變更數據信息。
其中,變更數據信息能夠標識本次變更所涉及到的源數據,包括變更數據的位置信息,例如該數據位于數據庫或緩存的哪類表格中以及在該類表格中的第幾行,地址id或者其他的位置標識信息。
步驟102,根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求。其中,預設的校驗模式用于控制比對數據的來源范圍,例如只校驗兩個數據庫的數據,或者只校驗某一指定數據庫和緩存的數據等。根據校驗模式和變更數據信息可以確定要獲取的比對數據來源和具體地址。所需獲取的比對數據包括待校驗的源數據和冗余數據(即副本數據),以根據源數據的最終值判斷冗余數據是否同步變更。
步驟103,接收返回的比對數據,并對所述比對數據進行一致性校驗。
具體地,業(yè)務裝置在發(fā)生業(yè)務變更修改源數據之后,會發(fā)送變更數據信息到自檢裝置進行通知,同時對冗余數據也會進行相應的修改,自檢裝置在收到變更數據信息后,根據預設的的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求,從而獲取要校驗的比對數據來與修改后的源數據進行比對,以驗證業(yè)務系統(tǒng)是否對相同的冗余數據進行了相應的修改以及修改是否正確。自檢裝置以獨立裝置的方式對業(yè)務裝置的數據進行一致性校驗,整個校驗過程都只需通過業(yè)務裝置預設的接口進行通信交互,數據校驗的過程和處理結果不影響正常業(yè)務的進行,具有良好的實時性和隔離性。
在一個具體實施例中,考慮到對于不同業(yè)務導致的數據變更的通用化支持,自檢裝置可以為不同業(yè)務裝置定義通用的比對數據獲取接口,由不同業(yè)務裝置實現,保證框架的通用,同時又不侵入業(yè)務裝置。
根據本申請的一個實施例,在所述根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求之前,還包括:根據預設的校驗比例判斷是否根據所述變更數據信息進行數據校驗;若進行校驗,則根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求。
根據本申請的一個實施例,所述比對數據調用請求包括所述變更數據的位置信息,以及根據所述校驗模式確定的比對數據的數據來源。
具體地,在接收到變更數據信息后,可以根據校驗比例獲取對應的隨機數來確定是否根據該變更數據信息進行數據校驗。校驗比例用于控制是否對每個變更數據信息都進行校驗,校驗比例可以設置全部比對,即比例設置為1,也可以設置百分之一,即比例值設置為0.01。通過設置該校驗比例能有效控制比對范圍,異常情況下也可以設置為0,即關閉自檢,避免影響系統(tǒng)穩(wěn)定性。自檢系統(tǒng)中可設有自檢數據庫,在確定進行校驗后,需要將根據該變更數據信息將本次的校驗任務記錄到自檢數據庫中,并將之后的操作也更新記錄到自檢數據庫中。這樣可以有效增加自檢過程的穩(wěn)定性、獨立性和可追溯性。
根據本申請的一個實施例,所述根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求包括:按照預設時間間隔根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求。具體地,在數據變更頻繁的情 況下,自檢裝置可能會接連收到多個變更數據信息,如果同時開始處理可能會造成處理量的激增,導致自檢裝置崩潰、卡死、錯誤等不穩(wěn)定的問題。因此,可以通過定時調度裝置定時獲取自檢裝置接收到的變更數據信息,來觸發(fā)自檢裝置對數據的一致性校驗。
根據本申請的一個實施例,比對數據包括待驗的源數據和副本數據,源數據具有標明最近更新時間的標識,在接收返回的比對數據之后,所述方法還包括:當待驗的源數據的最近更新時間與當前時間的差值小于預設閾值時,取消對所述比對數據的校驗。如果業(yè)務變更頻繁,在獲取比對數據后,如果發(fā)現待比對的源數據在最近的一定時間內(如30s內)發(fā)生變更,則丟棄該次比對,以免由于業(yè)務系統(tǒng)沒有充分的時間針對該次變更同步修改相應的副本數據,降低自檢裝置的不必要的工作消耗,并提高校驗的準確度,減少誤報。
根據本申請的一個實施例,所述對所述比對數據進行一致性校驗包括:根據預設的比對邏輯對所述比對數據進行一致性校驗。
在具體的實施例中,自檢裝置可以通過比對引擎來實現具體的一致性校驗過程??深A先設置不同業(yè)務對應的校驗數據時的比對邏輯,校驗時通過比對引擎來控制選用對應的比對邏輯。比對邏輯可以有多種,例如對于密碼或電話號碼的變更,可以采用逐位比對,對于非重要信息的變更采用關鍵詞比對等。還可以通過配置比對引擎實現多個源數據之間的比對,例如以不同數據庫語言存儲在多個數據來源中的源數據之間是否同步,以及實現單個數據和關聯數據的屬性的比對,例如對于綁定銀行卡使賬戶得到認證屬性的變更,可以采用屬性比對等。
根據本申請的一個實施例,在所述對所述比對數據進行一致性校驗之后,還包括:記錄校驗結果,并根據所述校驗結果生成監(jiān)控日志;將所述監(jiān)控日志輸出到預設的監(jiān)控平臺,以進行數據監(jiān)控和預警。
根據本申請的一個實施例,在所述對所述比對數據進行一致性校驗之后,還包括:當校驗結果為不一致時,向所述業(yè)務裝置發(fā)送數據修改提醒。
根據本申請的實施例,可以通過接收業(yè)務裝置發(fā)送的變更數據信息,根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求,接收返回的比對數據,并對所述比對數據進行一致性校驗,不影響業(yè)務裝置工作,數據校驗的過程和處理結果不影響正常業(yè)務的進行,且能夠及時對變更的數據進行校驗,具有良好的 實時性和隔離性,并能夠同時適用于數據庫型存儲和緩存型存儲。
基于同一發(fā)明構思,本申請實施例還提供了一種數據一致性的自檢裝置,可以用于實現上述實施例所描述的方法,如下面的實施例所述。由于數據一致性的自檢裝置解決問題的原理與數據一致性的自檢方法相似,因此數據一致性的自檢裝置的實施可以參見數據一致性的自檢方法的實施,重復之處不再贅述。以下所使用的,術語“單元”或者“模塊”可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能被構想的。
圖2是本申請一實施例的數據一致性的自檢裝置的結構示意圖。本實施例的裝置可以為實現相應功能的邏輯部件構成,也可以為運行有相應功能軟件的電子設備。數據一致性的自檢裝置具體可以是自檢裝置。
如圖2所示,該數據一致性的自檢裝置包括:接收模塊101、發(fā)送模塊102和校驗模塊103。
具體地,接收模塊101用于接收業(yè)務裝置發(fā)送的變更數據信息。
發(fā)送模塊102用于根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求。
校驗模塊103用于接收返回的比對數據,并對所述比對數據進行一致性校驗。
根據本申請的實施例,可以通過接收業(yè)務裝置發(fā)送的變更數據信息,根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求,接收返回的比對數據,并對所述比對數據進行一致性校驗,不影響業(yè)務裝置工作,數據校驗的過程和處理結果不影響正常業(yè)務的進行,且能夠及時對變更的數據進行校驗,具有良好的實時性和隔離性,并能夠同時適用于數據庫型存儲和緩存型存儲。
圖3所示是本申請另一實施例的數據一致性的自檢裝置的結構示意圖。
如圖3所示,在圖2的基礎上,所述自檢裝置還包括:判斷模塊104、取消模塊105、監(jiān)控模塊106、輸出模塊107和提醒模塊108。
具體地,判斷模塊104用于根據預設的校驗比例判斷是否根據所述變更數據信息進行數據校驗。
所述變更數據信息包括變更數據的位置信息,所述發(fā)送模塊102還用于按照預設時間間隔根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調 用請求,其中,所述比對數據調用請求包括所述變更數據的位置信息,以及根據所述校驗模式確定的所述比對數據的數據來源。
取消模塊105用于在所述待驗的源數據的最近更新時間與當前時間的差值小于預設閾值時,取消對所述比對數據的校驗。
所述校驗模塊103包括比對引擎,用于根據預設的比對邏輯對所述比對數據進行一致性校驗。
根據本申請的一個實施例,所述變更數據信息包括變更數據的位置信息,所述比對數據調用請求包括所述變更數據的位置信息和比對數據的數據來源。
監(jiān)控模塊106用于記錄校驗結果,并根據所述校驗結果生成監(jiān)控日志。
輸出模塊107用于將所述監(jiān)控日志輸出到預設的監(jiān)控平臺,以進行數據監(jiān)控和預警。
提醒模塊108用于在校驗結果為不一致時向所述業(yè)務裝置發(fā)送數據修改提醒。
根據本申請的實施例,可以通過接收業(yè)務裝置發(fā)送的變更數據信息,根據預設的校驗模式和所述變更數據信息向所述業(yè)務裝置發(fā)送比對數據調用請求,接收返回的比對數據,并對所述比對數據進行一致性校驗,通過預設接口的通信進行數據交互,不影響業(yè)務裝置工作,數據校驗的過程和處理結果不影響正常業(yè)務的進行,且能夠及時對變更的數據進行校驗,具有良好的實時性和隔離性,并能夠同時適用于數據庫型存儲和緩存型存儲。此外,通過設置校驗比例和定時觸發(fā)機制,能夠增強自檢裝置的穩(wěn)定性,校驗結果可以輸出到監(jiān)控平臺,用作監(jiān)控和報警使用,也可以直接通知業(yè)務裝置對錯誤的數據進行修改更正,應用廣泛,處理靈活。
圖4是根據本申請另一實施例提出的數據一致性的自檢方法的流程示意圖,本實施例以從業(yè)務裝置的角度實現為例進行說明,在業(yè)務裝置對源數據進行變更后,可以通知自檢裝置對該次變更所涉及的數據的一致性進行檢測。
該圖4所示的方法包括:
步驟401,根據業(yè)務變更將變更數據信息發(fā)送至自檢裝置。
步驟402,接收所述自檢裝置發(fā)送的比對數據調用請求。
步驟403,根據所述比對數據調用請求返回對應的比對數據,以進行一致性校驗。
具體地,在業(yè)務變更導致源數據有修改時,業(yè)務裝置生成相關的變更數據信息發(fā)送至自檢裝置,以通知自檢裝置進行數據一致性校驗,自檢裝置在確認進行數據校驗 后根據變更數據信息和預設的檢驗模式生成比對數據調用請求發(fā)送至業(yè)務裝置以獲取校驗所需的比對數據。業(yè)務裝置可以通過預設的接口與自檢裝置進行交互,根據比對數據調用請求到各個對應的數據源(數據庫或緩存等)獲取校驗所需的比對數據,并發(fā)送給自檢裝置。從而實現數據一致性的校驗。校驗結果可以發(fā)送到額外的監(jiān)控或控制平臺進行數據的監(jiān)控和預警,也可以直接發(fā)送回業(yè)務裝置提醒修改數據
根據本申請的一個實施例,所述變更數據信息包括變更數據的位置信息。變更數據信息能夠標識本次變更所涉及到的源數據,包括變更數據的位置信息,例如該數據位于數據庫或緩存的哪類表格中以及在該類表格中的第幾行,地址id或者其他的位置標識信息。
根據本申請的一個實施例,所述比對數據調用請求所述變更數據的位置信息和比對數據的數據來源,所述根據所述比對數據調用請求返回對應的比對數據具體包括:根據所述位置信息和所述數據來源獲取所述比對數據。比對數據的數據來源例如是指定的一個或多個數據庫,或者指定的一個或多個數據庫以及緩存等。根據數據來源和變更數據的位置信息(例如位置標識等)可以具體查找到所要獲取的比對數據。
根據本申請的一個實施例,當校驗結果為不一致時,所述方法還包括:接收所述自檢裝置發(fā)送的數據修改提醒;根據所述數據修改提醒對相應的比對數據進行修改。
根據本申請的一個實施例,所述根據業(yè)務變更將變更數據信息發(fā)送至自檢裝置包括:通過異步通知方式向所述自檢裝置發(fā)送所述變更數據信息。具體的,可以通過異步通知消息實現,也可以通過單獨的異步通知模塊、平臺、系統(tǒng)等實現。通常,業(yè)務裝置發(fā)送通知等消息到自檢裝置的行為是不具備重試功能的,而業(yè)務裝置與異步通知裝置之間可以預先建立協議,在消息失敗的情況下可以重新發(fā)送直到成功,再經由異步通知裝置向自檢裝置發(fā)送,降低業(yè)務裝置和自檢裝置的處理能力需求,提高業(yè)務裝置與自檢裝置的隔離性。
本實施例的方法通過在數據變更后根據業(yè)務變更向自檢裝置發(fā)送變更數據信息,并根據自檢裝置發(fā)送的比對數據調用請求查找所需校驗的比對數據并返回至自檢裝置,從而實現在業(yè)務裝置之外對冗余數據與源數據的一致性進行校驗,不影響業(yè)務裝置的性能,隔離性好,且能夠適用于多種存儲類型的數據校驗,能夠在業(yè)務變更后及時發(fā)送變更數據信息進行自檢,實時性好。
基于同一發(fā)明構思,本申請實施例還提供了一種業(yè)務裝置,可以用于實現上述實 施例所描述的方法,如下面的實施例所述。由于業(yè)務裝置解決問題的原理與上一實施例數據一致性的自檢方法相似,因此業(yè)務裝置的實施可以參見數據一致性的自檢方法的實施,重復之處不再贅述。以下所使用的,術語“單元”或者“模塊”可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能被構想的。
圖5是本申請一實施例的業(yè)務裝置的結構示意圖。該裝置可以是實現所述業(yè)務裝置所用的裝置,可通過業(yè)務處理對各數據庫的數據進行變更。該實施例的裝置可以為實現相應功能的邏輯部件構成,也可以為運行有相應功能軟件的高性能計算機,具體例如是服務器。業(yè)務裝置具體可以是業(yè)務裝置。
如圖5所示,該業(yè)務裝置包括:通知模塊201、第一接收模塊202和發(fā)送模塊203。
通知模塊201用于根據業(yè)務變更將變更數據信息發(fā)送至自檢裝置;
第一接收模塊202用于接收所述自檢裝置發(fā)送的比對數據調用請求;
發(fā)送模塊203用于根據所述比對數據調用請求返回對應的比對數據,以進行一致性校驗。
根據本申請的一個實施例,比對數據調用請求所述變更數據的位置信息和比對數據的數據來源,所述發(fā)送模塊203包括:獲取單元,用于根據所述位置信息和所述數據來源獲取所述比對數據。
根據本申請的一個實施例,如圖6所示,當校驗結果為不一致時,所述業(yè)務裝置在圖5的基礎上還包括:第二接收模塊204和修改模塊205。
第二接收模塊204,用于接收所述自檢裝置發(fā)送的數據修改提醒;
修改模塊205,用于根據所述數據修改提醒對相應的比對數據進行修改。
根據本申請的一個實施例,所述通知模塊201包括:異步通知單元,用于通過異步通知方式向所述自檢裝置發(fā)送所述變更數據信息。
本實施例的裝置通過在數據變更后根據業(yè)務變更向自檢裝置發(fā)送變更數據信息,并根據自檢裝置發(fā)送的比對數據調用請求查找所需校驗的比對數據并返回至自檢裝置,從而實現在業(yè)務裝置之外對冗余數據與源數據的一致性進行校驗,不影響業(yè)務裝置的性能,隔離性好,且能夠適用于多種存儲類型的數據校驗,能夠在業(yè)務變更后及時發(fā)送變更數據信息進行自檢,實時性好。
基于同一發(fā)明構思,本申請實施例還提供了一種數據一致性的自檢系統(tǒng),可以用 于實現上述實施例所描述的方法,如上述實施例所述,重復之處不再贅述。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能并被構想的。
圖7所示是本申請一具體實施例的數據一致性的自檢系統(tǒng)的結構示意圖。如圖7所示,所述系統(tǒng)包括上述任一實施例所述的數據一致性的自檢裝置100和業(yè)務裝置200。其中,數據一致性的自檢裝置100具體可以是自檢裝置,業(yè)務裝置200具體可以是業(yè)務裝置。
根據本申請的一個實施例,所述系統(tǒng)還包括:定時調度裝置,用于控制所述自檢裝置按照預設時間間隔進行數據一致性校驗。
另外,數據一致性的自檢系統(tǒng)還可以包括設置后處理裝置或模塊,在校驗結果為不一致時用于處理數據修改等問題。
本實施例的系統(tǒng)可以通過業(yè)務裝置發(fā)送變更數據信息,自檢裝置根據預設的校驗模式和變更數據信息向業(yè)務裝置發(fā)送比對數據調用請求,并根據業(yè)務裝置返回的比對數據進行一致性校驗,數據校驗過程不影響業(yè)務裝置工作,校驗過程和結果不影響正常業(yè)務的進行,且能夠及時對變更的數據進行校驗,具有良好的實時性和隔離性,并能夠同時適用于數據庫型存儲和緩存型存儲。
此外,對比于現有的校驗方式,本系統(tǒng)可以直接在生產環(huán)境實施,通過實時的監(jiān)控和報警手段,及時發(fā)現數據不一致問題,并能由系統(tǒng)自動發(fā)現,精確定位到問題數據,不再被動處理問題,而是能夠主動發(fā)現問題從而快速消除影響,避免帶來大范圍用戶和業(yè)務影響,有效提升了多份全量數據最終一致性的驗證效率和出現問題時的響應速度。
圖8是根據本申請一具體實施例的數據一致性的自檢方法的流程示意圖,本實施例中采用業(yè)務裝置與自檢裝置交互的方式進行說明。其中與前述實施例重復之處,不再贅述。如圖8所示,該方法包括:
步驟1,業(yè)務裝置根據業(yè)務變更將變更數據信息發(fā)送至自檢裝置。
其中,如圖9所示,業(yè)務裝置中保存有多種類型的數據源,例如不同的數據庫和緩存等,不同的業(yè)務都可以通過業(yè)務裝置對相應的數據源進行訪問和操作。業(yè)務裝置與自檢裝置可通過預設的比對數據調用接口進行交互。
具體地,業(yè)務裝置可以通過異步通知的方式發(fā)送所述變更數據信息,也可以通過 單獨的異步通知模塊、平臺、系統(tǒng)等實現,以提高業(yè)務裝置與自檢裝置之間的隔離性。通常,業(yè)務裝置發(fā)送通知等消息到自檢裝置的行為是不具備重試功能的,而業(yè)務裝置與異步通知裝置之間可以預先建立協議,在消息失敗的情況下可以重新發(fā)送直到成功,再經由異步通知裝置向自檢裝置發(fā)送,降低業(yè)務裝置和自檢裝置的處理能力需求,提高業(yè)務裝置與自檢裝置的隔離性。
本實施例以修改密碼業(yè)務數據變更為例進行說明。在修改密碼后,業(yè)務裝置對存儲在寫數據庫的源數據進行了修改,也相應地修改其他數據源中的冗余數據,并將所修改的源數據的位置標識信息生成變更數據信息發(fā)送至自檢裝置以發(fā)起數據一致性校驗。因為在業(yè)務系統(tǒng)中對冗余數據的同步修改會存在一定概率的遺漏,例如由于網絡延遲、操作失誤等原因一些關鍵的副本數據不能及時得到同步修改,則會出現無法支付等嚴重影響用戶體驗的問題。
步驟2,自檢裝置接收業(yè)務裝置發(fā)送的變更數據信息。
具體地,為了對不同業(yè)務導致的數據變更的校驗進行通用化支持,自檢裝置可以為不同業(yè)務裝置定義通用的比對數據獲取接口,由不同業(yè)務裝置實現,各業(yè)務裝置均通過該接口與自檢裝置進行交互,以保證框架的通用,同時又不侵入業(yè)務裝置。
步驟3,自檢裝置根據預設的校驗比例判斷是否根據所述變更數據信息進行數據校驗。
具體地,可以根據校驗比例獲取對應的隨機數來確定是否根據該變更數據信息進行數據校驗。例如校驗比例為0.1,則每收到一個變更數據信息都通過一個預設概率的隨機數來判定這一條信息是否落在被校驗的10%中,如果是,則根據該信息進行校驗,否則根據其進行校驗。另外,在一個具體實施例中,還可以通過識別所修改的數據內容來判定是否根據該信息進行校驗,例如,識別修改的數據是密碼等的重要信息,則采用100%的選中概率進行校驗,如果是修改郵編、個性簽名等重要性較低的信息,則采用較低的選中概率進行校驗。
步驟4,若進行校驗,則記錄所述變更數據信息。
具體地,自檢裝置可以將變更數據信息記錄到自檢數據庫中,建立校驗任務記錄,基于該任務的后續(xù)操作也更新記錄到自檢數據庫中。
如圖9所示,自檢裝置中可以包括比對引擎、監(jiān)控模塊、自檢控制器和自檢數據庫。比對引擎主要控制不同業(yè)務數據的比對邏輯,監(jiān)控模塊主要是根據比對引擎比對 出的結果,進行一定格式的日志記錄,自檢控制器主要控制校驗模式和變更數據信息的校驗比例。
步驟5,定時調度裝置按照預設時間間隔獲取所述自檢裝置記錄的變更數據信息,啟動對應的數據檢驗任務。
需要理解的是,除前述的特征外,由于定時調度機制并不是在記錄變更數據信息之后立即觸發(fā)自檢裝置啟動數據校驗任務,而是經過預設時間后啟動,一方面可以在業(yè)務系統(tǒng)對冗余數據修改結束后開始實施校驗,另一方面通過設置定時調度機制還可以在同一數據頻繁變更后的一定時間內只對該數據的最終變更結果進行檢測,減少不必要的校驗任務。
步驟6,自檢裝置根據預設的校驗模式確定比對數據的數據來源。
具體地,預設的校驗模式和校驗比例均可以由圖9中的自檢控制器進行控制。其中,預設的校驗模式用于控制比對數據的來源范圍,例如只校驗兩個數據庫的數據,或者只校驗某一指定數據庫和緩存的數據等。根據校驗模式和變更數據信息可以確定要獲取的比對數據來源和具體地址。該功能可以通過自檢裝置中的自檢控制器實現。
步驟7,自檢裝置根據預設的校驗模式和所述變更數據信息向業(yè)務裝置發(fā)送比對數據調用請求。
步驟8,業(yè)務裝置接收比對數據調用請求,根據比對數據調用請求獲取并返回對應的比對數據。
步驟9,自檢裝置接收返回的比對數據,判斷待驗的源數據的最近更新時間與當前時間的差值是否小于預設閾值,若小于,則取消對所述比對數據的校驗;否則執(zhí)行步驟10。
具體地,比對數據包括待驗的源數據和副本數據,所述源數據具有標明最近更新時間的標識。如果業(yè)務變更頻繁,在獲取比對數據后,如果發(fā)現待比對的源數據在最近的一定時間內(如30s內)發(fā)生變更,則丟棄該次比對,以免由于業(yè)務系統(tǒng)沒有充分的時間針對該次變更同步修改相應的副本數據,降低自檢裝置的不必要的工作消耗,并提高校驗的準確度,減少誤報。
步驟10,采用比對引擎根據預設的比對邏輯對所述比對數據進行一致性校驗。
得到校驗結果后,可執(zhí)行步驟11或步驟13進行處理。
步驟11,記錄校驗結果,并根據所述校驗結果生成監(jiān)控日志。
該過程可通過圖9中自檢裝置的監(jiān)控模塊實現。
步驟12,將所述監(jiān)控日志輸出到預設的監(jiān)控平臺,以進行數據監(jiān)控和預警。
步驟13,當校驗結果為不一致時,向業(yè)務裝置發(fā)送數據修改提醒。
數據修改提醒的內容具體是不一致數據的具體位置等,以使業(yè)務裝置根據該提醒進行數據修改。
步驟14,業(yè)務裝置接收所述自檢裝置發(fā)送的數據修改提醒,并根據所述數據修改提醒對相應的比對數據進行修改。
以上步驟中,步驟11-14是可選的。對于校驗結果可以采用多種方式進行處理,本申請對此不做限定。
在本申請的具體實施例中,可以通過在業(yè)務裝置之外建立異步化處理裝置來實現數據一致性自檢,也可以通過插件的方式來實現,但前者與業(yè)務裝置的隔離性更好,維護也更加便捷。
本實施例通過業(yè)務裝置發(fā)送變更數據信息,自檢裝置根據預設的校驗模式和變更數據信息向業(yè)務裝置發(fā)送比對數據調用請求,并根據業(yè)務裝置返回的比對數據進行一致性校驗,數據校驗過程不影響業(yè)務裝置工作,校驗過程和結果不影響正常業(yè)務的進行,且能夠及時對變更的數據進行校驗,具有良好的實時性和隔離性,并能夠同時適用于數據庫型存儲和緩存型存儲。
此外,對比于現有的校驗方式,本系統(tǒng)可以直接在生產環(huán)境實施,通過實時的監(jiān)控和報警手段,發(fā)現速度可以達到分鐘級,能夠及時發(fā)現數據不一致問題,并能由系統(tǒng)自動發(fā)現,精確定位到問題數據,不再被動處理問題,而是能夠主動發(fā)現問題從而快速消除影響,避免帶來大范圍用戶和業(yè)務影響,有效提升了多份全量數據最終一致性的驗證效率和出現問題時的響應速度。
需要說明的是,在本申請的描述中,術語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。此外,在本申請的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請的優(yōu)選實施方式的范圍包括另外的實現,其中可以不按所示出或討論的順序,包括根據所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應被本申請的實施例所屬技術領域的技術人員所理解。
應當理解,本申請的各部分可以用硬件、軟件、固件或它們的組合來實現。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現。例如,如果用硬件來實現,和在另一實施方式中一樣,可用本領域公知的下列技術中的任一項或他們的組合來實現:具有用于對數據信號實現邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現場可編程門陣列(fpga)等。
本技術領域的普通技術人員可以理解實現上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本申請的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管上面已經示出和描述了本申請的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本申請的限制,本領域的普通技術人員在本申請的范圍內可以對上述實施例進行變化、修改、替換和變型。