無法直接通信的伺服器間進行可靠數據轉移的方法及系統與流程
2023-05-20 14:04:31 2

本發明屬於大數據領域,特別涉及一種無法直接通信的伺服器間進行可靠數據轉移的方法及系統。
背景技術:
大數據是近年來各行各業研究的熱點,在數據收集、存儲、傳輸的過程中,由於存儲介質、存儲方式、網絡連通性、實時性要求等方面的多樣性,需要對數據進行及時的轉移和存儲,以減輕數據採集伺服器的存儲壓力,並保證歷史數據被完整保留以便於後續深入分析。
目前,當需要在無法直接通信的兩臺伺服器間進行數據轉移時,常使用同步兩臺伺服器的系統時間、設定相對長的任務執行間隔時間等方法來提高可靠性,一旦兩臺伺服器間的系統時間出現錯位或某一端任務失敗,則容易引起數據轉移任務的失敗,需要人工監控任務執行情況並及時處理失敗任務,可靠性不高而且浪費人力。
技術實現要素:
【要解決的技術問題】
本發明的目的是提供一種無法直接通信的伺服器間進行可靠數據轉移的方法及系統,以在無法直接通信的兩臺伺服器間進行數據的可靠轉移。
【技術方案】
本發明是通過以下技術方案實現的。
本發明首先涉及一種無法直接通信的伺服器間進行可靠數據轉移的方法,包括數據源伺服器數據處理流程和目標伺服器數據處理流程,
所述數據源伺服器數據處理流程包括以下步驟:
A1、查詢數據源伺服器上的源數據表是否存在數據,如果存在數據則轉入步驟B1,否則退出本方法流程;
B1、查詢當前時間數據源伺服器上的源數據表中最大的ID值,將該最大的ID值存入第一變量,查詢跳板伺服器的中間ID表中最大的ID值,將該最大的ID值存入第二變量;
C1、從數據源伺服器上的源數據表中取出ID值大於第二變量且小於等於第一變量的數據行,將取出的數據行轉存至跳板伺服器的中間數據表中;
D1、查詢跳板伺服器的中間數據表中的最大ID值,將其存入跳板伺服器的中間ID表中,
所述目標伺服器數據處理流程包括以下步驟:
A2、查詢跳板伺服器上的中間數據表是否存在數據,如果存在數據則轉入步驟B2,否則退出本方法流程;
B2、查詢當前時間跳板伺服器上的中間數據表中最大的ID值,將該最大的ID值存入第三變量;
C2、從跳板伺服器上的中間數據表中取出ID值小於等於第三變量的數據行,將取出的數據行轉存至目標伺服器的目標數據表中。
作為一種優選的實施方式,所述C1之後還包括:從跳板伺服器的中間數據表中刪除ID值小於等於第三變量的數據行。
本發明還涉及一種無法直接通信的伺服器間進行可靠數據轉移的系統,包括數據源伺服器、目標伺服器、跳板伺服器、數據源伺服器數據處理模塊和目標伺服器數據處理模塊,所述數據源伺服器上設置有源數據表,所述目標伺服器上設置有目標數據表,所述跳板伺服器上設置有中間數據表和中間ID表,
所述數據源伺服器數據處理模塊被配置成:查詢數據源伺服器上的源數據表是否存在數據,如果存在數據則查詢當前時間數據源伺服器上的源數據表中最大的ID值,將該最大的ID值存入第一變量,查詢跳板伺服器的中間ID表中最大的ID值,將該最大的ID值存入第二變量;從數據源伺服器上的源數據表中取出ID值大於第二變量且小於等於第一變量的數據行,將取出的數據行轉存至跳板伺服器的中間數據表中;查詢跳板伺服器的中間數據表中的最大ID值,將其存入跳板伺服器的中間ID表中,
所述目標伺服器數據處理模塊被配置成:查詢跳板伺服器上的中間數據表是否存在數據,如果存在數據則查詢當前時間跳板伺服器上的中間數據表中最大的ID值,將該最大的ID值存入第三變量;從跳板伺服器上的中間數據表中取出ID值小於等於第三變量的數據行,將取出的數據行轉存至目標伺服器的目標數據表中。
作為一種優選的實施方式,所述目標伺服器數據處理模塊還被配置成:將中間數據表中ID值小於等於第三變量的數據行轉存至目標伺服器的目標數據表後,從跳板伺服器的中間數據表中刪除ID值小於等於第三變量的數據行。
【有益效果】
本發明提出的技術方案具有以下有益效果:
本發明實現的數據轉移方法不依賴兩臺伺服器間的系統時間同步,也不依賴兩臺伺服器上的任務進行的先後順序,即使某一端任務失敗,對另一端的任務執行不會產生影響,且能在下一次任務執行時自動補全前次任務失敗產生的數據缺失問題。因此,本發明降低了伺服器設置的複雜度,而且本發明中的容錯機制也能儘可能的節省運維成本。
附圖說明
圖1為本發明的實施例一提供的無法直接通信的伺服器間進行可靠數據轉移的系統的原理框圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚,下面將對本發明的具體實施方式進行清楚、完整的描述。
實施例一
圖1為本發明實施例一提供的無法直接通信的伺服器間進行可靠數據轉移的系統的原理框圖。如圖1所示,該系統包括數據源伺服器1、目標伺服器2、跳板伺服器3、數據源伺服器數據處理模塊和目標伺服器數據處理模塊,數據源伺服器1上設置有源數據表,目標伺服器2上設置有目標數據表,跳板伺服器3上設置有中間數據表和中間ID表。
數據源伺服器數據處理模塊被配置成:查詢數據源伺服器1上的源數據表是否存在數據,如果存在數據則查詢當前時間數據源伺服器1上的源數據表中最大的ID值,將該最大的ID值存入第一變量,查詢跳板伺服器3的中間ID表中最大的ID值,將該最大的ID值存入第二變量;從數據源伺服器1上的源數據表中取出ID值大於第二變量且小於等於第一變量的數據行,將取出的數據行轉存至跳板伺服器的中間數據表中;查詢跳板伺服器3的中間數據表中的最大ID值,將其存入跳板伺服器3的中間ID表中。
目標伺服器數據處理模塊被配置成:查詢跳板伺服器3上的中間數據表是否存在數據,如果存在數據則查詢當前時間跳板伺服器3上的中間數據表中最大的ID值,將該最大的ID值存入第三變量;從跳板伺服器3上的中間數據表中取出ID值小於等於第三變量的數據行,將取出的數據行轉存至目標伺服器2的目標數據表中。
另外,目標伺服器數據處理模塊還被配置成:將中間數據表中ID值小於等於第三變量的數據行轉存至目標伺服器2的目標數據表後,從跳板伺服器2的中間數據表中刪除ID值小於等於第三變量的數據行。
採用實施例一中的系統實現的無法直接通信的伺服器間進行可靠數據轉移的方法可以參考下述具體方法實施例。
實施例二
實施例二為無法直接通信的伺服器間進行可靠數據轉移的方法,該方法包括數據源伺服器數據處理流程和目標伺服器數據處理流程。
數據源伺服器數據處理流程包括以下步驟:
A1、查詢數據源伺服器上的源數據表是否存在數據,如果存在數據則轉入步驟B1,否則退出本方法流程。
B1、查詢當前時間(假設為t1)數據源伺服器上的源數據表中最大的ID值,將該最大的ID值存入MAXID,查詢跳板伺服器的中間ID表中最大的ID值,將該最大的ID值存入MINID。由於源數據表中的數據是隨時更新的,因此該步驟取出的MAXID是t1時刻的源數據表中的最新一條數據的ID。而中間ID表中的最大ID即MINID,就是上一次執行任務時,從表a中取出的數據的最大ID,本次任務中,從該ID的下一個ID所在的行開始取數據即可。
C1、從數據源伺服器上的源數據表中取出ID值大於MINID且小於等於MAXID的數據行,將取出的數據行轉存至跳板伺服器的中間數據表中。
D1、查詢跳板伺服器的中間數據表中的最大ID值,將其存入跳板伺服器的中間ID表中。
目標伺服器數據處理流程包括以下步驟:
A2、查詢跳板伺服器上的中間數據表是否存在數據,如果存在數據則轉入步驟B2,否則退出本方法流程;
B2、查詢當前時間(假設為t2)跳板伺服器上的中間數據表中最大的ID值,將該最大的ID值存入MAXID_2。以該t2時刻為分界,若數據源伺服器在t2時刻之前存入中間數據表的數據,會在後續步驟中被轉存;若在t2時刻之後存入中間數據表的數據,則本次任務中不會轉存,被順延到下一次任務。
C2、從跳板伺服器上的中間數據表中取出ID值小於等於MAXID_2的數據行,將取出的數據行轉存至目標伺服器的目標數據表中。
進一步,在實施例一的基礎上,步驟C2之後還包括:從跳板伺服器的中間數據表中刪除ID值小於等於MAXID_2的數據行,以免造成存儲空間的浪費。
從以上實施例可以看出,本發明實施例實現的數據轉移方法不依賴兩臺伺服器間的系統時間同步,也不依賴兩臺伺服器上的任務進行的先後順序,即使某一端任務失敗,對另一端的任務執行不會產生影響,且能在下一次任務執行時自動補全前次任務失敗產生的數據缺失問題。因此,本發明降低了伺服器設置的複雜度,而且本發明中的容錯機制也能儘可能的節省運維成本。
需要說明,上述描述的實施例是本發明的一部分實施例,而不是全部實施例,也不是對本發明的限制。基於本發明的實施例,本領域普通技術人員在不付出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明的保護範圍。