本技術(shù)涉及數(shù)據(jù)存儲(chǔ),尤其涉及一種用于分布式數(shù)據(jù)庫的負(fù)載均衡方法及數(shù)據(jù)庫系統(tǒng)。
背景技術(shù):
1、當(dāng)前階段,前端業(yè)務(wù)通過負(fù)載均衡的方式對(duì)數(shù)據(jù)庫集群進(jìn)行訪問,負(fù)載均衡的實(shí)現(xiàn)分為幾類,分別是軟件層、硬件層、數(shù)據(jù)庫的驅(qū)動(dòng)層面進(jìn)行實(shí)現(xiàn),但各個(gè)實(shí)現(xiàn)方式都存在一定的局限性。
2、通過軟件層實(shí)現(xiàn)的方法是:使用nginx、lvs和haproxy等軟件可以實(shí)現(xiàn)高效的負(fù)載均衡。這些軟件通常作為反向代理服務(wù)器,接收來自客戶端的請(qǐng)求,然后根據(jù)配置的負(fù)載均衡算法,如輪詢、權(quán)重輪詢、最少連接數(shù)等,將請(qǐng)求分發(fā)到后端數(shù)據(jù)庫節(jié)點(diǎn)。優(yōu)點(diǎn)是配置靈活,易于擴(kuò)展和管理,可以根據(jù)需要定制負(fù)載均衡策略。缺點(diǎn)是需要額外的硬件和軟件資源來運(yùn)行負(fù)載均衡軟件,可能增加系統(tǒng)的復(fù)雜性和維護(hù)成本,同時(shí)集群變更如擴(kuò)縮容節(jié)點(diǎn)需要手動(dòng)重新配置軟件。另一個(gè)方法是:api網(wǎng)關(guān),如api-gateway服務(wù),也可以作為負(fù)載均衡的解決方案。它位于客戶端和數(shù)據(jù)庫之間,負(fù)責(zé)接收和處理請(qǐng)求,并將請(qǐng)求路由到合適的后端服務(wù)。優(yōu)點(diǎn)是除了負(fù)載均衡外,api網(wǎng)關(guān)還可以提供身份驗(yàn)證、限流、熔斷等功能,提高系統(tǒng)的安全性和穩(wěn)定性。缺點(diǎn)是同樣需要額外的硬件和軟件資源,并可能增加系統(tǒng)的復(fù)雜性和維護(hù)成本,以及在集群變更情況下需手動(dòng)維護(hù)。
3、通過軟件層實(shí)現(xiàn)的方法是:使用硬件負(fù)載均衡器如f5、a10等硬件負(fù)載均衡器,它們通過專門的硬件設(shè)備實(shí)現(xiàn)負(fù)載均衡功能。硬件負(fù)載均衡器通常具有高性能、高穩(wěn)定性和低延遲的特點(diǎn)。優(yōu)點(diǎn)是性能穩(wěn)定,處理能力強(qiáng),適用于大規(guī)模并發(fā)場(chǎng)景。缺點(diǎn)是成本較高,需要專門的硬件設(shè)備和維護(hù)團(tuán)隊(duì)。
4、通過驅(qū)動(dòng)層實(shí)現(xiàn)的方法是:通過配套驅(qū)動(dòng)的實(shí)現(xiàn)通過ips等方式配置數(shù)據(jù)庫現(xiàn)有所有可提供業(yè)務(wù)支持的節(jié)點(diǎn)配置,內(nèi)部輪轉(zhuǎn)實(shí)現(xiàn)負(fù)載均衡。優(yōu)點(diǎn)是無需采用額外的軟硬件設(shè)施,成本可控。缺點(diǎn)是在集群變更,即擴(kuò)縮容場(chǎng)景下,需重新進(jìn)行驅(qū)動(dòng)ips等配置,不能自動(dòng)識(shí)別新增/刪除的可用節(jié)點(diǎn)信息。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供了一種用于分布式數(shù)據(jù)庫的負(fù)載均衡方法及數(shù)據(jù)庫系統(tǒng),至少解決了現(xiàn)在市面上實(shí)現(xiàn)的主流負(fù)載均衡方式需要額外的軟硬件資源且需要實(shí)時(shí)監(jiān)測(cè),需要手動(dòng)變更維護(hù)訪問機(jī)制以防止業(yè)務(wù)故障的問題。
2、一種用于分布式數(shù)據(jù)庫的負(fù)載均衡方法,包括由至少兩個(gè)節(jié)點(diǎn)組成的分布式集群和配置在分布式集群內(nèi)部的訪問代理,還包括以下步驟:
3、響應(yīng)于監(jiān)聽到所述分布式集群中節(jié)點(diǎn)的狀態(tài)變化,更新所述訪問代理的訪問機(jī)制;
4、響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn)。
5、可選的,所述響應(yīng)于監(jiān)聽到所述分布式集群中節(jié)點(diǎn)的狀態(tài)變化,更新所述訪問代理的訪問機(jī)制,包括:
6、響應(yīng)于監(jiān)聽到所述分布式集群中出現(xiàn)節(jié)點(diǎn)故障、節(jié)點(diǎn)縮容或節(jié)點(diǎn)擴(kuò)容中的至少一種情況,更新所述訪問代理的訪問機(jī)制。
7、可選的,所述響應(yīng)于監(jiān)聽到所述分布式集群中出現(xiàn)節(jié)點(diǎn)故障、節(jié)點(diǎn)縮容或節(jié)點(diǎn)擴(kuò)容中的至少一種情況,更新所述訪問代理的訪問機(jī)制,包括:
8、當(dāng)監(jiān)聽到所述分布式集群中出現(xiàn)節(jié)點(diǎn)故障或節(jié)點(diǎn)縮容時(shí),將出現(xiàn)節(jié)點(diǎn)故障的節(jié)點(diǎn)或縮容節(jié)點(diǎn)在所述訪問機(jī)制中設(shè)置為不可用;
9、當(dāng)監(jiān)聽到所述分布式集群中出現(xiàn)節(jié)點(diǎn)擴(kuò)容時(shí),根據(jù)擴(kuò)容節(jié)點(diǎn)的節(jié)點(diǎn)功能和負(fù)載能力將所述擴(kuò)容節(jié)點(diǎn)加入所述訪問機(jī)制。
10、可選的,所述響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),包括:
11、響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,解析所述目標(biāo)訪問請(qǐng)求以獲取目標(biāo)需求;
12、根據(jù)所述目標(biāo)需求和節(jié)點(diǎn)功能信息,篩選出所述分布式集群中能夠滿足所述目標(biāo)需求的至少一個(gè)節(jié)點(diǎn);
13、根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后各個(gè)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期;
14、所述目標(biāo)節(jié)點(diǎn)屬于所述分布式集群中能夠滿足所述目標(biāo)需求的至少一個(gè)節(jié)點(diǎn);所述節(jié)點(diǎn)功能信息、所述節(jié)點(diǎn)負(fù)載信息和所述負(fù)載均衡機(jī)制屬于所述訪問機(jī)制。
15、可選的,所述響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),包括:
16、響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,解析所述目標(biāo)訪問請(qǐng)求以獲取目標(biāo)需求;
17、根據(jù)所述目標(biāo)需求,判斷響應(yīng)所述目標(biāo)需求需要的目標(biāo)時(shí)間;
18、根據(jù)所述目標(biāo)需求和節(jié)點(diǎn)功能信息,篩選出所述分布式集群中能夠滿足所述目標(biāo)需求的至少一個(gè)節(jié)點(diǎn);
19、根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后的目標(biāo)時(shí)間內(nèi)各個(gè)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期;
20、所述目標(biāo)節(jié)點(diǎn)屬于所述分布式集群中能夠滿足所述目標(biāo)需求的至少一個(gè)節(jié)點(diǎn);所述節(jié)點(diǎn)功能信息、所述節(jié)點(diǎn)負(fù)載信息和所述負(fù)載均衡機(jī)制屬于所述訪問機(jī)制。
21、可選的,所述響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),包括:
22、響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,解析所述目標(biāo)訪問請(qǐng)求以獲取目標(biāo)需求;
23、根據(jù)所述目標(biāo)需求,判斷響應(yīng)所述目標(biāo)需求需要的目標(biāo)時(shí)間;
24、根據(jù)所述目標(biāo)需求、目標(biāo)時(shí)間和節(jié)點(diǎn)功能信息,篩選出所述分布式集群中能夠滿足所述目標(biāo)需求和目標(biāo)時(shí)間的至少一個(gè)節(jié)點(diǎn);
25、根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后的目標(biāo)時(shí)間內(nèi)各個(gè)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期;
26、所述目標(biāo)節(jié)點(diǎn)屬于所述分布式集群中能夠滿足所述目標(biāo)需求的至少一個(gè)節(jié)點(diǎn);所述節(jié)點(diǎn)功能信息、所述節(jié)點(diǎn)負(fù)載信息和所述負(fù)載均衡機(jī)制屬于所述訪問機(jī)制。
27、可選的,所述分布式集群中的節(jié)點(diǎn)分為長(zhǎng)時(shí)間任務(wù)節(jié)點(diǎn)和短時(shí)間任務(wù)節(jié)點(diǎn),所述長(zhǎng)時(shí)間任務(wù)節(jié)點(diǎn)被配置為處理需要的時(shí)間超過第一閾值的需求,所述短時(shí)間任務(wù)節(jié)點(diǎn)被配置為處理需要的時(shí)間不超過第一閾值的需求;
28、所述根據(jù)所述目標(biāo)需求、目標(biāo)時(shí)間和節(jié)點(diǎn)功能信息,篩選出所述分布式集群中能夠滿足所述目標(biāo)需求和目標(biāo)時(shí)間的至少一個(gè)節(jié)點(diǎn),包括:
29、根據(jù)所述目標(biāo)時(shí)間,判斷所述目標(biāo)時(shí)間是否超過預(yù)設(shè)的第一閾值;
30、當(dāng)所述目標(biāo)時(shí)間超過預(yù)設(shè)的第一閾值時(shí),所述根據(jù)所述目標(biāo)需求和節(jié)點(diǎn)功能信息,從長(zhǎng)時(shí)間任務(wù)節(jié)點(diǎn)中篩選出所述分布式集群中能夠滿足所述目標(biāo)需求和目標(biāo)時(shí)間的至少一個(gè)節(jié)點(diǎn);
31、當(dāng)所述目標(biāo)時(shí)間不超過預(yù)設(shè)的第一閾值時(shí),所述根據(jù)所述目標(biāo)需求和節(jié)點(diǎn)功能信息,從短時(shí)間任務(wù)節(jié)點(diǎn)中篩選出所述分布式集群中能夠滿足所述目標(biāo)需求和目標(biāo)時(shí)間的至少一個(gè)節(jié)點(diǎn)。
32、可選的,根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后的目標(biāo)時(shí)間內(nèi)各個(gè)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期,包括:
33、當(dāng)所述目標(biāo)時(shí)間超過預(yù)設(shè)的第一閾值時(shí),根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后的目標(biāo)時(shí)間內(nèi)各個(gè)長(zhǎng)時(shí)間任務(wù)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期;
34、當(dāng)所述目標(biāo)時(shí)間不超過預(yù)設(shè)的第一閾值時(shí),根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后的目標(biāo)時(shí)間內(nèi)各個(gè)短時(shí)間任務(wù)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期。
35、再一方面,一種用于分布式數(shù)據(jù)庫的負(fù)載均衡數(shù)據(jù)庫系統(tǒng),包括由至少兩個(gè)節(jié)點(diǎn)組成的分布式集群和配置在分布式集群內(nèi)部的訪問代理和監(jiān)聽組件;
36、所述監(jiān)聽組件被配置為:
37、響應(yīng)于監(jiān)聽到所述分布式集群中節(jié)點(diǎn)的狀態(tài)變化,更新所述訪問代理的訪問機(jī)制;
38、所述訪問代理被配置為:
39、存儲(chǔ)所述訪問機(jī)制;
40、響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn)。
41、可選的,所述響應(yīng)于監(jiān)聽到所述分布式集群中節(jié)點(diǎn)的狀態(tài)變化,更新所述訪問代理的訪問機(jī)制,包括:
42、響應(yīng)于監(jiān)聽到所述分布式集群中出現(xiàn)節(jié)點(diǎn)故障、節(jié)點(diǎn)縮容或節(jié)點(diǎn)擴(kuò)容中的至少一種情況,更新所述訪問代理的訪問機(jī)制。
43、可選的,所述響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),包括:
44、響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,解析所述目標(biāo)訪問請(qǐng)求以獲取目標(biāo)需求;
45、根據(jù)所述目標(biāo)需求,判斷響應(yīng)所述目標(biāo)需求需要的目標(biāo)時(shí)間;
46、根據(jù)所述目標(biāo)需求、目標(biāo)時(shí)間和節(jié)點(diǎn)功能信息,篩選出所述分布式集群中能夠滿足所述目標(biāo)需求和目標(biāo)時(shí)間的至少一個(gè)節(jié)點(diǎn);
47、根據(jù)節(jié)點(diǎn)負(fù)載信息和負(fù)載均衡機(jī)制,為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn),以使目標(biāo)訪問請(qǐng)求分配后的目標(biāo)時(shí)間內(nèi)各個(gè)節(jié)點(diǎn)的負(fù)載分布符合預(yù)期;
48、所述目標(biāo)節(jié)點(diǎn)屬于所述分布式集群中能夠滿足所述目標(biāo)需求的至少一個(gè)節(jié)點(diǎn);所述節(jié)點(diǎn)功能信息、所述節(jié)點(diǎn)負(fù)載信息和所述負(fù)載均衡機(jī)制屬于所述訪問機(jī)制。
49、另一方面,一種計(jì)算機(jī)設(shè)備,該計(jì)算機(jī)設(shè)備包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序,實(shí)現(xiàn)上述的方法。
50、另一方面,一種計(jì)算機(jī)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,處理器執(zhí)行所述計(jì)算機(jī)程序,實(shí)現(xiàn)上述的方法。
51、本發(fā)明與現(xiàn)有技術(shù)相比,具有如下的優(yōu)點(diǎn)和有益效果:
52、本發(fā)明一種用于分布式數(shù)據(jù)庫的負(fù)載均衡方法及數(shù)據(jù)庫系統(tǒng),包括由至少兩個(gè)節(jié)點(diǎn)組成的分布式集群和配置在分布式集群內(nèi)部的訪問代理,還包括以下步驟:響應(yīng)于監(jiān)聽到所述分布式集群中節(jié)點(diǎn)的狀態(tài)變化,更新所述訪問代理的訪問機(jī)制;響應(yīng)于針對(duì)所述分布式集群的目標(biāo)訪問請(qǐng)求,根據(jù)所述訪問代理的訪問機(jī)制為所述目標(biāo)訪問請(qǐng)求分配目標(biāo)節(jié)點(diǎn)。至少解決了現(xiàn)在市面上實(shí)現(xiàn)的主流負(fù)載均衡方式需要額外的軟硬件資源且需要實(shí)時(shí)監(jiān)測(cè),需要手動(dòng)變更維護(hù)訪問機(jī)制以防止業(yè)務(wù)故障的問題。