本技術(shù)涉及數(shù)據(jù)同步,特別是涉及數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、當(dāng)前,隨著信息技術(shù)的高速發(fā)展,相關(guān)的應(yīng)用已經(jīng)逐步融入到人們的生活中,為人們提供了各式各樣的服務(wù)。這些應(yīng)用可能涉及到各類的數(shù)據(jù)傳輸和處理,在一些場景下,不同的數(shù)據(jù)接收端需要保持數(shù)據(jù)的一致性,如果接收到的數(shù)據(jù)不一致,可能影響應(yīng)用的性能。此時,需要使用到數(shù)據(jù)同步技術(shù),將相同的數(shù)據(jù)同步分發(fā)給不同的數(shù)據(jù)接收端。
2、相關(guān)技術(shù)中,在進行數(shù)據(jù)同步時,為了提高數(shù)據(jù)傳輸和處理的效率,一般是進行實時同步。比如說將數(shù)據(jù)放置在消息隊列中,不同的數(shù)據(jù)接收端可以直接從消息隊列內(nèi)讀取并處理數(shù)據(jù)。由于各個數(shù)據(jù)接收端都從同一消息隊列讀取數(shù)據(jù),保障了數(shù)據(jù)的一致性。但是,在實際應(yīng)用中發(fā)現(xiàn),有些數(shù)據(jù)接收端可能存在網(wǎng)絡(luò)傳輸狀態(tài)不佳的情況,無法及時獲取數(shù)據(jù)進行處理,導(dǎo)致網(wǎng)絡(luò)傳輸資源的利用率低,且影響數(shù)據(jù)處理的效率。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供了一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì),能夠提高網(wǎng)絡(luò)傳輸資源的利用率,改善數(shù)據(jù)傳輸和處理的效率。
2、本技術(shù)實施例的一方面提供了一種數(shù)據(jù)同步方法,用于數(shù)據(jù)發(fā)送端,所述數(shù)據(jù)發(fā)送端向多個數(shù)據(jù)接收端進行數(shù)據(jù)同步傳輸,且所述數(shù)據(jù)發(fā)送端預(yù)存有各個所述數(shù)據(jù)接收端的業(yè)務(wù)處理邏輯;所述方法包括:
3、獲取目標數(shù)據(jù);
4、檢測與各個所述數(shù)據(jù)接收端之間的網(wǎng)絡(luò)傳輸狀態(tài),根據(jù)所述網(wǎng)絡(luò)傳輸狀態(tài)確定各個所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式;其中,所述數(shù)據(jù)同步模式包括實時同步模式和批量同步模式;
5、若確定所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式為所述實時同步模式,向所述數(shù)據(jù)接收端發(fā)送所述目標數(shù)據(jù);
6、若確定所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式為所述批量同步模式,查詢預(yù)存的所述數(shù)據(jù)接收端的所述業(yè)務(wù)處理邏輯,根據(jù)所述業(yè)務(wù)處理邏輯對所述目標數(shù)據(jù)進行處理,并批量向所述數(shù)據(jù)接收端發(fā)送處理后的目標數(shù)據(jù)。
7、另一方面,本技術(shù)實施例提供了一種數(shù)據(jù)同步裝置,用于數(shù)據(jù)發(fā)送端,所述數(shù)據(jù)發(fā)送端向多個數(shù)據(jù)接收端進行數(shù)據(jù)同步傳輸,且所述數(shù)據(jù)發(fā)送端預(yù)存有各個所述數(shù)據(jù)接收端的業(yè)務(wù)處理邏輯;所述裝置包括:
8、獲取單元,用于獲取目標數(shù)據(jù);
9、檢測單元,用于檢測與各個所述數(shù)據(jù)接收端之間的網(wǎng)絡(luò)傳輸狀態(tài),根據(jù)所述網(wǎng)絡(luò)傳輸狀態(tài)確定各個所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式;其中,所述數(shù)據(jù)同步模式包括實時同步模式和批量同步模式;
10、第一處理單元,用于若確定所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式為所述實時同步模式,向所述數(shù)據(jù)接收端發(fā)送所述目標數(shù)據(jù);
11、第二處理單元,用于若確定所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式為所述批量同步模式,查詢預(yù)存的所述數(shù)據(jù)接收端的所述業(yè)務(wù)處理邏輯,根據(jù)所述業(yè)務(wù)處理邏輯對所述目標數(shù)據(jù)進行處理,并批量向所述數(shù)據(jù)接收端發(fā)送處理后的目標數(shù)據(jù)。
12、可選地,在一些實施例中,所述裝置還包括轉(zhuǎn)換單元,所述轉(zhuǎn)換單元具體用于:
13、按照鏈表的數(shù)據(jù)結(jié)構(gòu),將所述目標數(shù)據(jù)轉(zhuǎn)換為多條日志數(shù)據(jù);
14、根據(jù)所述目標數(shù)據(jù)中的數(shù)據(jù)排序,確定各條所述日志數(shù)據(jù)對應(yīng)的日志索引。
15、可選地,在一些實施例中,所述第一處理單元具體用于:
16、獲取所述數(shù)據(jù)接收端的系統(tǒng)標識符;
17、根據(jù)所述日志索引,抽取若干條所述日志數(shù)據(jù)作為當(dāng)前批次的待同步數(shù)據(jù),并查詢所述待同步數(shù)據(jù)中處于末尾位置的日志數(shù)據(jù)對應(yīng)的第一日志索引;
18、將所述系統(tǒng)標識符、所述待同步數(shù)據(jù)和所述第一日志索引發(fā)送給所述數(shù)據(jù)接收端。
19、可選地,在一些實施例中,所述第一處理單元具體用于:
20、查詢所述數(shù)據(jù)接收端最近一次反饋的第二日志索引;其中,所述第二日志索引用于表征所述數(shù)據(jù)接收端完成同步的一個批次的待同步數(shù)據(jù)中,處于末尾位置的日志數(shù)據(jù)對應(yīng)的日志索引;
21、從所述第二日志索引對應(yīng)的日志數(shù)據(jù)的下一條日志數(shù)據(jù)開始,抽取第一個數(shù)的日志數(shù)據(jù)作為當(dāng)前批次的待同步數(shù)據(jù)。
22、可選地,在一些實施例中,所述第一處理單元具體用于:
23、檢測當(dāng)前時間節(jié)點下正在進行數(shù)據(jù)同步的數(shù)據(jù)接收端的第二個數(shù),以及當(dāng)前時間節(jié)點之前的第一預(yù)設(shè)時段中接收到的數(shù)據(jù)同步請求的第三個數(shù);
24、根據(jù)所述第二個數(shù)和所述第三個數(shù),確定抽取當(dāng)前批次的待同步數(shù)據(jù)時所使用的所述第一個數(shù);
25、其中,所述第一個數(shù)和所述第二個數(shù)負相關(guān),且所述第一個數(shù)和所述第三個數(shù)負相關(guān)。
26、可選地,在一些實施例中,所述第一處理單元還用于:
27、記錄向所述數(shù)據(jù)接收端發(fā)送當(dāng)前批次的待同步數(shù)據(jù)的第一時間節(jié)點;
28、若所述第一時間節(jié)點之后的第二預(yù)設(shè)時段內(nèi)收到所述數(shù)據(jù)接收端反饋的與所述當(dāng)前批次對應(yīng)的第二日志索引,根據(jù)所述當(dāng)前批次對應(yīng)的第二日志索引,抽取下一批次的待同步數(shù)據(jù);
29、若所述第一時間節(jié)點之后的第二預(yù)設(shè)時段內(nèi)未收到所述數(shù)據(jù)接收端反饋的與所述當(dāng)前批次對應(yīng)的第二日志索引,重新將當(dāng)前批次的所述待同步數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接收端。
30、可選地,在一些實施例中,所述第二處理單元具體用于:
31、獲取所述數(shù)據(jù)接收端的系統(tǒng)標識符;
32、根據(jù)所述業(yè)務(wù)處理邏輯對所述日志數(shù)據(jù)進行處理,得到所述日志數(shù)據(jù)對應(yīng)的處理數(shù)據(jù);
33、當(dāng)新增的所述處理數(shù)據(jù)的數(shù)據(jù)量達到預(yù)設(shè)容量閾值,或者距離上一次發(fā)送所述處理數(shù)據(jù)的時長達到預(yù)設(shè)時長閾值,查詢當(dāng)前預(yù)處理的最后一條日志數(shù)據(jù)對應(yīng)的第三日志索引;
34、將所述系統(tǒng)標識符、所述處理數(shù)據(jù)和所述第三日志索引發(fā)送給所述數(shù)據(jù)接收端。
35、可選地,在一些實施例中,所述檢測單元具體用于:
36、檢測與所述數(shù)據(jù)接收端之間的網(wǎng)絡(luò)環(huán)境參數(shù);
37、根據(jù)所述網(wǎng)絡(luò)環(huán)境參數(shù),確定所述數(shù)據(jù)接收端對應(yīng)的網(wǎng)絡(luò)質(zhì)量評分;
38、若所述網(wǎng)絡(luò)質(zhì)量評分大于預(yù)設(shè)評分閾值,確定所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式為所述實時同步模式;
39、若所述網(wǎng)絡(luò)質(zhì)量評分小于或者等于所述預(yù)設(shè)評分閾值,確定所述數(shù)據(jù)接收端對應(yīng)的數(shù)據(jù)同步模式為所述批量同步模式。
40、可選地,在一些實施例中,所述數(shù)據(jù)發(fā)送端為分布式源數(shù)據(jù)系統(tǒng),所述分布式源數(shù)據(jù)系統(tǒng)包括主節(jié)點和多個從節(jié)點,所述主節(jié)點用于向多個所述數(shù)據(jù)接收端進行數(shù)據(jù)同步傳輸;所述獲取單元具體用于:
41、通過所述主節(jié)點獲取原始數(shù)據(jù);
42、通過所述主節(jié)點對所述原始數(shù)據(jù)進行轉(zhuǎn)換,得到屬于通用數(shù)據(jù)交換格式的標準數(shù)據(jù);
43、通過所述主節(jié)點將所述標準數(shù)據(jù)發(fā)送到各個所述從節(jié)點,并通過所述從節(jié)點對所述標準數(shù)據(jù)進行共識,將共識后的所述標準數(shù)據(jù)確定為目標數(shù)據(jù)。
44、可選地,在一些實施例中,所述獲取單元具體用于:
45、通過所述主節(jié)點對所述標準數(shù)據(jù)進行哈希處理,得到第一哈希值;
46、通過所述主節(jié)點將所述標準數(shù)據(jù)和所述第一哈希值發(fā)送到各個所述從節(jié)點;
47、通過所述從節(jié)點對所述標準數(shù)據(jù)進行哈希處理,得到第二哈希值,并校驗所述第一哈希值和所述第二哈希值的一致性,得到所述標準數(shù)據(jù)對應(yīng)的一致性校驗結(jié)果;
48、當(dāng)超過一半的所述從節(jié)點的一致性校驗結(jié)果為通過,確定所述標準數(shù)據(jù)完成共識。
49、可選地,在一些實施例中,所述數(shù)據(jù)發(fā)送端為分布式源數(shù)據(jù)系統(tǒng),所述分布式源數(shù)據(jù)系統(tǒng)包括主節(jié)點和多個從節(jié)點,所述主節(jié)點用于向多個所述數(shù)據(jù)接收端進行數(shù)據(jù)同步傳輸;所述裝置還包括切換單元,所述切換單元具體用于:
50、將所述主節(jié)點中的數(shù)據(jù)同步到各個所述從節(jié)點;
51、檢測所述分布式源數(shù)據(jù)系統(tǒng)的運行狀態(tài);
52、當(dāng)確定所述分布式源數(shù)據(jù)系統(tǒng)需要切換主節(jié)點時,從所述從節(jié)點中確定新的主節(jié)點;
53、檢測舊的主節(jié)點中是否存在未完成的數(shù)據(jù)同步任務(wù);其中,所述未完成的數(shù)據(jù)同步任務(wù)為已發(fā)送待同步數(shù)據(jù)但未接收到所述數(shù)據(jù)接收端反饋對應(yīng)的所述第二日志索引的數(shù)據(jù)同步任務(wù);
54、若所述舊的主節(jié)點中存在未完成的數(shù)據(jù)同步任務(wù),停止通過所述舊的主節(jié)點發(fā)送新的待同步數(shù)據(jù),直至所述未完成的數(shù)據(jù)同步任務(wù)完成或者超時,切換到所述新的主節(jié)點進行數(shù)據(jù)同步傳輸。
55、另一方面,本技術(shù)實施例提供了一種電子設(shè)備,包括處理器以及存儲器;
56、所述存儲器用于存儲計算機程序;
57、所述處理器執(zhí)行所述計算機程序?qū)崿F(xiàn)前述的數(shù)據(jù)同步方法。
58、另一方面,本技術(shù)實施例提供了一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行實現(xiàn)前述的數(shù)據(jù)同步方法。
59、另一方面,本技術(shù)實施例還提供了一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機程序,該計算機程序存儲在計算機可讀存介質(zhì)中,計算機設(shè)備的處理器從計算機可讀存儲介質(zhì)讀取該計算機程序,處理器執(zhí)行該計算機程序,使得該計算機設(shè)備執(zhí)行實現(xiàn)前述的數(shù)據(jù)同步方法。
60、本技術(shù)實施例至少包括以下有益效果:本技術(shù)提供一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì),本技術(shù)的方法可以應(yīng)用在數(shù)據(jù)發(fā)送端,該數(shù)據(jù)發(fā)送端用于向多個數(shù)據(jù)接收端進行數(shù)據(jù)同步傳輸,且預(yù)存有各個數(shù)據(jù)接收端的業(yè)務(wù)處理邏輯,該方法獲取目標數(shù)據(jù),對于每個數(shù)據(jù)接收端,檢測和它之間的網(wǎng)絡(luò)傳輸狀態(tài),從而確定該數(shù)據(jù)接收端使用實時同步模式還是批量同步模式,對于使用實時同步模式的數(shù)據(jù)接收端,直接發(fā)送目標數(shù)據(jù),提高目標數(shù)據(jù)傳輸?shù)綌?shù)據(jù)接收端的效率;對于使用批量同步模式的數(shù)據(jù)接收端,通過預(yù)存的與該數(shù)據(jù)接收端對應(yīng)的業(yè)務(wù)處理邏輯,對目標數(shù)據(jù)進行預(yù)處理,然后批量向數(shù)據(jù)接收端發(fā)送預(yù)處理后的目標數(shù)據(jù),提高目標數(shù)據(jù)的處理效率。本技術(shù)可以結(jié)合數(shù)據(jù)接收端對應(yīng)的網(wǎng)絡(luò)傳輸狀態(tài)來調(diào)整數(shù)據(jù)同步模式,盡可能提高網(wǎng)絡(luò)傳輸資源的利用率,改善數(shù)據(jù)傳輸和處理的效率。