本技術(shù)涉及數(shù)據(jù)存儲(chǔ),尤其涉及一種數(shù)據(jù)存儲(chǔ)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、云計(jì)算指通過計(jì)算機(jī)網(wǎng)絡(luò)(多指因特網(wǎng))形成的計(jì)算能力極強(qiáng)的系統(tǒng),可存儲(chǔ)、集合相關(guān)資源并可按需配置,向用戶提供個(gè)性化服務(wù)。云計(jì)算的載體是數(shù)據(jù)中心,為了提升業(yè)務(wù)系統(tǒng)的高可用性及穩(wěn)定性,業(yè)務(wù)系統(tǒng)可以采用雙活或多活的數(shù)據(jù)中心建設(shè)模式,并需要該雙活或多活的數(shù)據(jù)中心建設(shè)模式支持?jǐn)?shù)據(jù)的多寫。
2、目前,各個(gè)應(yīng)用程序分別將數(shù)據(jù)直接寫入各數(shù)據(jù)中心的數(shù)據(jù)庫中,以實(shí)現(xiàn)各應(yīng)用程序在雙活或多活的數(shù)據(jù)中心建設(shè)模式下的數(shù)據(jù)多寫。但這樣進(jìn)行數(shù)據(jù)多寫的效率較低。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種數(shù)據(jù)存儲(chǔ)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),用以解決寫入各數(shù)據(jù)中心的數(shù)據(jù)的準(zhǔn)確性較低且時(shí)效性較差的技術(shù)問題。
2、第一方面,本技術(shù)提供一種數(shù)據(jù)存儲(chǔ)方法,應(yīng)用于代理服務(wù),該方法包括:
3、接收應(yīng)用層發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求,數(shù)據(jù)存儲(chǔ)請(qǐng)求中攜帶待存儲(chǔ)數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫類型,數(shù)據(jù)存儲(chǔ)請(qǐng)求用于指示代理服務(wù)將待存儲(chǔ)數(shù)據(jù)寫入目標(biāo)數(shù)據(jù)庫類型對(duì)應(yīng)的數(shù)據(jù)庫;
4、根據(jù)目標(biāo)數(shù)據(jù)庫類型獲取目標(biāo)連接信息,目標(biāo)連接信息中包括目標(biāo)數(shù)據(jù)庫類型對(duì)應(yīng)的數(shù)據(jù)庫的第一地址,第一地址處于第一數(shù)據(jù)中心,代理服務(wù)所處數(shù)據(jù)中心為第一數(shù)據(jù)中心;
5、將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫,并通過消息隊(duì)列將待存儲(chǔ)數(shù)據(jù)寫入第二數(shù)據(jù)中心的第二地址對(duì)應(yīng)的第二目標(biāo)數(shù)據(jù)庫;第二數(shù)據(jù)中心與第一數(shù)據(jù)中心通信連接。
6、在一種可能的實(shí)現(xiàn)方式中,根據(jù)目標(biāo)數(shù)據(jù)庫類型獲取目標(biāo)連接信息,包括:
7、實(shí)時(shí)監(jiān)聽第一數(shù)據(jù)中心中的注冊(cè)/配置中心的配置參數(shù)變化,并根據(jù)配置參數(shù)變化對(duì)應(yīng)更新代理服務(wù)中的連接信息,得到更新后的連接信息;
8、根據(jù)目標(biāo)數(shù)據(jù)庫類型從更新后的連接信息中獲取目標(biāo)連接信息。
9、在一種可能的實(shí)現(xiàn)方式中,將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫,并通過消息隊(duì)列將待存儲(chǔ)數(shù)據(jù)寫入第二數(shù)據(jù)中心的第二地址對(duì)應(yīng)的第二目標(biāo)數(shù)據(jù)庫,包括:
10、獲取代理服務(wù)與第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫的連接;
11、將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫,并將待存儲(chǔ)數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫類型寫入消息隊(duì)列,以使第二數(shù)據(jù)中心的消費(fèi)程序?qū)南㈥?duì)列中獲取的待存儲(chǔ)數(shù)據(jù)寫入第二地址對(duì)應(yīng)的第二目標(biāo)數(shù)據(jù)庫;第二地址為消費(fèi)程序根據(jù)目標(biāo)數(shù)據(jù)庫類型從第二數(shù)據(jù)中心中的注冊(cè)/配置中心獲取的,第二數(shù)據(jù)中心的消費(fèi)程序預(yù)先已訂閱消息隊(duì)列。
12、在一種可能的實(shí)現(xiàn)方式中,在接收應(yīng)用層發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求之前,方法還包括:
13、代理服務(wù)接收應(yīng)用層發(fā)送的連接請(qǐng)求;
14、響應(yīng)于連接請(qǐng)求與應(yīng)用層建立長連接。
15、在一種可能的實(shí)現(xiàn)方式中,在將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫之前,方法還包括:
16、代理服務(wù)判斷預(yù)設(shè)時(shí)間窗口內(nèi)接收的數(shù)據(jù)存儲(chǔ)請(qǐng)求的數(shù)量是否小于或等于預(yù)設(shè)時(shí)間窗口內(nèi)產(chǎn)生的令牌數(shù);
17、若是,則執(zhí)行將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫的步驟。
18、在一種可能的實(shí)現(xiàn)方式中,方法還包括:
19、獲取第一目標(biāo)數(shù)據(jù)庫的響應(yīng)時(shí)長;
20、在響應(yīng)時(shí)長大于或等于預(yù)設(shè)時(shí)長時(shí),向應(yīng)用層返回服務(wù)不可用信息,并熔斷與應(yīng)用層的連接;以及,
21、按預(yù)設(shè)周期向第一目標(biāo)數(shù)據(jù)庫發(fā)出探測(cè)消息,以確定第一目標(biāo)數(shù)據(jù)庫的響應(yīng)時(shí)長,當(dāng)響應(yīng)時(shí)長小于預(yù)設(shè)時(shí)長時(shí),恢復(fù)與應(yīng)用層的連接。
22、第二方面,本技術(shù)提供一種數(shù)據(jù)存儲(chǔ)裝置,應(yīng)用于代理服務(wù),包括接收模塊,獲取模塊和寫入模塊,其中,
23、接收模塊,用于接收應(yīng)用層發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求,數(shù)據(jù)存儲(chǔ)請(qǐng)求中攜帶待存儲(chǔ)數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫類型,數(shù)據(jù)存儲(chǔ)請(qǐng)求用于指示代理服務(wù)將待存儲(chǔ)數(shù)據(jù)寫入目標(biāo)數(shù)據(jù)庫類型對(duì)應(yīng)的數(shù)據(jù)庫;
24、獲取模塊,用于根據(jù)目標(biāo)數(shù)據(jù)庫類型獲取目標(biāo)連接信息,目標(biāo)連接信息中包括目標(biāo)數(shù)據(jù)庫類型對(duì)應(yīng)的數(shù)據(jù)庫的第一地址,第一地址處于第一數(shù)據(jù)中心,代理服務(wù)所處數(shù)據(jù)中心為第一數(shù)據(jù)中心;
25、寫入模塊,用于將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫,并通過消息隊(duì)列將待存儲(chǔ)數(shù)據(jù)寫入第二數(shù)據(jù)中心的第二地址對(duì)應(yīng)的第二目標(biāo)數(shù)據(jù)庫;第二數(shù)據(jù)中心與第一數(shù)據(jù)中心通信連接。
26、在一種可能的實(shí)現(xiàn)方式中,獲取模塊,具體用于:
27、實(shí)時(shí)監(jiān)聽第一數(shù)據(jù)中心中的注冊(cè)/配置中心的配置參數(shù)變化,并根據(jù)配置參數(shù)變化對(duì)應(yīng)更新代理服務(wù)中的連接信息,得到更新后的連接信息;
28、根據(jù)目標(biāo)數(shù)據(jù)庫類型從更新后的連接信息中獲取目標(biāo)連接信息。
29、在一種可能的實(shí)現(xiàn)方式中,寫入模塊,具體用于:
30、獲取代理服務(wù)與第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫的連接;
31、將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫,并將待存儲(chǔ)數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫類型寫入消息隊(duì)列,以使第二數(shù)據(jù)中心的消費(fèi)程序?qū)南㈥?duì)列中獲取的待存儲(chǔ)數(shù)據(jù)寫入第二地址對(duì)應(yīng)的第二目標(biāo)數(shù)據(jù)庫;第二地址為消費(fèi)程序根據(jù)目標(biāo)數(shù)據(jù)庫類型從第二數(shù)據(jù)中心中的注冊(cè)/配置中心獲取的,第二數(shù)據(jù)中心的消費(fèi)程序預(yù)先已訂閱消息隊(duì)列。
32、在一種可能的實(shí)現(xiàn)方式中,裝置還包括:
33、代理服務(wù)接收應(yīng)用層發(fā)送的連接請(qǐng)求;
34、響應(yīng)于連接請(qǐng)求與應(yīng)用層建立長連接。
35、在一種可能的實(shí)現(xiàn)方式中,裝置還包括:
36、代理服務(wù)判斷預(yù)設(shè)時(shí)間窗口內(nèi)接收的數(shù)據(jù)存儲(chǔ)請(qǐng)求的數(shù)量是否小于或等于預(yù)設(shè)時(shí)間窗口內(nèi)產(chǎn)生的令牌數(shù);
37、若是,則執(zhí)行將待存儲(chǔ)數(shù)據(jù)寫入第一地址對(duì)應(yīng)的第一目標(biāo)數(shù)據(jù)庫的步驟。
38、在一種可能的實(shí)現(xiàn)方式中,裝置還包括:
39、獲取第一目標(biāo)數(shù)據(jù)庫的響應(yīng)時(shí)長;
40、在響應(yīng)時(shí)長大于或等于預(yù)設(shè)時(shí)長時(shí),向應(yīng)用層返回服務(wù)不可用信息,并熔斷與應(yīng)用層的連接;以及,
41、按預(yù)設(shè)周期向第一目標(biāo)數(shù)據(jù)庫發(fā)出探測(cè)消息,以確定第一目標(biāo)數(shù)據(jù)庫的響應(yīng)時(shí)長,當(dāng)響應(yīng)時(shí)長小于預(yù)設(shè)時(shí)長時(shí),恢復(fù)與應(yīng)用層的連接。
42、第三方面,本技術(shù)提供一種數(shù)據(jù)存儲(chǔ)系統(tǒng),該數(shù)據(jù)存儲(chǔ)系統(tǒng)包括通信連接的第一數(shù)據(jù)中心和第二數(shù)據(jù)中心,第一數(shù)據(jù)中心和第二數(shù)據(jù)中心中均包括應(yīng)用層、代理層、組件層、消息隊(duì)列和注冊(cè)/配置中心,代理層包括代理服務(wù),組件層包括至少一種類型的數(shù)據(jù)庫;
43、應(yīng)用層用于向代理服務(wù)發(fā)送數(shù)據(jù)存儲(chǔ)請(qǐng)求;數(shù)據(jù)存儲(chǔ)請(qǐng)求中攜帶待存儲(chǔ)數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫類型;
44、注冊(cè)/配置中心用于配置并保存配置參數(shù);
45、代理服務(wù)用于執(zhí)行如第一方面描述的數(shù)據(jù)存儲(chǔ)方法;
46、消息隊(duì)列用于暫存待存儲(chǔ)數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫類型,直到第二數(shù)據(jù)中心的消費(fèi)程序從消息隊(duì)列中獲取待存儲(chǔ)數(shù)據(jù),并將待存儲(chǔ)數(shù)據(jù)寫入第二數(shù)據(jù)中心中的第二地址對(duì)應(yīng)的第二目標(biāo)數(shù)據(jù)庫中;
47、數(shù)據(jù)庫用于存儲(chǔ)待存儲(chǔ)數(shù)據(jù)。
48、第四方面,本技術(shù)提供一種電子設(shè)備,包括:處理器以及與處理器通信連接的存儲(chǔ)器;存儲(chǔ)器存儲(chǔ)計(jì)算機(jī)執(zhí)行指令;處理器執(zhí)行存儲(chǔ)器存儲(chǔ)的計(jì)算機(jī)執(zhí)行指令,使得處理器執(zhí)行如第一方面描述的數(shù)據(jù)存儲(chǔ)方法。
49、第五方面,本技術(shù)提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)執(zhí)行指令,當(dāng)計(jì)算機(jī)執(zhí)行指令被處理器執(zhí)行時(shí)用于實(shí)現(xiàn)如第一方面描述的數(shù)據(jù)存儲(chǔ)方法。
50、第六方面,本技術(shù)提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如第一方面描述的數(shù)據(jù)存儲(chǔ)方法。
51、第七方面,本技術(shù)提供一種芯片,芯片上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被芯片執(zhí)行時(shí),實(shí)現(xiàn)如第一方面描述的數(shù)據(jù)存儲(chǔ)方法。
52、在一種可能的實(shí)現(xiàn)方式中,芯片為芯片模組中的芯片。
53、本技術(shù)提供一種數(shù)據(jù)存儲(chǔ)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),應(yīng)用于代理服務(wù),該方法通過代理服務(wù)以及消息隊(duì)列來統(tǒng)一進(jìn)行各應(yīng)用程序在兩個(gè)或兩個(gè)以上的數(shù)據(jù)中心的數(shù)據(jù)異步多寫,有助于提高整體的數(shù)據(jù)多寫效率。此外,由代理服務(wù)將各應(yīng)用程序與各數(shù)據(jù)庫隔離開,各應(yīng)用程序的數(shù)據(jù)存儲(chǔ)請(qǐng)求統(tǒng)一通過代理服務(wù)發(fā)送到數(shù)據(jù)庫,這樣可以減少數(shù)據(jù)庫的連接數(shù)量,從而減小數(shù)據(jù)庫的壓力,有助于提升數(shù)據(jù)庫的穩(wěn)定性。