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