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