本發(fā)明涉及數(shù)據(jù)處理,尤其涉及一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、多中心系統(tǒng)架構(gòu)是指在多個不同地理位置的數(shù)據(jù)中心之間建立的一套完整、相對獨立運行的系統(tǒng),并且系統(tǒng)間數(shù)據(jù)低延時同步,以確保系統(tǒng)的高可用性和數(shù)據(jù)一致性,如今主流的方案一般是核心數(shù)據(jù)中心、單元化分庫分表、分布式數(shù)據(jù)庫等幾種,必要時,還會采用人工干預解決數(shù)據(jù)沖突。
2、但是,核心數(shù)據(jù)中心采用單向同步數(shù)據(jù)方式雖然能解決同步行沖突問題,通常作為主從架構(gòu)(災(zāi)備、冷備)方案,它無法滿足多主系統(tǒng)間同步數(shù)據(jù)的需求,且因數(shù)據(jù)強一致性要求,所有修改數(shù)據(jù)的操作都要在主庫上完成,這會增大主庫壓力,若主力節(jié)點宕機,那么從節(jié)點就面臨著故障的問題;單元化數(shù)據(jù)分片雖然能解決同步行沖突問題且滿足多數(shù)據(jù)中心需求,但是增加了聚合操作等復雜查詢的響應(yīng)時間,進行數(shù)據(jù)遷移和重建索引等操作的復雜度也會升高;分布式數(shù)據(jù)庫各方面性能很高,但是改變現(xiàn)有服務(wù)體系,投入到分布式數(shù)據(jù)庫的大流中需要相當長的時間,成本也非常高昂,整體實現(xiàn)難度過高,且條件過于苛刻,對大部分非重構(gòu)需求是不切實際的;而人工干預需要項目上常備運維人員,人力成本極為高昂。
3、由此可見,各主流方案在應(yīng)用時各有優(yōu)劣,在企業(yè)面對不同場景時,需要對數(shù)據(jù)中心之間的連接方案進行調(diào)整,而常見的數(shù)據(jù)系統(tǒng)建設(shè)都是以某一種架構(gòu)、同步方案為主,當項目面臨性能瓶頸、技術(shù)重構(gòu)、多中心建設(shè)等各種需求時常需要申請大量資源,做出很大的系統(tǒng)變更,比如雙中心系統(tǒng)建設(shè),項目中常以主備(異地災(zāi)備、同城災(zāi)備)等方案,如果因業(yè)務(wù)發(fā)展等因素需要調(diào)整為雙活系統(tǒng),則原系統(tǒng)需要給出大量的資源、人力去協(xié)調(diào),比如數(shù)據(jù)庫網(wǎng)絡(luò)的貫通性、容器或主機資源的測算申請、同步帶寬、專線、數(shù)據(jù)雙向同步的建設(shè)、數(shù)據(jù)沖突帶來的額外建設(shè)等等,升級工作非常繁瑣,架構(gòu)的調(diào)整十分困難。
技術(shù)實現(xiàn)思路
1、本發(fā)明的主要目的在于提供一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì),旨在解決現(xiàn)有技術(shù)在進行數(shù)據(jù)中心架構(gòu)切換時,流程繁瑣,導致架構(gòu)切換困難的技術(shù)問題。
2、為實現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)同步方法,所述方法包括以下步驟:
3、在檢測到任一數(shù)據(jù)中間件中生成數(shù)據(jù)增量消息時,獲取各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略,所述各數(shù)據(jù)中心中分別設(shè)置有數(shù)據(jù)中間件,所述數(shù)據(jù)中間件在數(shù)據(jù)中心中發(fā)生數(shù)據(jù)變更時,根據(jù)變更的數(shù)據(jù)生成數(shù)據(jù)增量消息,所述數(shù)據(jù)同步策略根據(jù)對各數(shù)據(jù)中心之間的架構(gòu)識別結(jié)果進行設(shè)置;
4、基于所述數(shù)據(jù)同步策略根據(jù)所述數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步。
5、可選的,所述數(shù)據(jù)同步策略包括單向同步策略;
6、所述基于所述數(shù)據(jù)同步策略根據(jù)所述數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步的步驟,包括:
7、根據(jù)所述數(shù)據(jù)增量消息生成事務(wù)消息;
8、將所述事務(wù)消息添加至消息隊列中,以使所述消息隊列的消費者根據(jù)所述事務(wù)消息對所述消費者對應(yīng)的數(shù)據(jù)中心進行數(shù)據(jù)同步。
9、可選的,所述數(shù)據(jù)同步策略包括雙向同步策略;
10、所述基于所述數(shù)據(jù)同步策略根據(jù)所述數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步的步驟,包括:
11、獲取當前時刻信息,并生成隨機數(shù);
12、根據(jù)所述當前時刻信息及所述隨機數(shù)構(gòu)建高精度時間戳;
13、以所述高精度時間戳為排序依據(jù)將所述數(shù)據(jù)增量消息添加至有序集合中,以使所述有序集合對應(yīng)的消費者根據(jù)所述有序集合的集合順序?qū)λ鲇行蚣现械臄?shù)據(jù)增量消息依次進行廣播分發(fā),對各數(shù)據(jù)中心進行數(shù)據(jù)同步。
14、可選的,所述數(shù)據(jù)同步策略包括星形同步策略;
15、所述基于所述數(shù)據(jù)同步策略根據(jù)所述數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步的步驟,包括:
16、獲取分布式鎖,并檢測共享緩存中是否存在所述分布式鎖;
17、若不存在,則將所述分布式鎖寫入所述共享緩存中;
18、在寫入成功后,將所述數(shù)據(jù)增量消息進行廣播分發(fā),以對各數(shù)據(jù)中心進行數(shù)據(jù)同步;
19、在同步完成后,將所述分布式鎖從所述共享緩存中移除。
20、可選的,所述獲取分布式鎖的步驟,包括:
21、獲取所述數(shù)據(jù)增量消息對應(yīng)的數(shù)據(jù)增量類型;
22、根據(jù)所述數(shù)據(jù)增量類型確定鎖構(gòu)建字段及鎖構(gòu)建方式;
23、獲取各鎖構(gòu)建字段對應(yīng)的字段數(shù)據(jù);
24、基于所述鎖構(gòu)建方式將所述字段數(shù)據(jù)進行拼接,獲得分布式鎖。
25、可選的,所述獲取各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略的步驟,包括:
26、獲取連接的各數(shù)據(jù)中心對應(yīng)的數(shù)據(jù)中心代碼,所述數(shù)據(jù)中心代碼為標識數(shù)據(jù)中心唯一性的標識代碼;
27、將各數(shù)據(jù)中心對應(yīng)的數(shù)據(jù)中心代碼進行聚合,獲得中心代碼集合;
28、對所述中心代碼集合進行數(shù)據(jù)去重,獲得去重代碼集合;
29、檢測所述去重代碼集合中的代碼數(shù)量;
30、若所述代碼數(shù)量大于預設(shè)數(shù)量,則判定各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略為星形同步策略。
31、可選的,所述檢測所述去重代碼集合中的代碼數(shù)量的步驟,包括:
32、若所述代碼數(shù)量小于或等于預設(shè)數(shù)量,則對各數(shù)據(jù)中心中的主從配置文件進行解析,獲得各數(shù)據(jù)中心對應(yīng)的主從配置信息;
33、根據(jù)所述主從配置信息確定各數(shù)據(jù)中心之間的主從指向關(guān)系;
34、若所述主從指向關(guān)系為單向指向關(guān)系,則判定各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略為單向同步策略;
35、若所述主從指向關(guān)系為雙向指向關(guān)系,則判定各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略為雙向同步策略。
36、此外,為實現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)同步裝置,所述數(shù)據(jù)同步裝置包括以下模塊:
37、檢測模塊,用于在檢測到任一數(shù)據(jù)中間件中生成數(shù)據(jù)增量消息時,獲取各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略,所述各數(shù)據(jù)中心中分別設(shè)置有數(shù)據(jù)中間件,所述數(shù)據(jù)中間件在數(shù)據(jù)中心中發(fā)生數(shù)據(jù)變更時,根據(jù)變更的數(shù)據(jù)生成數(shù)據(jù)增量消息,所述數(shù)據(jù)同步策略根據(jù)對各數(shù)據(jù)中心之間的架構(gòu)識別結(jié)果進行設(shè)置;
38、同步模塊,用于基于所述數(shù)據(jù)同步策略根據(jù)所述數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步。
39、此外,為實現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)同步設(shè)備,所述數(shù)據(jù)同步設(shè)備包括:處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的數(shù)據(jù)同步程序,所述數(shù)據(jù)同步程序被處理器執(zhí)行時實現(xiàn)如上所述的數(shù)據(jù)同步方法的步驟。
40、此外,為實現(xiàn)上述目的,本發(fā)明還提出一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有數(shù)據(jù)同步程序,所述數(shù)據(jù)同步程序執(zhí)行時實現(xiàn)如上所述的數(shù)據(jù)同步方法的步驟。
41、本發(fā)明通過在檢測到任一數(shù)據(jù)中間件中生成數(shù)據(jù)增量消息時,獲取各數(shù)據(jù)中心之間的數(shù)據(jù)同步策略;基于所述數(shù)據(jù)同步策略根據(jù)所述數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步。由于是在檢測到數(shù)據(jù)中間件中生成數(shù)據(jù)增量消息時,根據(jù)對各數(shù)據(jù)中心之間的架構(gòu)識別結(jié)果進行設(shè)置數(shù)據(jù)同步策略,再基于數(shù)據(jù)同步策略及數(shù)據(jù)增量消息實現(xiàn)各數(shù)據(jù)中心之間的數(shù)據(jù)同步,保證可支持多種不同的架構(gòu),使得僅需做少量處理即可切換架構(gòu),降低了架構(gòu)切換的難度。