目錄
1.前言--什么是負(fù)載均衡
何謂負(fù)載均衡,本質(zhì)上就是回答一個(gè)問(wèn)題:針對(duì)一個(gè)客戶(hù)端到來(lái)的請(qǐng)求熔酷,我該發(fā)送給哪個(gè)服務(wù)端(可能是一臺(tái)服務(wù)器,也可能是其他下游服務(wù))汪茧。當(dāng)然最理想的情況就是把請(qǐng)求交給某個(gè)能最快返回響應(yīng)的客戶(hù)端
1.1負(fù)載均衡算法
1.1.1輪詢(xún)與加權(quán)輪詢(xún)
顧名思義,所有節(jié)點(diǎn)輪流作為負(fù)載均衡的目標(biāo)節(jié)點(diǎn)双吆,但是實(shí)際上每臺(tái)機(jī)器/每個(gè)節(jié)點(diǎn)的處理能力都不相同抑淫,于是就加入了權(quán)重(權(quán)重越大胳搞,越有機(jī)會(huì)被選擇)
還有一個(gè)變種就是平滑的加權(quán)輪詢(xún)卸例,為防止出現(xiàn)連續(xù)多次請(qǐng)求都發(fā)送到同一個(gè)節(jié)點(diǎn)(每個(gè)節(jié)點(diǎn)有初始權(quán)重W和當(dāng)前權(quán)重currW),當(dāng)請(qǐng)求到達(dá)時(shí):
- 每個(gè)節(jié)點(diǎn)執(zhí)行currW+=W的操作
- 挑選最大currW為目標(biāo)節(jié)點(diǎn)
- 之后目標(biāo)節(jié)點(diǎn)currW-=sum(W)
即每次被挑選完后肌毅,curr下降筷转,下一次不會(huì)被選中
1.1.2隨機(jī)和加權(quán)隨機(jī)
同上,權(quán)重越大悬而,節(jié)點(diǎn)被隨機(jī)選中的概率越大呜舒,相比之下輪詢(xún)的可控性更強(qiáng)1.1.3 哈希與一致性哈希
通常是選取請(qǐng)求中的某幾個(gè)參數(shù)計(jì)算哈希值,然后除以節(jié)點(diǎn)數(shù)取余笨奠,和隨機(jī)類(lèi)似
但是哈希算法的選取會(huì)嚴(yán)重影響負(fù)載均衡的效果袭蝗,改進(jìn)方式就是一致性哈希負(fù)載均衡:
- 引入哈希環(huán),服務(wù)節(jié)點(diǎn)落在環(huán)某處
- 計(jì)算哈希值艰躺,哈希值會(huì)落在哈希環(huán)上呻袭,
-
從當(dāng)前位置出發(fā)順時(shí)針查找目標(biāo)節(jié)點(diǎn)
最典型的例子就是redis
1.1.4 最少連接數(shù)
該算法基于“節(jié)點(diǎn)連接數(shù)越多,負(fù)載就越高的假設(shè)”腺兴,挑選出連接數(shù)最少的節(jié)點(diǎn)作為目標(biāo),缺點(diǎn)就是忽略了連接多路復(fù)用的情況
1.1.5最少活躍
活躍請(qǐng)求指已經(jīng)接收但沒(méi)返回的請(qǐng)求廉侧,同理尋找最少页响,缺點(diǎn)是與最少連接數(shù)相同篓足,都不能真正代表服務(wù)端的負(fù)載,因?yàn)檎?qǐng)求也分大小闰蚕,如果活躍請(qǐng)求少栈拖,但是請(qǐng)求都很大,那么負(fù)載就會(huì)高
1.1.6 最快響應(yīng)時(shí)間
該指標(biāo)會(huì)比前兩者要好