溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

編程開發(fā)中連接池的示例分析

發(fā)布時(shí)間:2022-03-31 11:14:23 來源:億速云 閱讀:153 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)編程開發(fā)中連接池的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是連接池?

創(chuàng)建與管理連接緩沖池的技術(shù),本質(zhì)是資源復(fù)用,不用頻繁創(chuàng)建與銷毀連接,能提高性能。

畫外音:數(shù)據(jù)庫(kù)連接池,服務(wù)連接池,都是連接池。

微服務(wù)分層架構(gòu)中,連接池扮演著極其重要的角色。

編程開發(fā)中連接池的示例分析

如上圖:

  • 上層虛線框,是web集群;

  • 下層虛線框,是service集群;

  • 綠色框,代表一條上下游建立的連接;

  • 藍(lán)色框,代表連接池;

此例中,一個(gè)調(diào)用方會(huì)與一個(gè)服務(wù)節(jié)點(diǎn)建立2條連接,服務(wù)集群共3個(gè)集群,故連接池總共6條連接,從c1到c6。

上層調(diào)用方,除了會(huì)從連接池中拿連接收發(fā)報(bào)文訪問下游服務(wù)外,互聯(lián)網(wǎng)架構(gòu)中,還有哪些技術(shù)點(diǎn)與連接池相關(guān)呢?

一、故障轉(zhuǎn)移與服務(wù)發(fā)現(xiàn)

編程開發(fā)中連接池的示例分析

如上圖:

  • 故障轉(zhuǎn)移,假如舊的服務(wù)節(jié)點(diǎn)s1出現(xiàn)了故障,c1和c2連接失效,會(huì)被從連接池中剔除,后續(xù)請(qǐng)求不會(huì)再發(fā)送到故障的節(jié)點(diǎn)中;

  • 服務(wù)發(fā)現(xiàn),假如新的服務(wù)節(jié)點(diǎn)s4上線,c7和c8連接建立,會(huì)被加入到連接池中來,后續(xù)請(qǐng)求會(huì)發(fā)送到新增的節(jié)點(diǎn)中;

動(dòng)態(tài)刪除連接與新增連接,這就是動(dòng)態(tài)連接池。

服務(wù)發(fā)現(xiàn),如何感知到新的節(jié)點(diǎn)s4上線呢?詳見《改了配置,不想重啟,怎么整?》。

二、負(fù)載均衡

采用輪詢的策略,逐個(gè)使用連接池中的連接,可以實(shí)現(xiàn)對(duì)下游服務(wù)訪問的負(fù)載均衡。

采用完全隨機(jī)的策略,也能實(shí)現(xiàn)負(fù)載均衡。

編程開發(fā)中連接池的示例分析

如上圖:

給每個(gè)連接一個(gè)相同的權(quán)重,取連接訪問下游時(shí),采用一個(gè)隨機(jī)算法,落到哪個(gè)格子用哪個(gè)連接,還是上面的例子:

n = random() % 6 + 1;

當(dāng)

  • n=[1,2],訪問s1;

  • n=[3,4],訪問s2;

  • n=[5,6],訪問s3;

3個(gè)區(qū)間的寬度相同,即落到某個(gè)服務(wù)的概率相等,負(fù)載是均衡的。

那么,如果服務(wù)節(jié)點(diǎn)的服務(wù)能力有差異,有的處理能力強(qiáng),有的處理能力弱,怎么辦呢?

三、靜態(tài)權(quán)重負(fù)載均衡

編程開發(fā)中連接池的示例分析

如上圖:

給每個(gè)服務(wù)配置一個(gè)不同的權(quán)重,連接池初始化時(shí),不同服務(wù)的區(qū)間大小有差異,取連接訪問下游時(shí),落到某個(gè)格子的概率也會(huì)有差異:

n = random() % 16 + 1;

當(dāng)

  • n=[1,2],訪問s1;

  • n=[3,6],訪問s2;

  • n=[7,16],訪問s3;

3個(gè)區(qū)間的寬度與服務(wù)的權(quán)重成正比,即落到某個(gè)服務(wù)的概率等同權(quán)重。

畫外音:nginx就支持這么玩,但靜態(tài)權(quán)重實(shí)在太粗暴了。

那么,如果服務(wù)節(jié)點(diǎn)的服務(wù)能力有差異,但又很難用靜態(tài)權(quán)重標(biāo)識(shí),怎么辦呢?

四、動(dòng)態(tài)權(quán)重負(fù)載均衡

編程開發(fā)中連接池的示例分析

如上圖:連接池初始化時(shí),為連接分配一個(gè)動(dòng)態(tài)的權(quán)重。

畫外音:服務(wù)不再需要配置了。

仍按照之前的方法分配負(fù)載,只是:

  • 連接處理超時(shí),動(dòng)態(tài)權(quán)重下降;

  • 連接處理成功,動(dòng)態(tài)權(quán)重上升;

關(guān)于“編程開發(fā)中連接池的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI