2021-02-03 分類(lèi): 網(wǎng)站建設(shè)
Nginx的產(chǎn)生
沒(méi)有聽(tīng)過(guò)Nginx?那么一定聽(tīng)過(guò)它的"同行"Apache吧!Nginx同Apache一樣都是一種WEB服務(wù)器。基于REST架構(gòu)風(fēng)格,以統(tǒng)一資源描述符(Uniform Resources Identifier)URI或者統(tǒng)一資源定位符(Uniform Resources Locator)URL作為溝通依據(jù),通過(guò)HTTP協(xié)議提供各種網(wǎng)絡(luò)服務(wù)。
然而,這些服務(wù)器在設(shè)計(jì)之初受到當(dāng)時(shí)環(huán)境的局限,例如當(dāng)時(shí)的用戶(hù)規(guī)模,網(wǎng)絡(luò)帶寬,產(chǎn)品特點(diǎn)等局限并且各自的定位和發(fā)展都不盡相同。這也使得各個(gè)WEB服務(wù)器有著各自鮮明的特點(diǎn)。
Apache的發(fā)展時(shí)期很長(zhǎng),而且是毫無(wú)爭(zhēng)議的世界第一大服務(wù)器。它有著很多優(yōu)點(diǎn):穩(wěn)定、開(kāi)源、跨平臺(tái)等等。它出現(xiàn)的時(shí)間太長(zhǎng)了,它興起的年代,互聯(lián)網(wǎng)產(chǎn)業(yè)遠(yuǎn)遠(yuǎn)比不上現(xiàn)在。所以它被設(shè)計(jì)為一個(gè)重量級(jí)的。它不支持高并發(fā)的服務(wù)器。在Apache上運(yùn)行數(shù)以萬(wàn)計(jì)的并發(fā)訪問(wèn),會(huì)導(dǎo)致服務(wù)器消耗大量?jī)?nèi)存。操作系統(tǒng)對(duì)其進(jìn)行進(jìn)程或線程間的切換也消耗了大量的CPU資源,導(dǎo)致HTTP請(qǐng)求的平均響應(yīng)速度降低。
圖解:
在正向代理中,Proxy和Client同屬于一個(gè)LAN(圖中方框內(nèi)),隱藏了客戶(hù)端信息;
在反向代理中,Proxy和Server同屬于一個(gè)LAN(圖中方框內(nèi)),隱藏了服務(wù)端信息;
實(shí)際上,Proxy在兩種代理中做的事情都是替服務(wù)器代為收發(fā)請(qǐng)求和響應(yīng),不過(guò)從結(jié)構(gòu)上看正好左右互換了一下,所以把后出現(xiàn)的那種代理方式稱(chēng)為反向代理了。
負(fù)載均衡
我們已經(jīng)明確了所謂代理服務(wù)器的概念,那么接下來(lái),Nginx扮演了反向代理服務(wù)器的角色,它是以依據(jù)什么樣的規(guī)則進(jìn)行請(qǐng)求分發(fā)的呢?不用的項(xiàng)目應(yīng)用場(chǎng)景,分發(fā)的規(guī)則是否可以控制呢?
這里提到的客戶(hù)端發(fā)送的、Nginx反向代理服務(wù)器接收到的請(qǐng)求數(shù)量,就是我們說(shuō)的負(fù)載量。請(qǐng)求數(shù)量按照一定的規(guī)則進(jìn)行分發(fā)到不同的服務(wù)器處理的規(guī)則,就是一種均衡規(guī)則。
所以~將服務(wù)器接收到的請(qǐng)求按照規(guī)則分發(fā)的過(guò)程,稱(chēng)為負(fù)載均衡。
負(fù)載均衡在實(shí)際項(xiàng)目操作過(guò)程中,有硬件負(fù)載均衡和軟件負(fù)載均衡兩種,硬件負(fù)載均衡也稱(chēng)為硬負(fù)載,如F5負(fù)載均衡,相對(duì)造價(jià)昂貴成本較高,但是數(shù)據(jù)的穩(wěn)定性安全性等等有非常好的保障,如中國(guó)移動(dòng)中國(guó)聯(lián)通這樣的公司才會(huì)選擇硬負(fù)載進(jìn)行操作;更多的公司考慮到成本原因,會(huì)選擇使用軟件負(fù)載均衡,軟件負(fù)載均衡是利用現(xiàn)有的技術(shù)結(jié)合主機(jī)硬件實(shí)現(xiàn)的一種消息隊(duì)列分發(fā)機(jī)制。
Nginx支持的負(fù)載均衡調(diào)度算法方式如下:
weight輪詢(xún)(默認(rèn)):接收到的請(qǐng)求按照順序逐一分配到不同的后端服務(wù)器,即使在使用過(guò)程中,某一臺(tái)后端服務(wù)器宕機(jī),Nginx會(huì)自動(dòng)將該服務(wù)器剔除出隊(duì)列,請(qǐng)求受理情況不會(huì)受到任何影響。 這種方式下,可以給不同的后端服務(wù)器設(shè)置一個(gè)權(quán)重值(weight),用于調(diào)整不同的服務(wù)器上請(qǐng)求的分配率;權(quán)重?cái)?shù)據(jù)越大,被分配到請(qǐng)求的幾率越大;該權(quán)重值,主要是針對(duì)實(shí)際工作環(huán)境中不同的后端服務(wù)器硬件配置進(jìn)行調(diào)整的。
ip_hash:每個(gè)請(qǐng)求按照發(fā)起客戶(hù)端的ip的hash結(jié)果進(jìn)行匹配,這樣的算法下一個(gè)固定ip地址的客戶(hù)端總會(huì)訪問(wèn)到同一個(gè)后端服務(wù)器,這也在一定程度上解決了集群部署環(huán)境下session共享的問(wèn)題。
fair:智能調(diào)整調(diào)度算法,動(dòng)態(tài)的根據(jù)后端服務(wù)器的請(qǐng)求處理到響應(yīng)的時(shí)間進(jìn)行均衡分配,響應(yīng)時(shí)間短處理效率高的服務(wù)器分配到請(qǐng)求的概率高,響應(yīng)時(shí)間長(zhǎng)處理效率低的服務(wù)器分配到的請(qǐng)求少;結(jié)合了前兩者的優(yōu)點(diǎn)的一種調(diào)度算法。但是需要注意的是Nginx默認(rèn)不支持fair算法,如果要使用這種調(diào)度算法,請(qǐng)安裝upstream_fair模塊。
url_hash:按照訪問(wèn)的url的hash結(jié)果分配請(qǐng)求,每個(gè)請(qǐng)求的url會(huì)指向后端固定的某個(gè)服務(wù)器,可以在Nginx作為靜態(tài)服務(wù)器的情況下提高緩存效率。同樣要注意Nginx默認(rèn)不支持這種調(diào)度算法,要使用的話需要安裝Nginx的hash軟件包。
分享名稱(chēng):Nginx的作用詳解,為什么在Web服務(wù)器中Nginx的比例越來(lái)越高?
當(dāng)前地址:http://jinyejixie.com/news/98910.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、關(guān)鍵詞優(yōu)化、定制網(wǎng)站、App設(shè)計(jì)、網(wǎng)站改版、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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)
猜你還喜歡下面的內(nèi)容