本技術(shù)涉及網(wǎng)關(guān)數(shù)據(jù)采集,尤其涉及一種etcd集群配置的數(shù)據(jù)同步方法、系統(tǒng)、裝置及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、目前apisix網(wǎng)關(guān)的api配置數(shù)據(jù)被集中存儲(chǔ)在高性能、高可用性的etcd集群中,以此確保api配置的即時(shí)生效與高效管理。盡管使用etcd集群能夠增強(qiáng)數(shù)據(jù)管理的能力,但是在遵循“兩地三中心”多機(jī)房布局策略的情形下,這一模式顯露出了局限性。
2、具體而言,每個(gè)獨(dú)立機(jī)房需配置一套etcd集群以維持服務(wù)的極致高可用性,這直接引致了資源配置與維護(hù)的復(fù)雜化。例如:每當(dāng)有新api準(zhǔn)備部署至這三個(gè)不同機(jī)房時(shí),運(yùn)維團(tuán)隊(duì)需要逐一登錄每個(gè)機(jī)房的apisix控制面板,執(zhí)行三次重復(fù)的添加操作。而隨著機(jī)房數(shù)量的增長(zhǎng),加重了這種逐一手動(dòng)重復(fù)作業(yè)的負(fù)擔(dān),不僅效率低下,還存在因人為錯(cuò)誤導(dǎo)致配置不一致的風(fēng)險(xiǎn)。
3、另外,在實(shí)際運(yùn)行中,還存在以下問題:1、當(dāng)新api可能已宣告上線,卻因某機(jī)房配置遺漏,導(dǎo)致用戶請(qǐng)求遭遇拒絕;2、需要下線的api,卻因配置更新的滯后,讓用戶仍能繼續(xù)訪問,從而影響了服務(wù)的一致性和安全性。
4、基于上述內(nèi)容,亟需一種能夠解決現(xiàn)有技術(shù)中部署負(fù)擔(dān)重、部署效率低下等問題的etcd集群配置的數(shù)據(jù)同步方法。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問題,本技術(shù)提供了一種etcd集群配置的數(shù)據(jù)同步方法、系統(tǒng)、裝置及存儲(chǔ)介質(zhì),能夠解決現(xiàn)有技術(shù)中部署負(fù)擔(dān)重、部署效率低下的問題。
2、下面對(duì)本技術(shù)中提供的技術(shù)方案進(jìn)行描述:
3、本技術(shù)第一方面提供了一種etcd集群配置的數(shù)據(jù)同步方法,應(yīng)用于多個(gè)機(jī)房的etcd集群配置,每個(gè)機(jī)房?jī)?nèi)設(shè)有一個(gè)etcd集群,數(shù)據(jù)同步方法包括:
4、獲取配置內(nèi)容,所述配置內(nèi)容包括對(duì)api數(shù)據(jù)的增加、刪除、修改、查詢中的至少一項(xiàng);
5、根據(jù)所述配置內(nèi)容對(duì)主etcd集群進(jìn)行數(shù)據(jù)同步操作;
6、當(dāng)所述主etcd集群中的api數(shù)據(jù)變動(dòng)成功時(shí),基于預(yù)設(shè)的輪詢規(guī)則與所述配置內(nèi)容對(duì)若干個(gè)子etcd集群進(jìn)行數(shù)據(jù)同步操作,得到操作結(jié)果;
7、根據(jù)所述操作結(jié)果判斷若干個(gè)所述子etcd集群中的api數(shù)據(jù)是否全都變動(dòng)成功,若是,則實(shí)時(shí)獲取對(duì)所述主etcd集群的監(jiān)測(cè)結(jié)果;
8、根據(jù)所述監(jiān)測(cè)結(jié)果對(duì)若干個(gè)所述子etcd集群進(jìn)行api數(shù)據(jù)變動(dòng)。
9、可選的,所述根據(jù)所述操作結(jié)果判斷若干個(gè)所述子etcd集群中的api數(shù)據(jù)是否全都變動(dòng)成功包括:
10、若數(shù)據(jù)變動(dòng)出現(xiàn)失敗,則確定失敗類型;
11、當(dāng)所述失敗類型為修改失敗時(shí),重新根據(jù)所述配置內(nèi)容對(duì)所述主etcd集群進(jìn)行數(shù)據(jù)同步操作;
12、當(dāng)所述失敗類型為新增或刪除失敗時(shí),對(duì)所述主etcd集群進(jìn)行回滾操作,所述回滾操作用于將所述主etcd集群中的api數(shù)據(jù)恢復(fù)成數(shù)據(jù)變動(dòng)成功之前。
13、可選的,在所述若數(shù)據(jù)變動(dòng)出現(xiàn)失敗,則確定失敗類型之后,所述數(shù)據(jù)同步方法還包括:
14、根據(jù)操作日志確定失敗信息,并通過預(yù)設(shè)渠道發(fā)送所述失敗信息。
15、可選的,所述實(shí)時(shí)獲取對(duì)所述主etcd集群的監(jiān)測(cè)結(jié)果包括:
16、通過watch命令對(duì)所述主etcd集群進(jìn)行監(jiān)測(cè)。
17、可選的,所述watch命令對(duì)所述主etcd集群進(jìn)行監(jiān)測(cè)的數(shù)據(jù)包括api數(shù)據(jù)、服務(wù)數(shù)據(jù)以及上游數(shù)據(jù)。
18、可選的,所述基于預(yù)設(shè)的輪詢規(guī)則與所述配置內(nèi)容對(duì)若干個(gè)子etcd集群進(jìn)行數(shù)據(jù)同步操作包括:
19、根據(jù)負(fù)載從大到小的輪詢規(guī)則確定若干個(gè)所述子etcd集群的順序;
20、按照所述順序?qū)⑺雠渲脙?nèi)容依次配置到若干個(gè)所述子etcd集群中。
21、本技術(shù)第二方面提供了一種etcd集群配置的數(shù)據(jù)同步系統(tǒng),包括:
22、獲取單元,用于獲取配置內(nèi)容,所述配置內(nèi)容包括對(duì)api數(shù)據(jù)的增加、刪除、修改、查詢中的至少一項(xiàng);
23、第一操作單元,用于根據(jù)所述配置內(nèi)容對(duì)主etcd集群進(jìn)行數(shù)據(jù)同步操作,所述主etcd集群表示第一個(gè)配置的etcd集群;
24、第二操作單元,用于當(dāng)所述主etcd集群中的數(shù)據(jù)變動(dòng)成功時(shí),基于預(yù)設(shè)的輪詢規(guī)則與所述配置內(nèi)容對(duì)若干個(gè)子etcd集群進(jìn)行數(shù)據(jù)同步操作,得到操作結(jié)果;
25、判斷單元,用于根據(jù)所述操作結(jié)果判斷若干個(gè)所述子etcd集群中的數(shù)據(jù)是否全都變動(dòng)成功,若是,則實(shí)時(shí)獲取對(duì)所述主etcd集群中的api數(shù)據(jù)的監(jiān)測(cè)結(jié)果;
26、變動(dòng)單元,用于根據(jù)所述監(jiān)測(cè)結(jié)果對(duì)若干個(gè)所述子etcd集群進(jìn)行數(shù)據(jù)變動(dòng)。
27、可選的,所述判斷單元包括:
28、第一確定模塊,用于若數(shù)據(jù)變動(dòng)出現(xiàn)失敗,則確定失敗類型;
29、第一操作模塊,用于當(dāng)所述失敗類型為修改失敗時(shí),重新根據(jù)所述配置內(nèi)容對(duì)所述主etcd集群進(jìn)行數(shù)據(jù)同步操作;
30、第二操作模塊,用于當(dāng)所述失敗類型為新增或刪除失敗時(shí),對(duì)所述主etcd集群進(jìn)行回滾操作,所述回滾操作用于將所述主etcd集群中的api數(shù)據(jù)恢復(fù)成數(shù)據(jù)變動(dòng)成功之前。
31、可選的,所述判斷單元還包括:
32、發(fā)送模塊,用于根據(jù)操作日志確定失敗信息,并通過預(yù)設(shè)渠道發(fā)送所述失敗信息。
33、可選的,所述判斷單元包括:
34、獲取模塊,用于通過watch命令對(duì)所述主etcd集群進(jìn)行監(jiān)測(cè)。
35、可選的,所述第二操作單元包括:
36、第二確定模塊,用于根據(jù)負(fù)載從大到小的輪詢規(guī)則確定若干個(gè)所述子etcd集群的順序;
37、配置模塊,用于按照所述順序?qū)⑺雠渲脙?nèi)容依次配置到若干個(gè)所述子etcd集群中。
38、本技術(shù)第三方面提供了一種etcd集群配置的數(shù)據(jù)同步裝置,包括:
39、處理器、存儲(chǔ)器、輸入輸出單元以及總線;
40、所述處理器與所述存儲(chǔ)器、所述輸入輸出單元以及所述總線相連;
41、所述存儲(chǔ)器保存有程序,所述處理器調(diào)用所述程序以執(zhí)行第一方面以及第一方面中任一項(xiàng)可選的方法。
42、本技術(shù)第四方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上保存有程序,所述程序在計(jì)算機(jī)上執(zhí)行時(shí)執(zhí)行第一方面以及第一方面中任一項(xiàng)可選的方法。
43、從以上技術(shù)方案可以看出,本技術(shù)具有以下優(yōu)點(diǎn):
44、通過在多機(jī)房中先對(duì)主etcd集群進(jìn)行數(shù)據(jù)同步操作,當(dāng)主etcd集群中的數(shù)據(jù)變動(dòng)成功時(shí),再基于預(yù)設(shè)的輪詢規(guī)則對(duì)若干個(gè)子etcd集群進(jìn)行數(shù)據(jù)同步操作,每個(gè)子etcd集群中的數(shù)據(jù)都變動(dòng)成功后,對(duì)主etcd集群的數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)測(cè),根據(jù)監(jiān)測(cè)結(jié)果對(duì)每個(gè)子etcd集群進(jìn)行api數(shù)據(jù)變動(dòng),這樣以來,相對(duì)于現(xiàn)有技術(shù)中的需要運(yùn)維人員到每個(gè)機(jī)房進(jìn)行api數(shù)據(jù)變動(dòng),本技術(shù)能夠一次性完成對(duì)所有關(guān)聯(lián)機(jī)房etcd集群的api配置更新,不僅大幅縮短了新服務(wù)部署或調(diào)整的時(shí)間,還極大減輕了運(yùn)維人員的工作負(fù)擔(dān),以及提高配置效率;
45、在主etcd集群配置成功后,再輪詢每個(gè)子etcd集群的配置,這種多集群同步機(jī)制,能夠避免人工操作可能導(dǎo)致的遺漏或錯(cuò)誤,確保所有機(jī)房的api配置數(shù)據(jù)始終保持一致。