一種數(shù)據(jù)同步方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更為具體而言,涉及一種數(shù)據(jù)同步方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著中國經(jīng)濟的快速發(fā)展,國內(nèi)各大商業(yè)銀行各業(yè)務(wù)的交易量持續(xù)增長,業(yè)務(wù)復(fù)雜度不斷提高,數(shù)據(jù)集中需求日益突出,這些無疑都給后臺計算機系統(tǒng)的處理能力提出了新的挑戰(zhàn)。目前,國內(nèi)外各大商業(yè)銀行大多采用高性能高可靠的集群架構(gòu)進行核心系統(tǒng)的建設(shè)。
[0003]目前大多數(shù)商業(yè)銀行的集群架構(gòu)采用的是“兩地三中心”模式,即生產(chǎn)數(shù)據(jù)中心、同城災(zāi)備中心和異地災(zāi)備中心。數(shù)據(jù)中心間是主備關(guān)系。為了保障系統(tǒng)能不間斷提供業(yè)務(wù)服務(wù),采用雙數(shù)據(jù)中心獨立對外提供服務(wù),簡稱雙活。雙中心不僅要保證應(yīng)用服務(wù)器獨立,同時數(shù)據(jù)庫服務(wù)器也是獨立的,但對于實時性要求較高的銀行交易數(shù)據(jù)來說,若兩個數(shù)據(jù)中心之間的數(shù)據(jù)不同步,會造成嚴重的交易問題。
[0004]目前銀行的容災(zāi)備份系統(tǒng)大多采取的是主備模式。在這種模式下,主用系統(tǒng)或備用系統(tǒng)本身常常通過輪詢的方式從系統(tǒng)中的各單元獲取源數(shù)據(jù)更新的信息,例如通過輪詢來檢查與各單元數(shù)據(jù)對應(yīng)的時間是否發(fā)生變化。這種方式的缺點在于,更新始終有滯后性,特別是在有大量動態(tài)數(shù)據(jù)的情況下,輪詢將花費更多的時間并且會影響相應(yīng)單元的操作。在實際的運行過程中主備系統(tǒng)會出現(xiàn)響應(yīng)與切換周期長,資源利用率低和無法實現(xiàn)業(yè)務(wù)零中斷的問題。因此,兩個數(shù)據(jù)中心或者數(shù)據(jù)系統(tǒng)之間在確保業(yè)務(wù)連續(xù)的前提下進行數(shù)據(jù)同步,成為了目前亟需解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0005]為解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)同步方法和系統(tǒng)。
[0006]根據(jù)本發(fā)明實施方式的第一方面,提供了一種數(shù)據(jù)同步方法,該方法可包括:判斷待同步數(shù)據(jù)的類別,若所述待同步數(shù)據(jù)為實時同步數(shù)據(jù),則在所述第一數(shù)據(jù)中心完成對所述待同步數(shù)據(jù)的本地數(shù)據(jù)庫同步操作之后就向第二數(shù)據(jù)中心發(fā)起同步請求,并接收所述第二數(shù)據(jù)中心返回的請求反饋,然后根據(jù)所述請求反饋的結(jié)果確定所述待同步數(shù)據(jù)是否同步成功;若所述待同步數(shù)據(jù)為定期同步數(shù)據(jù),則定期向所述第二數(shù)據(jù)中心發(fā)起批量數(shù)據(jù)同步請求以對所述第二數(shù)據(jù)中心的本地數(shù)據(jù)庫進行同步。
[0007]在本發(fā)明的一些實施方式中,所述請求反饋包括接收回執(zhí)或者同步結(jié)果,其中,所述接收回執(zhí)是所述第二數(shù)據(jù)中心在接收到所述同步請求之后,未對本地數(shù)據(jù)庫更新之前,向所述第一數(shù)據(jù)中心返回的請求反饋,所述同步結(jié)果是所述第二數(shù)據(jù)中心在接收到所述同步請求之后,已對本地數(shù)據(jù)庫更新之后,向所述第一數(shù)據(jù)中心返回的請求反饋。
[0008]在本發(fā)明的一些實施方式中,所述接收所述第二數(shù)據(jù)中心返回的請求反饋,然后根據(jù)所述請求反饋的結(jié)果確定所述待同步數(shù)據(jù)是否同步成功包括:接收所述第二數(shù)據(jù)中心返回的接收回執(zhí),若所述接收回執(zhí)的結(jié)果為成功,則確定所述待同步數(shù)據(jù)同步成功,若所述接收回執(zhí)的結(jié)果為失敗,則將所述待同步數(shù)據(jù)記錄在異常交易表,確定所述待同步數(shù)據(jù)同步失敗。
[0009]在本發(fā)明的一些實施方式中,所述方法還包括:讀取所述異常交易表中的待同步數(shù)據(jù),向所述第二數(shù)據(jù)中心重新發(fā)起同步請求,接收所述第二數(shù)據(jù)中心返回的同步結(jié)果,根據(jù)所述同步結(jié)果的結(jié)果確定所述異常交易表中的待同步數(shù)據(jù)是否同步成功,若所述同步結(jié)果的結(jié)果為成功,則將所述異常交易表中的待同步數(shù)據(jù)的記錄刪除,若所述同步結(jié)果的結(jié)果為失敗,則繼續(xù)向所述第二數(shù)據(jù)中心重新發(fā)起同步請求。
[0010]在本發(fā)明的一些實施方式中,所述接收所述第二數(shù)據(jù)中心返回的請求反饋,然后根據(jù)所述請求反饋的結(jié)果確定所述待同步數(shù)據(jù)是否同步成功包括:接收所述第二數(shù)據(jù)中心返回的同步結(jié)果,若所述同步結(jié)果的結(jié)果為成功,則確認所述第一數(shù)據(jù)中心的本地數(shù)據(jù)庫的同步操作,確定所述待同步數(shù)據(jù)同步成功,若所述同步結(jié)果的結(jié)果為失敗,則將所述第一數(shù)據(jù)中心的本地數(shù)據(jù)庫的同步操作回滾,確定所述待同步數(shù)據(jù)同步失敗。
[0011]在本發(fā)明的一些實施方式中,所述向第二數(shù)據(jù)中心發(fā)起同步請求是通過單向隊列進行發(fā)送。
[0012]在本發(fā)明的一些實施方式中,所述接收所述第二數(shù)據(jù)中心返回的請求反饋是通過單向隊列進行接收。
[0013]根據(jù)本發(fā)明實施方式的第二方面,提供了一種數(shù)據(jù)同步系統(tǒng),所述系統(tǒng)包括:判斷模塊,用于判斷待同步數(shù)據(jù)的類別;請求處理模塊,設(shè)置于第一數(shù)據(jù)中心,用于:在待同步數(shù)據(jù)為實時同步數(shù)據(jù)時,在完成對所述待同步數(shù)據(jù)的本地數(shù)據(jù)庫同步操作之后就向第二數(shù)據(jù)中心發(fā)起同步請求,并接收所述第二數(shù)據(jù)中心返回的請求反饋,然后根據(jù)所述請求反饋的結(jié)果確定所述待同步數(shù)據(jù)是否同步成功;以及在所述待同步數(shù)據(jù)為定期同步數(shù)據(jù)時,定期向所述第二數(shù)據(jù)中心發(fā)起批量數(shù)據(jù)同步請求以對所述第二數(shù)據(jù)中心的本地數(shù)據(jù)庫進行同步;同步模塊,設(shè)置于所述第二數(shù)據(jù)中心,用于接收所述請求處理模塊發(fā)送的同步請求,并向所述請求處理模塊返回請求反饋。
[0014]在本發(fā)明的一些實施方式中,所述同步模塊,還用于在接收到所述同步請求之后,向所述請求處理模塊返回接收回執(zhí)作為請求反饋,然后對所述同步請求的待同步數(shù)據(jù)進行本地數(shù)據(jù)庫同步操作。
[0015]在本發(fā)明的一些實施方式中,所述同步模塊,還用于在接收到所述同步請求之后,對所述同步請求的待同步數(shù)據(jù)進行本地數(shù)據(jù)庫同步操作,然后向所述請求處理模塊返回所述本地數(shù)據(jù)庫同步操作的同步結(jié)果作為請求反饋。
[0016]在本發(fā)明的一些實施方式中,所述請求處理模塊,還用于:在所述接收回執(zhí)的結(jié)果為成功時確定所述待同步數(shù)據(jù)同步成功,在所述接收回執(zhí)的結(jié)果為失敗時將所述待同步數(shù)據(jù)記錄在異常交易表,確定所述待同步數(shù)據(jù)同步失敗。
[0017]在本發(fā)明的一些實施方式中,所述系統(tǒng)還包括:異常重發(fā)模塊,用于:讀取所述異常交易表中的待同步數(shù)據(jù),向所述同步模塊重新發(fā)起同步請求,接收所述同步模塊返回的同步結(jié)果,根據(jù)所述同步結(jié)果的結(jié)果確定所述異常交易表中的待同步數(shù)據(jù)是否同步成功,若所述同步結(jié)果的結(jié)果為成功,則將所述異常交易表中的待同步數(shù)據(jù)的記錄刪除,若所述同步結(jié)果的結(jié)果為失敗,則繼續(xù)向所述第二數(shù)據(jù)中心重新發(fā)起同步請求。
[0018]在本發(fā)明的一些實施方式中,所述請求處理模塊,還用于:在所述同步結(jié)果的結(jié)果為成功時確認所述第一數(shù)據(jù)中心的本地數(shù)據(jù)庫的同步操作,確定所述待同步數(shù)據(jù)同步成功,在所述同步結(jié)果的結(jié)果為失敗時將所述第一數(shù)據(jù)中心的本地數(shù)據(jù)庫的同步操作回滾,確定所述待同步數(shù)據(jù)同步失敗。
[0019]在本發(fā)明的一些實施方式中,所述同步模塊是通過單向隊列接收所述同步請求。
[0020]在本發(fā)明的一些實施方式中,所述同步模塊是通過單向隊列發(fā)送所述請求反饋。
[0021]本發(fā)明實施方式提供的數(shù)據(jù)同步方法和系統(tǒng),能夠根據(jù)待同步數(shù)據(jù)對實時性的要求分別進行實時同步和定期同步,有效緩解了數(shù)據(jù)同步的處理壓力,而且有利于保證交易數(shù)據(jù)的一致性和完整性。
【附圖說明】
[0022]圖1是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步方法的流程示意圖;
[0023]圖2是根據(jù)本發(fā)明一種實施方式的兩個數(shù)據(jù)中心的邏輯架構(gòu)示意圖;
[0024]圖3是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步方法的流程示意圖;
[0025]圖4是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)傳輸通道的示意圖;
[0026]圖5是根據(jù)據(jù)本發(fā)明一種實施方式的消息隊列的示意圖;
[0027]圖6是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步的流程示意圖;
[0028]圖7是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步的流程示意圖;
[0029]圖8是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖;
[0030]圖9是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0031]以下結(jié)合附圖和【具體實施方式】對本發(fā)明的各個方面進行詳細闡述。其中,眾所周知的模塊、單元及其相互之間的連接、鏈接、通信或操作沒有示出或未作詳細說明。并且,所描述的特征、架構(gòu)或功能可在一個或一個以上實施方式中以任何方式組合。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,下述的各種實施方式只用于舉例說明,而非用于限制本發(fā)明的保護范圍。還可以容易理解,本文所述和附圖所示的各實施方式中的模塊或單元或處理方式可以按各種不同配置進行組合和設(shè)計。
[0032]參見圖1,圖1是根據(jù)本發(fā)明一種實施方式的數(shù)據(jù)同步方法的流程示意圖,該方法可包括:
[0033]S101,判斷待同步數(shù)據(jù)的類別,若是實時同步數(shù)據(jù),則執(zhí)行步驟S102,若是定期同步數(shù)據(jù),則執(zhí)行步驟S103;
[0034]S102,在所述第一數(shù)據(jù)中心完成對所述待同步數(shù)據(jù)的本地數(shù)據(jù)庫同步操作之后就向第二數(shù)據(jù)中心發(fā)起同步請求,并接收所述第二數(shù)據(jù)中心返回的請求反饋,然后根據(jù)所述請求反饋的結(jié)果確定所述待同步