摘要:我們已經(jīng)實(shí)現(xiàn)了黏滯會(huì)話,但是如此一來(lái),黏滯會(huì)話可能或多或少地破壞了均衡策略,至少像權(quán)重分配這樣的動(dòng)態(tài)策略已經(jīng)無(wú)法工作,我們對(duì)此不能視而不見(jiàn),否則前面的努力即將付諸東流。
負(fù)載均衡調(diào)度器最大程度地讓用戶不必關(guān)心后端服務(wù)器,我們知道,當(dāng)采用RR調(diào)度策略時(shí),即便是同一用戶對(duì)同一內(nèi)容的多次請(qǐng)求,也可能被轉(zhuǎn)發(fā)到了不同的后端服務(wù)器,這聽(tīng)起來(lái)似乎沒(méi)什么大礙,但有時(shí)候,或許會(huì)帶來(lái)一些問(wèn)題。
當(dāng)某臺(tái)后端服務(wù)器啟用了Session來(lái)本地化保存用戶的一些數(shù)據(jù)后,下次用戶的請(qǐng)求如果轉(zhuǎn)發(fā)給了其他后端服務(wù)器,將導(dǎo)致之前的Session數(shù)據(jù)無(wú)法訪問(wèn);
后端服務(wù)器實(shí)現(xiàn)了一定的動(dòng)態(tài)內(nèi)容緩存,而毫無(wú)規(guī)律的轉(zhuǎn)發(fā)使得這些緩存的利用率下降。
如何解決這些問(wèn)題呢?從表面上看,我們需要做的就是調(diào)整調(diào)度策略,讓用戶在一次會(huì)話周期內(nèi)的所有請(qǐng)求始終轉(zhuǎn)發(fā)到一臺(tái)特定的后端服務(wù)器上,這種機(jī)制也稱為黏滯會(huì)話(Sticky Sessions),要實(shí)現(xiàn)它的關(guān)鍵在于如何設(shè)計(jì)持續(xù)性調(diào)度算法。
既然要讓調(diào)度器可以識(shí)別用戶,那么將用戶的IP地址作為識(shí)別標(biāo)志最為合適,一些反向代理服務(wù)器對(duì)此都有支持,比如Nginx和HAProxy,它們可以將用戶的IP地址進(jìn)行Hash計(jì)算并散列到不同的后端服務(wù)器上。
對(duì)于Nginx,只需要在upstream中聲明ip_hash即可,如下所示:
upstream backend {
ip_hash; server 10.0.1.200:80; server 10.0.1.201:80;
}
除此之外,你還可以利用Cookies機(jī)制來(lái)設(shè)計(jì)持久性算法,比如調(diào)度器將某個(gè)后端服務(wù)器的編號(hào)追加到寫(xiě)給用戶的Cookies中,這樣調(diào)度器便可以在該用戶隨后的請(qǐng)求中知道應(yīng)該轉(zhuǎn)發(fā)給哪臺(tái)后端服務(wù)器。這樣做可以更加細(xì)粒度地追蹤到每一個(gè)用戶,試想一下,當(dāng)有很多用戶隱藏在一個(gè)公開(kāi)IP地址后面時(shí),利用Cookies的持久性算法將顯得更加有效。
我們已經(jīng)實(shí)現(xiàn)了黏滯會(huì)話,但是如此一來(lái),黏滯會(huì)話可能或多或少地破壞了均衡策略,至少像權(quán)重分配這樣的動(dòng)態(tài)策略已經(jīng)無(wú)法工作,我們對(duì)此不能視而不見(jiàn),否則前面的努力即將付諸東流。
當(dāng)然,問(wèn)題的關(guān)鍵在于,我們究竟是否要通過(guò)實(shí)現(xiàn)黏滯會(huì)話來(lái)遷就系統(tǒng)的特殊需要呢?在權(quán)衡代價(jià)之后你認(rèn)為是否值得呢?最為關(guān)鍵的問(wèn)題是前面提到的兩個(gè)問(wèn)題是否能從根本上避免呢?如果可以,這很值得去考慮。
事實(shí)上,在后端服務(wù)器上保存Session數(shù)據(jù)和本地化緩存,的確是一件不明智的事情,它使得后端服務(wù)器顯得過(guò)于個(gè)性化,以至于和整個(gè)系統(tǒng)格格不入,如果允許的話,我們應(yīng)該盡量避免這樣的設(shè)計(jì),比如采用分布式Session或者分布式緩存等,讓后端服務(wù)器的應(yīng)用盡量與本地?zé)o關(guān),也可更好地適應(yīng)環(huán)境。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39397.html
摘要:現(xiàn)有的服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無(wú)法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請(qǐng)求。賦予高可用性讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過(guò) Nginx 優(yōu)化 Python 應(yīng)用性能。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 本文上一篇系: 利用...
摘要:現(xiàn)有的服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無(wú)法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請(qǐng)求。賦予高可用性讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過(guò) Nginx 優(yōu)化 Python 應(yīng)用性能。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 本文上一篇系: 利用...
摘要:負(fù)載調(diào)度器雙負(fù)載及會(huì)話復(fù)制后端數(shù)據(jù)庫(kù)環(huán)境作用一共享之前配置步驟關(guān)閉防火墻或者開(kāi)放端口,,,關(guān)閉安裝從官網(wǎng)下載最新版不啟動(dòng)兩臺(tái)主機(jī)進(jìn)行安裝從官網(wǎng)下載需要許可,允許之后下載至本地,導(dǎo)入主機(jī)從官網(wǎng)找到或者 Nginx負(fù)載調(diào)度器+雙Tomcat負(fù)載及會(huì)話復(fù)制+MySQL后端數(shù)據(jù)庫(kù) 環(huán)境: IP 作用 192.168.2.5 nginx 192.168.2.6 tomcat1 ...
閱讀 2012·2021-11-15 18:09
閱讀 903·2021-09-06 15:13
閱讀 2645·2021-08-23 09:43
閱讀 2026·2019-08-30 15:54
閱讀 2219·2019-08-30 13:56
閱讀 2486·2019-08-26 11:31
閱讀 3081·2019-08-26 10:56
閱讀 705·2019-08-26 10:28