本技術(shù)涉及信息處理,尤其涉及一種數(shù)據(jù)遷移方法、裝置、設(shè)備、存儲介質(zhì)及計算機(jī)程序。
背景技術(shù):
1、跨集群數(shù)據(jù)同步遷移是一個涉及將數(shù)據(jù)從一個集群實(shí)時或近實(shí)時地遷移到另一個集群的過程,通常是基于kafka?mirrormaker跨集群進(jìn)行數(shù)據(jù)同步遷移,基于kafka擴(kuò)容后按分區(qū)進(jìn)行數(shù)據(jù)遷移。mirrormaker只是負(fù)責(zé)了topic數(shù)據(jù)同步,但最重要部分應(yīng)是同步后應(yīng)用系統(tǒng)如何切換到新集群的topic,它沒有解決。
2、針對該問題,目前通常有兩種解決方法:第一個方法,改造應(yīng)用,同時消費(fèi)新老topic,消費(fèi)一段時間后,再停止,同時把老topic給去掉,這樣就能保障切換過程中數(shù)據(jù)不丟,但會有大量數(shù)據(jù)重復(fù)。第二個方法,對新topic預(yù)估一個重置offset的時間(根據(jù)應(yīng)用已消費(fèi)的數(shù)據(jù)決定),停止應(yīng)用、重置offset、再啟動應(yīng)用,該方案需要用戶對kafka?offset有足夠了解,才能保證重置后,數(shù)據(jù)不丟、數(shù)據(jù)重復(fù)少。另外,kafka?mirrormaker需要保證源kafka集群和目標(biāo)kafka集群之間的版本兼容性,否則可能會出現(xiàn)兼容性問題,整體來說,采用該方案,會給使用方帶來額外工作量和數(shù)據(jù)風(fēng)險。
3、因此,在數(shù)據(jù)遷移時,如何保證數(shù)據(jù)不丟失且數(shù)據(jù)不重復(fù),是目前亟需解決的一個問題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種數(shù)據(jù)遷移方法、裝置、設(shè)備、存儲介質(zhì)及計算機(jī)程序,旨在解決如何保證數(shù)據(jù)不丟失且數(shù)據(jù)不重復(fù)的技術(shù)問題。
2、為實(shí)現(xiàn)上述目的,本技術(shù)提供一種數(shù)據(jù)遷移方法,所述數(shù)據(jù)遷移方法包括:
3、從預(yù)設(shè)源頭主題中拉取消費(fèi)數(shù)據(jù)并進(jìn)行分組處理,得到分組數(shù)據(jù),所述分組數(shù)據(jù)中包含消費(fèi)數(shù)據(jù)在預(yù)設(shè)源頭主題中的第一相對位置;
4、將所述分組數(shù)據(jù)異步發(fā)送至預(yù)設(shè)目標(biāo)主題,得到發(fā)送結(jié)果,所述分組數(shù)據(jù)中包含至少兩個子數(shù)據(jù),每次按預(yù)設(shè)間隔時間單獨(dú)發(fā)送一個所述子數(shù)據(jù)發(fā)送至預(yù)設(shè)目標(biāo)主題;
5、通過回調(diào)函數(shù)對所述發(fā)送結(jié)果進(jìn)行記錄響應(yīng),得到響應(yīng)結(jié)果;
6、若所述響應(yīng)結(jié)果顯示發(fā)送結(jié)果為消費(fèi)數(shù)據(jù)發(fā)送成功,則記錄所述第一相對位置在預(yù)設(shè)目標(biāo)主題中對應(yīng)的第二相對位置;
7、將所述第一相對位置和第二相對位置提交至預(yù)設(shè)源頭主題。
8、在一實(shí)施例中,所述通過回調(diào)函數(shù)對所述發(fā)送結(jié)果進(jìn)行記錄響應(yīng),得到響應(yīng)結(jié)果的步驟之后,包括:
9、若所述響應(yīng)結(jié)果顯示發(fā)送結(jié)果為消費(fèi)數(shù)據(jù)發(fā)送失敗或記錄響應(yīng)超時,則以預(yù)設(shè)休眠時間休眠;
10、休眠結(jié)束后重新執(zhí)行從預(yù)設(shè)源頭主題中拉取消費(fèi)數(shù)據(jù)并進(jìn)行分組處理,得到分組數(shù)據(jù)的步驟并記錄成功數(shù)據(jù)至所述第二相對位置中,所述成功數(shù)據(jù)為發(fā)送成功的分組數(shù)據(jù)。
11、在一實(shí)施例中,所述記錄所述第一相對位置在預(yù)設(shè)目標(biāo)主題中對應(yīng)的第二相對位置的步驟之后還包括:
12、通過所述第一相對位置和第二相對位置構(gòu)建相對位置映射表;
13、根據(jù)所述相對位置映射表重置所述第一相對位置和第二相對位置。
14、在一實(shí)施例中,所述通過回調(diào)函數(shù)對所述發(fā)送結(jié)果進(jìn)行記錄響應(yīng),得到響應(yīng)結(jié)果的步驟之后,包括:
15、若所述發(fā)送結(jié)果為分組數(shù)據(jù)全部發(fā)送失敗或記錄響應(yīng)超時,則重新對所述分組數(shù)據(jù)進(jìn)行發(fā)送。
16、在一實(shí)施例中,所述數(shù)據(jù)遷移方法還包括:
17、接收新建的同步任務(wù),所述同步任務(wù)通過對數(shù)據(jù)進(jìn)行讀取處理產(chǎn)生消費(fèi)數(shù)據(jù);
18、定時掃描所述同步任務(wù),若所述發(fā)送結(jié)果為消費(fèi)數(shù)據(jù)發(fā)送失敗,則重新下發(fā)同步任務(wù);
19、若所述同步任務(wù)等待超時,則重新下發(fā)同步任務(wù);
20、在同步任務(wù)完成后,通過用戶的下線指令下線所述同步任務(wù)。
21、在一實(shí)施例中,所述數(shù)據(jù)遷移方法通過查詢引擎執(zhí)行,所述同步任務(wù)部署在第一節(jié)點(diǎn)和第二節(jié)點(diǎn)上,所述數(shù)據(jù)遷移方法包括:
22、接收所述第一節(jié)點(diǎn)注冊的同步進(jìn)程、發(fā)送線程和進(jìn)程心跳,所述同步進(jìn)程、發(fā)送線程和進(jìn)程心跳屬于所述查詢引擎;
23、向所述第二節(jié)點(diǎn)下發(fā)所述同步任務(wù)或下線所述同步任務(wù);
24、若所述第一節(jié)點(diǎn)出現(xiàn)錯誤無法運(yùn)行時,則通過第二節(jié)點(diǎn)執(zhí)行下發(fā)所述同步任務(wù)或下線所述同步任務(wù)的步驟;
25、若所述第二節(jié)點(diǎn)出現(xiàn)錯誤無法運(yùn)行時,則通過所述第一節(jié)點(diǎn)執(zhí)行注冊同步進(jìn)程、發(fā)送線程和進(jìn)程心跳。
26、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種數(shù)據(jù)遷移裝置,所述數(shù)據(jù)遷移裝置包括:
27、數(shù)據(jù)拉取模塊,用于從預(yù)設(shè)源頭主題中拉取消費(fèi)數(shù)據(jù)并進(jìn)行分組處理,得到分組數(shù)據(jù),所述分組數(shù)據(jù)中包含消費(fèi)數(shù)據(jù)在預(yù)設(shè)源頭主題中的第一相對位置;
28、數(shù)據(jù)發(fā)送模塊,用于將所述分組數(shù)據(jù)異步發(fā)送至預(yù)設(shè)目標(biāo)主題,得到發(fā)送結(jié)果,所述分組數(shù)據(jù)中包含至少兩個子數(shù)據(jù),每次按預(yù)設(shè)間隔時間單獨(dú)發(fā)送一個所述子數(shù)據(jù)發(fā)送至預(yù)設(shè)目標(biāo)主題;
29、發(fā)送記錄模塊,用于通過回調(diào)函數(shù)對所述發(fā)送結(jié)果進(jìn)行記錄響應(yīng),得到響應(yīng)結(jié)果;
30、相對位置記錄模塊,用于若所述響應(yīng)結(jié)果顯示發(fā)送結(jié)果為消費(fèi)數(shù)據(jù)發(fā)送成功,則記錄所述第一相對位置在預(yù)設(shè)目標(biāo)主題中對應(yīng)的第二相對位置;
31、相對位置提交模塊,用于將所述第一相對位置和第二相對位置提交至預(yù)設(shè)源頭主題。
32、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種數(shù)據(jù)遷移設(shè)備,所述數(shù)據(jù)遷移設(shè)備包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運(yùn)行的計算機(jī)程序,所述計算機(jī)程序用于執(zhí)行如上所述數(shù)據(jù)遷移方法的步驟。
33、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種存儲介質(zhì),所述存儲介質(zhì)為計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)上存儲有實(shí)現(xiàn)數(shù)據(jù)遷移方法的程序,所述實(shí)現(xiàn)數(shù)據(jù)遷移方法的程序被處理器執(zhí)行以實(shí)現(xiàn)如上所述數(shù)據(jù)遷移方法的步驟。
34、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如上述的數(shù)據(jù)遷移方法的步驟。
35、本技術(shù)提供了一種數(shù)據(jù)遷移方法,從預(yù)設(shè)源頭主題中拉取消費(fèi)數(shù)據(jù)并進(jìn)行分組處理,得到分組數(shù)據(jù),所述分組數(shù)據(jù)中包含消費(fèi)數(shù)據(jù)在預(yù)設(shè)源頭主題中的第一相對位置;將所述分組數(shù)據(jù)異步發(fā)送至預(yù)設(shè)目標(biāo)主題,得到發(fā)送結(jié)果,所述分組數(shù)據(jù)中包含至少兩個子數(shù)據(jù),每次按預(yù)設(shè)間隔時間單獨(dú)發(fā)送一個所述子數(shù)據(jù)發(fā)送至預(yù)設(shè)目標(biāo)主題;通過回調(diào)函數(shù)對所述發(fā)送結(jié)果進(jìn)行記錄響應(yīng),得到響應(yīng)結(jié)果;若所述響應(yīng)結(jié)果顯示發(fā)送結(jié)果為消費(fèi)數(shù)據(jù)發(fā)送成功,則記錄所述第一相對位置在預(yù)設(shè)目標(biāo)主題中對應(yīng)的第二相對位置;成功發(fā)送后記錄位置。如果回調(diào)函數(shù)返回的響應(yīng)結(jié)果顯示消費(fèi)數(shù)據(jù)發(fā)送成功,那么記錄該數(shù)據(jù)在目標(biāo)主題中的第二相對位置。這樣,即使在數(shù)據(jù)遷移過程中發(fā)生中斷,也能從上次成功發(fā)送的位置繼續(xù)。將所述第一相對位置和第二相對位置提交至預(yù)設(shè)源頭主題。
36、綜上可知,本技術(shù)通過分組處理與記錄相對位置結(jié)合異步發(fā)送與間隔控制將第一相對位置和第二相對位置提交回源頭主題,克服了mirrormaker只是負(fù)責(zé)了topic數(shù)據(jù)同步的技術(shù)缺陷,在數(shù)據(jù)遷移時,保證了數(shù)據(jù)不丟失且數(shù)據(jù)不重復(fù)。