千鋒扣丁學(xué)堂Linux培訓(xùn)之Nginx負(fù)載均衡的算法怎么實(shí)現(xiàn)的
2019-06-17 14:46:19
1082瀏覽
今天千鋒扣丁學(xué)堂Linux培訓(xùn)老師給大家分享一篇關(guān)于Nginx負(fù)載均衡的算法怎么實(shí)現(xiàn)的?為什么要做動(dòng)靜分離的全部?jī)?nèi)容?下面我們一起來(lái)看一下吧。
面試題:Nginx負(fù)載均衡的算法怎么實(shí)現(xiàn)的?Nginx有哪些負(fù)載均衡策略?Nginx為什么要做動(dòng)靜分離?
面試官心理剖析
主要是看應(yīng)聘人員對(duì)Nginx的基本原理是否熟悉,需要應(yīng)聘人員能夠根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景選擇合適的負(fù)載均衡(轉(zhuǎn)發(fā))策略。其次,在網(wǎng)站建設(shè)上,了解Nginx的優(yōu)劣勢(shì),能夠找到彌補(bǔ)其不足的方法,使得企業(yè)的業(yè)務(wù)達(dá)到最佳訪問(wèn)狀態(tài)。
Nginx
問(wèn)題剖析
1、Nginx負(fù)載均衡的算法怎么實(shí)現(xiàn)的?策略有哪些?
負(fù)載均衡是Nginx常用的一個(gè)功能,當(dāng)一臺(tái)服務(wù)器在單位時(shí)間內(nèi)的訪問(wèn)量越大時(shí),服務(wù)器壓力就越大,大到超過(guò)自身承受能力時(shí),服務(wù)器就會(huì)崩潰。
為了避免服務(wù)器崩潰,大家會(huì)通過(guò)負(fù)載均衡的方式來(lái)分擔(dān)服務(wù)器壓力。將對(duì)臺(tái)服務(wù)器組成一個(gè)集群,當(dāng)用戶訪問(wèn)時(shí),先訪問(wèn)到一個(gè)轉(zhuǎn)發(fā)服務(wù)器,再由轉(zhuǎn)發(fā)服務(wù)器將訪問(wèn)分發(fā)到壓力更小的服務(wù)器。
Nginx負(fù)載均衡實(shí)現(xiàn)的策略有以下五種:
(1)輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某個(gè)服務(wù)器宕機(jī),能自動(dòng)剔除故障系統(tǒng)。
upstream backserver {
server 192.168.0.12;
server 192.168.0.13;
}
(2)權(quán)重weight
weight的值越大分配到的訪問(wèn)概率越高,主要用于后端每臺(tái)服務(wù)器性能不均衡的情況下。其次是為在主從的情況下設(shè)置不同的權(quán)值,達(dá)到合理有效的地利用主機(jī)資源。
upstream backserver {
server 192.168.0.12 weight=2;
server 192.168.0.13 weight=8;
}
權(quán)重越高,在被訪問(wèn)的概率越大,如上例,分別是20%,80%。
(3)ip_hash(IP綁定)
每個(gè)請(qǐng)求按訪問(wèn)IP的哈希結(jié)果分配,使來(lái)自同一個(gè)IP的訪客固定訪問(wèn)一臺(tái)后端服務(wù)器,并且可以有效解決動(dòng)態(tài)網(wǎng)頁(yè)存在的session共享問(wèn)題
upstream backserver {
ip_hash;
server 192.168.0.12:88;
server 192.168.0.13:80;
}
(4)fair(第三方插件)
必須安裝upstream_fair模塊。
對(duì)比weight、ip_hash更加智能的負(fù)載均衡算法,fair算法可以根據(jù)頁(yè)面大小和加載時(shí)間長(zhǎng)短智能地進(jìn)行負(fù)載均衡,響應(yīng)時(shí)間短的優(yōu)先分配。
upstream backserver {
server server1;
server server2;
fair;
}
哪個(gè)服務(wù)器的響應(yīng)速度快,就將請(qǐng)求分配到那個(gè)服務(wù)器上。
(5)url_hash(第三方插件)
必須安裝Nginx的hash軟件包
按訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,可以進(jìn)一步提高后端緩存服務(wù)器的效率。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
2、為什么要做動(dòng)靜分離?
Nginx是當(dāng)下最熱的Web容器,網(wǎng)站優(yōu)化的重要點(diǎn)在于靜態(tài)化網(wǎng)站,網(wǎng)站靜態(tài)化的關(guān)鍵點(diǎn)則是是動(dòng)靜分離,動(dòng)靜分離是讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來(lái),動(dòng)靜資源做好了拆分以后,我們則根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作。
讓靜態(tài)的資源只走靜態(tài)資源服務(wù)器,動(dòng)態(tài)的走動(dòng)態(tài)的服務(wù)器
Nginx的靜態(tài)處理能力很強(qiáng),但是動(dòng)態(tài)處理能力不足,因此,在企業(yè)中常用動(dòng)靜分離技術(shù)。
對(duì)于靜態(tài)資源比如圖片,js,css等文件,我們則在反向代理服務(wù)器nginx中進(jìn)行緩存。這樣瀏覽器在請(qǐng)求一個(gè)靜態(tài)資源時(shí),代理服務(wù)器nginx就可以直接處理,無(wú)需將請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器tomcat。
若用戶請(qǐng)求的動(dòng)態(tài)文件,比如servlet,jsp則轉(zhuǎn)發(fā)給Tomcat服務(wù)器處理,從而實(shí)現(xiàn)動(dòng)靜分離。這也是反向代理服務(wù)器的一個(gè)重要的作用。
以上就是關(guān)于千鋒扣丁學(xué)堂Linux培訓(xùn)之Nginx負(fù)載均衡的算法怎么實(shí)現(xiàn)的全部?jī)?nèi)容,
想要學(xué)好Linux開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入HTML5前端開發(fā)VIP免費(fèi)公開課】
查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
Linux培訓(xùn)
Linux視頻教程
紅帽Linux視頻
Linux學(xué)習(xí)視頻
Linux入門視頻