負(fù)載均衡種類及實(shí)現(xiàn)

2021-02-05    分類: 網(wǎng)站建設(shè)

業(yè)務(wù)增長(zhǎng)到一定量級(jí),單純的增加增加服務(wù)器的配置已經(jīng)不能滿足業(yè)務(wù)需求,這個(gè)時(shí)候集群模式就是出現(xiàn)了。在集群模式中,負(fù)載均衡是回避不了的。負(fù)載均衡就是將請(qǐng)求“均勻”的分?jǐn)偨o不同的服務(wù)器。

負(fù)載均衡

瀏覽器(客戶端)負(fù)載均衡

通過(guò)DNS來(lái)實(shí)現(xiàn)負(fù)載均衡。DNS是域名解析服務(wù)器,可以將域名轉(zhuǎn)換成IP。服務(wù)器可以將多個(gè)IP注冊(cè)到DNS,這樣DNS在解析的時(shí)候,可以以輪詢的方式返回這些IP中的一個(gè),從而實(shí)現(xiàn)負(fù)載均衡。

這種實(shí)現(xiàn)方式的特點(diǎn)是,簡(jiǎn)單。另外,這種方式還能夠根據(jù)客戶端的地理位置返回離客戶端較近的服務(wù)器的IP,加快與客戶端的交互。這種方式的弊端也非常明顯:1.小公司沒(méi)有能力構(gòu)建自己的DNS;2.DNS無(wú)法感知后端服務(wù)器的負(fù)載,只能實(shí)現(xiàn)簡(jiǎn)單的輪詢處理;3.DNS的更新較慢。我們知道,域名會(huì)被緩存在本地和各級(jí)DNS中。當(dāng)域名對(duì)應(yīng)的IP更新的時(shí)候,客戶端要等到緩存過(guò)期才能使用新的IP。

LVS+nginx

LVS是四層負(fù)載均衡器,工作在內(nèi)核態(tài)。nginx是七層負(fù)載均衡器,當(dāng)然現(xiàn)在nginx也推出了四層負(fù)載均衡器,但是是收費(fèi)功能。什么是四層負(fù)載均衡器和七層負(fù)載均衡器呢?四層和七層是指負(fù)載均衡器工作在網(wǎng)絡(luò)協(xié)議的哪個(gè)層次。四層是IP層(網(wǎng)絡(luò)協(xié)議層),在這一層面的負(fù)載均衡器可以感知IP協(xié)議,也就是能夠知道客戶端的IP,可以根據(jù)客戶端的IP選擇將請(qǐng)求分發(fā)到哪個(gè)服務(wù)器上。請(qǐng)求的分發(fā)是通過(guò)修改目的IP的方式實(shí)現(xiàn)的,即將目的IP修改成后端服務(wù)器的IP。七層負(fù)載均衡器工作在應(yīng)用層,對(duì)于http請(qǐng)求,負(fù)載均衡器可以知道請(qǐng)求的URL、session等。一般情況下,四層負(fù)載均衡器的性能要高于七層負(fù)載均衡器。

對(duì)于nginx來(lái)說(shuō),配置簡(jiǎn)單,通過(guò)可以實(shí)現(xiàn)輪詢、隨機(jī)、加權(quán)輪詢和基于連接數(shù)的負(fù)載均衡等。

為了提高LVS的可用性,我們使用雙機(jī)對(duì)外提供服務(wù)。可以使用keepalived+VIP的方式實(shí)現(xiàn)雙機(jī)。雙機(jī)中,一臺(tái)機(jī)器是主機(jī),對(duì)外提供服務(wù),另一臺(tái)為備機(jī),不對(duì)外提供服務(wù)。二者通過(guò)keepalived軟件來(lái)判斷主機(jī)是否故障,自動(dòng)完成VIP從主機(jī)切換到備機(jī)。主備機(jī)的切換對(duì)客戶端是無(wú)感知的。

服務(wù)層負(fù)載均衡

這一層一般使用RPC框架來(lái)實(shí)現(xiàn),如DUBBO、SpringCloud等。

數(shù)據(jù)存儲(chǔ)層

對(duì)于數(shù)據(jù)庫(kù),有如下兩種常用的負(fù)載均衡方式:

1.讀寫分離。數(shù)據(jù)庫(kù)是一主多從,即一臺(tái)主服務(wù)器負(fù)責(zé)數(shù)據(jù)的寫操作,從庫(kù)對(duì)外提供讀服務(wù),主庫(kù)完成寫操作后,將更新同步到從庫(kù)或者從庫(kù)監(jiān)控主庫(kù)的寫LOG,將寫LOG同步到從庫(kù)。這種模式很適合寫少讀多的情況。

2.分庫(kù)。當(dāng)數(shù)據(jù)庫(kù)表大到一定規(guī)模后,就要考慮分庫(kù)了,即將一張表拆分到兩個(gè)數(shù)據(jù)庫(kù)中。常見(jiàn)的拆分規(guī)則有:

1)按照范圍拆分。比如對(duì)于用戶的ID,可以將小于5000的拆分到一個(gè)庫(kù)中,大于5000的拆分到另外一個(gè)庫(kù)。這種拆分比較簡(jiǎn)單,但是可能會(huì)出現(xiàn)活躍的用戶僅在某一個(gè)段內(nèi),導(dǎo)致負(fù)載均衡效果不是很理想。

2)hash。比如根據(jù)用戶ID計(jì)算哈希值,然后對(duì)數(shù)據(jù)庫(kù)服務(wù)器個(gè)數(shù)取模,得到這個(gè)用戶應(yīng)該存儲(chǔ)在哪個(gè)數(shù)據(jù)庫(kù)。這種方式可以很好的實(shí)現(xiàn)負(fù)載均衡,但是在增加服務(wù)器的情況下,數(shù)據(jù)的重新分布比較慢,而且可能移動(dòng)的數(shù)據(jù)比較多?,F(xiàn)在一般使用一致性hash,更好的實(shí)現(xiàn)負(fù)載均衡并較少服務(wù)器變化時(shí)數(shù)據(jù)移動(dòng)的數(shù)量。

網(wǎng)站名稱:負(fù)載均衡種類及實(shí)現(xiàn)
文章路徑:http://www.bm7419.com/news47/99297.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)網(wǎng)站建設(shè)服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)