本技術(shù)涉及信息技術(shù)(information?technology,it),尤其涉及一種基于云計算技術(shù)的數(shù)據(jù)集成方法、裝置及計算設(shè)備集群。
背景技術(shù):
1、在數(shù)據(jù)集成領(lǐng)域中,變更數(shù)據(jù)抓取(change?data?capture,cdc)是指通過監(jiān)聽數(shù)據(jù)源的數(shù)據(jù)變更,實時獲取到變更數(shù)據(jù),然后下發(fā)到下游做業(yè)務(wù)處理。cdc支持的數(shù)據(jù)源包括關(guān)系型數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫和數(shù)據(jù)湖。基于cdc的數(shù)據(jù)集成,可以實現(xiàn)異構(gòu)源數(shù)據(jù)源和目標數(shù)據(jù)源之間的實時數(shù)據(jù)同步。在數(shù)據(jù)集成過程中,可以從源數(shù)據(jù)源獲取數(shù)據(jù)變更,并通過數(shù)據(jù)轉(zhuǎn)換成目標數(shù)據(jù)源所需的格式,最后寫入到目標數(shù)據(jù)源。其中,從源數(shù)據(jù)源獲取數(shù)據(jù)變更的一端,稱為數(shù)據(jù)讀取端;把數(shù)據(jù)經(jīng)過轉(zhuǎn)換,寫入目標數(shù)據(jù)源的一端,稱為數(shù)據(jù)寫入端。
2、相關(guān)技術(shù)中,如圖1所示,在cdc數(shù)據(jù)集成中可以引入消息隊列(message?queue,mq)作為中間件,對數(shù)據(jù)讀取端獲取的數(shù)據(jù)進行緩沖。在cdc數(shù)據(jù)集成過程中,數(shù)據(jù)讀取端可以通過cdc組件從源數(shù)據(jù)源中讀取變更數(shù)據(jù),并通過mq生產(chǎn)者將變更數(shù)據(jù)傳輸至消息隊列,同時,mq生產(chǎn)者可以將其傳輸?shù)淖兏鼣?shù)據(jù)提交(commit)至cdc組件(即通知cdc組件哪些數(shù)據(jù)是已讀的)。數(shù)據(jù)寫入端可以通過mq消費者從消息隊列讀取未寫入到目標數(shù)據(jù)源的數(shù)據(jù),并對讀取到的數(shù)據(jù)進行轉(zhuǎn)換,然后調(diào)用數(shù)據(jù)庫客戶端將轉(zhuǎn)換后的數(shù)據(jù)寫入目標數(shù)據(jù)源,以及,將寫入到目標數(shù)據(jù)源中的數(shù)據(jù)commit至消息隊列(即通知消息隊列哪些數(shù)據(jù)是已寫的)。圖1所示的方式,雖然可以實現(xiàn)數(shù)據(jù)集成,但這種方式需要引入第三方中間件對數(shù)據(jù)讀取端和數(shù)據(jù)寫入端進行協(xié)調(diào),這就增加了系統(tǒng)構(gòu)建的復雜度和開發(fā)運維成本。同時,由于需要寫入目標數(shù)據(jù)源中的數(shù)據(jù)需要存儲在第三方中間件中,致使需要對用戶數(shù)據(jù)進行額外的保障管理,容易造成數(shù)據(jù)泄露。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種基于云計算技術(shù)的數(shù)據(jù)集成方法、裝置、計算設(shè)備集群、計算機存儲介質(zhì)及計算機產(chǎn)品,能夠降低數(shù)據(jù)集成系統(tǒng)的成本和提高數(shù)據(jù)集成效率。
2、第一方面,本技術(shù)提供一種基于云計算技術(shù)的數(shù)據(jù)集成方法,可以應(yīng)用于云計算平臺。該云計算平臺運行在基礎(chǔ)設(shè)施上,基礎(chǔ)設(shè)施包括設(shè)置在不同區(qū)域的多個數(shù)據(jù)中心,每個數(shù)據(jù)中心包括多個服務(wù)器。該云計算平臺上包括:數(shù)據(jù)讀取端、數(shù)據(jù)寫入端、進度存儲端和數(shù)據(jù)提交端。該方法包括:數(shù)據(jù)讀取端通過變更數(shù)據(jù)抓取組件獲取源數(shù)據(jù)源中的至少一批變更數(shù)據(jù),其中,變更數(shù)據(jù)抓取組件用于感知源數(shù)據(jù)源中的數(shù)據(jù)變更并獲取到變更數(shù)據(jù);數(shù)據(jù)讀取端將至少一批變更數(shù)據(jù)中每批數(shù)據(jù)的第一標識均傳輸至進度存儲端,以及,將至少一批變更數(shù)據(jù)傳輸至數(shù)據(jù)寫入端;進度存儲端記錄來自數(shù)據(jù)讀取端的第一標識;數(shù)據(jù)寫入端向目標數(shù)據(jù)源寫入至少一批變更數(shù)據(jù),以及,將寫入到目標數(shù)據(jù)源的數(shù)據(jù)的第二標識傳輸至進度存儲端;進度存儲端記錄來自數(shù)據(jù)寫入端的第二標識;數(shù)據(jù)提交端讀取進度存儲端記錄的第一標識和第二標識,以及,在第二標識和任意一個第一標識一致的情況下,將第二標識提交至變更數(shù)據(jù)抓取組件,以指示變更數(shù)據(jù)抓取組件無需在從源數(shù)據(jù)源中獲取與第二標識相關(guān)的數(shù)據(jù)。
3、這樣,通過單獨記錄已讀數(shù)據(jù)的標識和已寫數(shù)據(jù)的標識,通過對比已讀數(shù)據(jù)的標識和已寫數(shù)據(jù)的標識,判斷已讀數(shù)據(jù)是否被寫入到目標數(shù)據(jù)源,達到了對數(shù)據(jù)讀取和寫入的協(xié)調(diào)的目的,使得不用等待某一批已讀數(shù)據(jù)全部寫入完成,就能讀取下一批數(shù)據(jù),提升了數(shù)據(jù)集成效率;同時,也不用額外設(shè)置第三方中間件對數(shù)據(jù)讀取和寫入進行協(xié)調(diào),降低了數(shù)據(jù)集成系統(tǒng)的成本。
4、在一種可能的實現(xiàn)方式中,在數(shù)據(jù)讀取端將至少一批變更數(shù)據(jù)中每批數(shù)據(jù)的第一標識均傳輸至進度存儲端,以及,將至少一批變更數(shù)據(jù)傳輸至數(shù)據(jù)寫入端之前,還包括:數(shù)據(jù)讀取端從進度存儲端獲取已寫入到目標數(shù)據(jù)源的數(shù)據(jù)的第三標識;數(shù)據(jù)讀取端基于第三標識,對至少一批變更數(shù)據(jù)中的數(shù)據(jù)進行過濾。這樣,就可以去除已寫入到目標數(shù)據(jù)源中的數(shù)據(jù),從而避免重復寫入的情況。
5、在一種可能的實現(xiàn)方式中,數(shù)據(jù)寫入端向目標數(shù)據(jù)源寫入至少一批變更數(shù)據(jù),包括:數(shù)據(jù)寫入端基于目標批變更數(shù)據(jù)中的主鍵或行索引,將目標批變更數(shù)據(jù)聚合為多個子數(shù)據(jù),其中,目標批變更數(shù)據(jù)為至少一批變更數(shù)據(jù)中的任意一批數(shù)據(jù);數(shù)據(jù)寫入端并行將多個子數(shù)據(jù)寫入目標數(shù)據(jù)源。由此以提升數(shù)據(jù)寫入效率。
6、在一種可能的實現(xiàn)方式中,數(shù)據(jù)寫入端為多個。數(shù)據(jù)讀取端將至少一批變更數(shù)據(jù)傳輸至數(shù)據(jù)寫入端,包括:數(shù)據(jù)讀取端基于目標批變更數(shù)據(jù)中的主鍵或行索引,將目標批變更數(shù)據(jù)聚合為多個子數(shù)據(jù),以及,將多個子數(shù)據(jù)分別發(fā)送至不同的數(shù)據(jù)寫入端,其中,目標批變更數(shù)據(jù)為至少一批變更數(shù)據(jù)中的任意一批數(shù)據(jù)。數(shù)據(jù)寫入端向目標數(shù)據(jù)源寫入至少一批變更數(shù)據(jù),包括:多個數(shù)據(jù)寫入端并行將多個子數(shù)據(jù)寫入目標數(shù)據(jù)源。由此以提升數(shù)據(jù)寫入效率。
7、在一種可能的實現(xiàn)方式中,在數(shù)據(jù)提交端將第二標識提交至變更數(shù)據(jù)抓取組件之前,還包括:數(shù)據(jù)提交端從進度存儲端獲取進度存儲端記錄的目標信息,目標信息用于指示已提交至變更數(shù)據(jù)抓取組件的標識;數(shù)據(jù)提交端基于目標信息,確定第二標識未被提交至變更數(shù)據(jù)抓取組件。由此以避免重復提交。
8、在一種可能的實現(xiàn)方式中,在數(shù)據(jù)提交端將第二標識提交至變更數(shù)據(jù)抓取組件之后,還包括:數(shù)據(jù)提交端向進度存儲端傳輸?shù)谝恍畔?,該第一信息用于指示已提交第二標識至變更數(shù)據(jù)抓取組件;進度存儲端記錄該第一信息。這樣,在后續(xù)提交標識至cdc組件時就可以先基于記錄的用于指示已提交至cdc組件的標識的信息,對待提交的標識進行過濾,從而避免重復提交。
9、在一種可能的實現(xiàn)方式中,目標批變更數(shù)據(jù)的第一標識至少由目標批變更數(shù)據(jù)在源數(shù)據(jù)源中的起始偏移量和結(jié)束偏移量組成,其中,目標批變更數(shù)據(jù)為至少一批變更數(shù)據(jù)中的任意一批數(shù)據(jù)。
10、第二方面,本技術(shù)提供一種基于云計算技術(shù)的數(shù)據(jù)集成裝置,該裝置配置在云計算平臺上。該云計算平臺運行在基礎(chǔ)設(shè)施上,基礎(chǔ)設(shè)施包括設(shè)置在不同區(qū)域的多個數(shù)據(jù)中心,每個數(shù)據(jù)中心包括多個服務(wù)器。其中,該數(shù)據(jù)集成裝置可以包括:數(shù)據(jù)讀取模塊、進度存儲模塊、數(shù)據(jù)寫入模塊和數(shù)據(jù)提交模塊。其中,數(shù)據(jù)讀取模塊,用于通過變更數(shù)據(jù)抓取組件讀取源數(shù)據(jù)源中的至少一批變更數(shù)據(jù),其中,變更數(shù)據(jù)抓取組件用于感知源數(shù)據(jù)源中的數(shù)據(jù)變更并獲取到變更數(shù)據(jù)。數(shù)據(jù)讀取模塊,還用于將至少一批變更數(shù)據(jù)中每批數(shù)據(jù)的第一標識均傳輸至進度存儲模塊,以及,將至少一批變更數(shù)據(jù)傳輸至數(shù)據(jù)寫入模塊。進度存儲模塊,用于記錄來自數(shù)據(jù)讀取模塊的第一標識。數(shù)據(jù)寫入模塊,用于向目標數(shù)據(jù)源寫入至少一批變更數(shù)據(jù),以及,將寫入到目標數(shù)據(jù)源的數(shù)據(jù)的第二標識傳輸至進度存儲模塊。進度存儲模塊,還用于記錄來自數(shù)據(jù)寫入模塊的第二標識。數(shù)據(jù)提交模塊,用于讀取進度存儲模塊記錄的第一標識和第二標識,以及,在第二標識和任意一個第一標識一致的情況下,將第二標識提交至變更數(shù)據(jù)抓取組件,以指示變更數(shù)據(jù)抓取組件無需在從源數(shù)據(jù)源中獲取與第二標識相關(guān)的數(shù)據(jù)。
11、在一種可能的實現(xiàn)方式中,數(shù)據(jù)讀取模塊在將至少一批變更數(shù)據(jù)中每批數(shù)據(jù)的第一標識均傳輸至進度存儲模塊,以及,將至少一批變更數(shù)據(jù)傳輸至數(shù)據(jù)寫入模塊之前,還用于:從進度存儲模塊獲取已寫入到目標數(shù)據(jù)源的數(shù)據(jù)的第三標識;基于第三標識,對至少一批變更數(shù)據(jù)中的數(shù)據(jù)進行過濾。
12、在一種可能的實現(xiàn)方式中,數(shù)據(jù)寫入模塊在向目標數(shù)據(jù)源寫入至少一批變更數(shù)據(jù)時,具體用于:基于目標批變更數(shù)據(jù)中的主鍵或行索引,將目標批變更數(shù)據(jù)聚合為多個子數(shù)據(jù),其中,目標批變更數(shù)據(jù)為至少一批變更數(shù)據(jù)中的任意一批數(shù)據(jù);并行將多個子數(shù)據(jù)寫入目標數(shù)據(jù)源。
13、在一種可能的實現(xiàn)方式中,數(shù)據(jù)寫入模塊為多個。數(shù)據(jù)讀取模塊在將至少一批變更數(shù)據(jù)傳輸至數(shù)據(jù)寫入模塊時,具體用于:基于目標批變更數(shù)據(jù)中的主鍵或行索引,將目標批變更數(shù)據(jù)聚合為多個子數(shù)據(jù),以及,將多個子數(shù)據(jù)分別發(fā)送至不同的數(shù)據(jù)寫入模塊,其中,目標批變更數(shù)據(jù)為至少一批變更數(shù)據(jù)中的任意一批數(shù)據(jù)。數(shù)據(jù)寫入模塊在向目標數(shù)據(jù)源寫入至少一批變更數(shù)據(jù)時,具體用于:多個數(shù)據(jù)寫入模塊并行將多個子數(shù)據(jù)寫入目標數(shù)據(jù)源。
14、在一種可能的實現(xiàn)方式中,數(shù)據(jù)提交模塊在將第二標識提交至cdc組件之前,還用于:從進度存儲模塊獲取進度存儲模塊記錄的目標信息,目標信息用于指示已提交至變更數(shù)據(jù)抓取組件的標識;基于目標信息,確定第二標識未被提交至變更數(shù)據(jù)抓取組件。
15、在一種可能的實現(xiàn)方式中,數(shù)據(jù)提交模塊,還用于:在第二標識提交至變更數(shù)據(jù)抓取組件之后,向進度存儲模塊傳輸?shù)谝恍畔?,第一信息用于指示已提交第二標識至變更數(shù)據(jù)抓取組件;進度存儲模塊,還用于:記錄第一信息。
16、在一種可能的實現(xiàn)方式中,目標批變更數(shù)據(jù)的第一標識至少由目標批變更數(shù)據(jù)在源數(shù)據(jù)源中的起始偏移量和結(jié)束偏移量組成,其中,目標批變更數(shù)據(jù)為至少一批變更數(shù)據(jù)中的任意一批數(shù)據(jù)。
17、第三方面,本技術(shù)提供一種計算設(shè)備集群,包括至少一個計算設(shè)備,每個計算設(shè)備均包括處理器和存儲器;至少一個計算設(shè)備的處理器用于執(zhí)行至少一個計算設(shè)備的存儲器中存儲的指令,以使得計算設(shè)備集群執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法。
18、第四方面,本技術(shù)提供一種計算機可讀存儲介質(zhì),包括計算機程序指令,當計算機程序指令由計算設(shè)備執(zhí)行時,計算設(shè)備執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法;或者,當計算機程序指令由計算設(shè)備集群執(zhí)行時,計算設(shè)備集群執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法。示例性的,計算設(shè)備集群中可以包括一個或多個計算設(shè)備。
19、第五方面,本技術(shù)提供一種包含指令的計算機程序產(chǎn)品,當指令被計算設(shè)備運行時,使得計算設(shè)備執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法,或者,當指令被計算設(shè)備集群運行時,使得計算設(shè)備集群執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法。示例性的,計算設(shè)備集群中可以包括一個或多個計算設(shè)備。
20、可以理解的是,上述第二方面至第五方面的有益效果可以參見上述第一方面中的相關(guān)描述,在此不再贅述。