負(fù)載均衡:做了「負(fù)載均衡」就可以隨便加服務(wù)器了嗎?
【溫馨提醒】文章內(nèi)容僅供參考,海外服務(wù)器租用\托管方案,請(qǐng)咨詢YINGSOO客服,24小時(shí)免費(fèi)電話400-630-3752
【熱門主機(jī)】香港云服務(wù)器丨bgp高防服務(wù)器租用
【熱搜問(wèn)題】香港站群服務(wù)器多ip
下面這個(gè)場(chǎng)景不知是否在你面前出現(xiàn)過(guò):
開(kāi)發(fā)Z哥對(duì)運(yùn)維Y弟喊:“Y弟,現(xiàn)在系統(tǒng)好卡,剛上了一波活動(dòng),趕緊幫我加幾臺(tái)機(jī)器上去頂一下?!?/p>
Y弟回復(fù)說(shuō):“沒(méi)問(wèn)題,分分鐘搞定”。
然后就發(fā)現(xiàn)數(shù)據(jù)庫(kù)的壓力迅速上升,dbA就吼了:“Z哥,你丫的搞什么呢?數(shù)據(jù)庫(kù)要被你弄垮了”。
然后客服那邊接框也爆炸了,越來(lái)越多的用戶說(shuō)剛登陸后沒(méi)多久,操作著就退出了,接著登陸,又退出了,到底還做不做生意了。
這些問(wèn)題背后都是由于一個(gè)「session丟失」問(wèn)題導(dǎo)致的。
一、什么是session丟失
相信session對(duì)大部分coder來(lái)說(shuō)應(yīng)該都知道。它是為了將同一個(gè)用戶的多次訪問(wèn)在系統(tǒng)中被識(shí)別為“同一個(gè)用戶”而產(chǎn)生的概念。除此之外,還可以基于它來(lái)減少重復(fù)往db或者遠(yuǎn)程服務(wù)處獲取與該用戶[客服案例]相關(guān)的信息,以起到提升性能的作用。
在我們做了負(fù)載均衡的場(chǎng)景中,如果選擇的負(fù)載策略是hash策略,那么會(huì)使得session產(chǎn)生一個(gè)副作用,這個(gè)副作用就如上面舉的案例那樣,用戶一旦由于某種原因從原先訪問(wèn)服務(wù)器A變成訪問(wèn)服務(wù)器b,就會(huì)出現(xiàn)“登陸狀態(tài)丟失”、“緩存穿透”等問(wèn)題。
為什么hash策略會(huì)出現(xiàn)這個(gè)問(wèn)題呢?首先有必要先了解一下hash是如何進(jìn)行的。hash策略就是下圖這樣的一個(gè)散列函數(shù)。在函數(shù)不變的情況下,A永遠(yuǎn)對(duì)應(yīng)01,b對(duì)應(yīng)04[菲律賓云服務(wù)器推薦],c對(duì)應(yīng)08。
以nginx中的ip_hash策略來(lái)舉個(gè)例子。因?yàn)槲覀冋J(rèn)為正常情況下用戶的ip不會(huì)在短時(shí)間內(nèi)發(fā)生變化,所以當(dāng)我們選擇使用ip_hash策略進(jìn)行負(fù)載均衡時(shí),意味著期望同一個(gè)用戶能夠一直訪問(wèn)到同一臺(tái)服務(wù)器上,就像下圖這樣,圖中的hash函數(shù)是最簡(jiǎn)單的隨意舉例。
如此一來(lái),我們只需要在這一臺(tái)服務(wù)器上將這個(gè)用戶相關(guān)的信息緩存在進(jìn)程內(nèi),就能起到非常高性價(jià)比的提升性能的效果。
這時(shí),客戶端與服務(wù)端之間的相當(dāng)于建立了一個(gè)信任,相互認(rèn)識(shí)。這個(gè)信任就是「session」。
但是,當(dāng)我們加了一臺(tái)服務(wù)器之后,事情就發(fā)生變化了,圖中的hash函數(shù)是最簡(jiǎn)單的隨意舉例。
這個(gè)時(shí)候我們?cè)鹊念A(yù)期就被破壞了。因?yàn)橛脩襞c序號(hào)0節(jié)點(diǎn)的鏈接變成了與序號(hào)3的鏈接,所以產(chǎn)生了前面提到的「session丟失」問(wèn)題。與此同時(shí),在序號(hào)0節(jié)點(diǎn)上做的進(jìn)程內(nèi)緩存都無(wú)效了,而在序號(hào)3節(jié)點(diǎn)上又沒(méi)有用戶相關(guān)的任何緩存,導(dǎo)致大量數(shù)據(jù)需要從下游的db或者遠(yuǎn)程服務(wù)處獲取。你要知道,一旦涉及到網(wǎng)絡(luò)通信,性能必然明顯下降,i/o、序列化都是耗時(shí)的工作。更重要的是,一旦同時(shí)有大量用戶產(chǎn)生這個(gè)情況,由于后端的db和遠(yuǎn)程服務(wù)瞬時(shí)無(wú)法承載激增的高密度請(qǐng)求,可能會(huì)導(dǎo)致它掛起。這還沒(méi)完,如果當(dāng)前程序沒(méi)有一些故障隔離或者降級(jí)策略,還會(huì)進(jìn)一步產(chǎn)生蝴蝶效應(yīng),導(dǎo)致整個(gè)大系統(tǒng)響應(yīng)緩慢??芍^“一顆老鼠屎壞了一鍋粥”。
二、nginx是如何來(lái)解決這個(gè)問(wèn)題的
既然以nginx舉例,還是從nginx開(kāi)始聊。通過(guò)在nginx中引入nginx-sticky-module模塊可以來(lái)解決這個(gè)問(wèn)題。解決的整個(gè)過(guò)程如下。
可以看到,當(dāng)client第一次進(jìn)入到nginx匹配節(jié)點(diǎn)的時(shí)候,在給它分配一個(gè)節(jié)點(diǎn)的同時(shí),會(huì)將這個(gè)節(jié)點(diǎn)的唯一標(biāo)識(shí)進(jìn)行md5后寫入到cookie中一并返回,如果下次再發(fā)起請(qǐng)求的時(shí)候發(fā)現(xiàn)帶有這個(gè)cookie值,就直接轉(zhuǎn)發(fā)到該值所對(duì)應(yīng)的節(jié)點(diǎn)上去。這個(gè)機(jī)制被專業(yè)的稱之為「session保持」。
雖然可以利用cookie來(lái)解決這個(gè)問(wèn)題,但是cookie也有一個(gè)潛在的問(wèn)題,如果客戶端未開(kāi)啟cookie功能,這個(gè)機(jī)制就失效了。不過(guò)好在目前主流瀏覽器都是默認(rèn)打開(kāi)cookie的。
題外話:nginx是2004年發(fā)布的,在nginx-sticky-module出現(xiàn)之前的7年間也是nginx相比競(jìng)品HAproxy最大的一個(gè)短板,因?yàn)镠Aproxy支持session保持。
三、session保持的其它方案
除了cookie之外,還有2種方式也可以最終達(dá)到類似的效果。分別被稱為「session復(fù)制」、「session共享」。
1、session復(fù)制
這是最簡(jiǎn)單粗暴的方式。根據(jù)第一節(jié)的案例來(lái)看,導(dǎo)致問(wèn)題的原因是節(jié)點(diǎn)3沒(méi)有用戶的session。那么很容易想到,在節(jié)點(diǎn)3運(yùn)行之前把session相關(guān)的cache數(shù)據(jù)復(fù)制過(guò)去唄。并且在多個(gè)節(jié)點(diǎn)之間持續(xù)保證數(shù)據(jù)的同步,也就是說(shuō),每一臺(tái)節(jié)點(diǎn)上都存在每個(gè)用戶的session數(shù)據(jù)。
實(shí)現(xiàn)的方案有很多,特別是不同的宿主程序都或多或少提供了一些切入點(diǎn),甚至是拿來(lái)即用的方案,如tomcat的delta manager和backup manager、tomcat和iis的Filter機(jī)制等等,這里就不展開(kāi)了。
此類方案的特點(diǎn)是:
優(yōu)點(diǎn):本公司。 session 共享。所有節(jié)點(diǎn)共用一份數(shù)據(jù)。
越大型的系統(tǒng),最終都會(huì)往「session共享」這個(gè)方案上走,因?yàn)橹灰賹?duì)這個(gè)共享存儲(chǔ)做橫向擴(kuò)展,理論上就可以支撐無(wú)窮大的用戶了。如Redis、一系列的nosQL以及newsQL等。就像下面這樣,集「規(guī)模大」、「高可用」、「效果好」于一身。
四、結(jié)語(yǔ)
現(xiàn)在你應(yīng)該清楚了session丟失問(wèn)題,也知道了如何去應(yīng)對(duì)他。但是,我們還需要明白一個(gè)事實(shí):嚴(yán)格來(lái)說(shuō)「session保持」本質(zhì)上是破壞了做「負(fù)載均衡」的初衷。舉個(gè)極端點(diǎn)的場(chǎng)景:一共有10個(gè)會(huì)話連在了節(jié)點(diǎn)A上,并且都是活動(dòng)中狀態(tài)。那么這個(gè)時(shí)候哪怕增加一個(gè)節(jié)點(diǎn)b上線,只要沒(méi)有新的會(huì)話進(jìn)來(lái),節(jié)點(diǎn)b上的活動(dòng)連接數(shù)永遠(yuǎn)是0,并沒(méi)有起到分擔(dān)壓力的作用。
但是,在系統(tǒng)的起步時(shí)期,其實(shí)用這樣簡(jiǎn)單的方案也是極好的。(作者:Zachary;來(lái)源:Java后端技術(shù))
如何判[高防美國(guó)服務(wù)器]斷香港vps的好壞
現(xiàn)如今大家都會(huì)想要去搭建一個(gè)網(wǎng)站,因?yàn)椴还苁瞧髽I(yè)還是個(gè)人,只要擁有了一個(gè)網(wǎng)站,那么后續(xù)的相關(guān)的操作就會(huì)帶來(lái)極大的便利,但是由于國(guó)內(nèi)的網(wǎng)站搭建它必須要向有關(guān)部門申請(qǐng)備案。而這個(gè)備案的過(guò)程其實(shí)是非常麻煩的,它既需要我們花時(shí)間去進(jìn)行操作,同時(shí)也需要投入非常多的精力,這樣一來(lái)就會(huì)影響到我們的網(wǎng)站搭建的步驟,所以人們現(xiàn)如今會(huì)更加愿意去選擇香港vps,因?yàn)橄愀踲ps主機(jī)是不需要大家進(jìn)行備案的同時(shí),我們大陸地區(qū)訪問(wèn)的速度相對(duì)于國(guó)外的vps也要更快,所以目前它已經(jīng)成為了國(guó)內(nèi)的網(wǎng)站建設(shè)者最信賴的產(chǎn)品。
也正是由于現(xiàn)在需要香港vps的人數(shù)量變得越來(lái)越多,這就導(dǎo)致有很多的網(wǎng)絡(luò)建設(shè)者在購(gòu)買香港vps的過(guò)程當(dāng)中,很容易出現(xiàn)買到一些質(zhì)量并不是非常好的現(xiàn)象,那如果我們花了錢,但是購(gòu)買到的vps主機(jī),卻不是我們想象當(dāng)中的那么好的話,這肯定會(huì)影響到我們的后續(xù)的網(wǎng)站建設(shè),而且這一類型的vps主機(jī)使用起來(lái)也經(jīng)常會(huì)出現(xiàn)問(wèn)題,導(dǎo)[服務(wù)器如何抵抗洪水攻擊]致網(wǎng)站的訪問(wèn)速度比較慢,而且運(yùn)行也并不是非常的穩(wěn)定,所以新手在挑選香港的vps主機(jī)的時(shí)候,還是應(yīng)該要去掌握一定的判別方法,就當(dāng)你懂得了如何去判別香港的vps主機(jī)的好壞的時(shí)候,我們才可以幫助自己挑選到最好的vps主機(jī)。大家在購(gòu)買香港的vps主機(jī)的時(shí)候,首先要做到的就是去認(rèn)定這個(gè)主機(jī)供應(yīng)商的資質(zhì)究竟是怎樣的,以及它的機(jī)房的存放地點(diǎn)是在哪里?接著再去查看它的帶寬資源,因?yàn)閹捹Y源會(huì)直接影響到我們的網(wǎng)站訪問(wèn)速度和網(wǎng)站的穩(wěn)定性,除此之外我們還必須要去了解這個(gè)供應(yīng)商,它能不能夠?yàn)槲覀兲峁└玫氖酆蠓?wù)。
有一部分的,用戶會(huì)認(rèn)為機(jī)房的好壞會(huì)直接決定香港的vps的好壞。因?yàn)樵谙愀鄞嬖诓簧俚乃饺藱C(jī)房,而有一部分的私人機(jī)房,他為了賺取利潤(rùn),所以就會(huì)去使用一些質(zhì)量并不是非常好的硬件,這樣就會(huì)導(dǎo)致機(jī)房的環(huán)境相對(duì)來(lái)說(shuō)會(huì)比較差。甚至它并不存在寬帶監(jiān)控等服務(wù),那這樣一來(lái)我們的運(yùn)行環(huán)境肯定就會(huì)存在問(wèn)題。這就告誡我們的用戶,在挑選的過(guò)程當(dāng)中必須要去選擇機(jī)房最好的那個(gè)供應(yīng)商。當(dāng)然大家也必須要去注意vps的大小是否是真實(shí)的,因?yàn)橛袝r(shí)候主機(jī)商會(huì)給大家畫一個(gè)大餅告訴你,這個(gè)vps究竟有多大,但實(shí)際上它的大小其實(shí)并沒(méi)有達(dá)到供應(yīng)商所說(shuō)的那個(gè)規(guī)模,這其實(shí)是欺騙客戶的一種行為,那如果你沒(méi)有去注意它的這個(gè)大小規(guī)模的真實(shí)性的話,就很容易上當(dāng)受騙
正常情況下,大家在和這個(gè)供應(yīng)商進(jìn)行合作之前,首先在市場(chǎng)當(dāng)中去了解供應(yīng)商的口碑,如果他的口碑會(huì)比較好的話,那大家就可以放心的跟他進(jìn)行合作。只要你不是一味的貪圖小便宜的話,那么我們選擇的vps供應(yīng)商其實(shí)都不會(huì)差到哪里去。
YINGSOO:www.sddonglingsh.com
熱門文章:【香港cn2服務(wù)器推薦】【ddos防御多少錢】【韓國(guó)VPS該怎樣起一個(gè)價(jià)值千萬(wàn)的域名】【國(guó)外云主機(jī)服務(wù)商推薦】【商家服務(wù)器】【免備案云平臺(tái)】【傳奇服務(wù)器租用】【德國(guó)云服務(wù)器優(yōu)勢(shì)有哪些】【選擇云服務(wù)器】【網(wǎng)站空間】【短視頻服務(wù)器】【游戲高防服務(wù)器】【云專線云專線優(yōu)化】【方舟進(jìn)化服務(wù)器】【都在用的韓國(guó)低價(jià)高配服務(wù)器】【香港服務(wù)器托管簡(jiǎn)介及優(yōu)缺點(diǎn)】【路由企業(yè)】【Linux空間的三個(gè)小知識(shí)點(diǎn)】【新加坡主機(jī)】【刀塔傳奇服務(wù)器】【服務(wù)器物理】【如何選購(gòu)獨(dú)立香港服務(wù)器】【CC防御服務(wù)器租用價(jià)格】【我的世界服務(wù)器租用】【浙江電信帶寬服務(wù)器租用】【電信服務(wù)器租用】【外貿(mào)抗投訴服務(wù)器租用的相關(guān)問(wèn)題】【國(guó)外服務(wù)器地址在哪里看】【怎么租國(guó)外的服務(wù)器】【云免服務(wù)器購(gòu)買】
YINGSOO用美國(guó)的主機(jī)_免費(fèi)CC防御流量_無(wú)需備案
用美國(guó)的主機(jī)美國(guó)vps超寬國(guó)際出口 , 一手資源 , 重裝系統(tǒng) , 10MB獨(dú)享帶寬 ,在線有重啟 , 無(wú)極網(wǎng)絡(luò) , 高速穩(wěn)定,年付8.3折優(yōu)惠
http://www.sddonglingsh.com/products/cloud-us.html
快人一步!!YINGSOO主機(jī)托管臺(tái)灣延遲低至35ms!
主機(jī)托管臺(tái)灣,Hinet機(jī)房合作,五星貼心服務(wù),免備案高品質(zhì)主機(jī)托管臺(tái)灣,延遲低至40ms.YINGSOO新版云控制臺(tái)上線,主機(jī)托管臺(tái)灣鉅惠來(lái)襲,注冊(cè)送優(yōu)惠碼,年付8.3折!
http://www.sddonglingsh.com/products/cloud-tw.html
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。