什么是Nginx
Nginx(engine x)是一個高性能的HTTP和反向代理服務(wù)器,具有內(nèi)存少,高并發(fā)特點強。
1、處理靜態(tài)文件,索引文件以及自動檢索打開文件描述符緩沖
2、無緩沖的反向代理加速,簡單的負載均衡和容錯
為什么要做負載均衡?面臨什么問題需要做負載均衡?
帶著這個疑問,看下面的圖
一個項目,多個客戶端訪問,假設(shè)Tomcat可以接受50個請求,當客戶端同時發(fā)送請求達到80個,達到了tomcat的峰值,多余的請求怎么辦?
在前提條件下,tomcat等待隊列設(shè)置為0,設(shè)置tomcat的最大工作線程數(shù)為50,
當客戶端發(fā)送80個并發(fā)請求到tomcat,tomcat只處理前50個,剩下的30個請求會拒絕處理。
出現(xiàn)這個情況肯定不希望客戶訪問不了服務(wù)器,這個時候就需要用到負載均衡。
看這個時候服務(wù)器就不會崩潰啦
圖上說到會根據(jù)不同的算法進行分配請求,說幾個常見的算法。
輪詢:為第一個請求選擇健康池中的第一個后端服務(wù)器,然后按順序往后依次選擇,直到最后一個,然后循環(huán)。
最小連接:優(yōu)先選擇連接數(shù)最少,也就是壓力最小的后端服務(wù)器,在會話較長的情況下可以考慮采取這種方式。
散列:根據(jù)請求源的 IP 的散列(hash)來選擇要轉(zhuǎn)發(fā)的服務(wù)器。這種方式可以一定程度上保證特定用戶能連接到相同的服務(wù)器。如果你的應(yīng)用需要處理狀態(tài)而要求用戶能連接到和之前相同的服務(wù)器,可以考慮采取這種方式。
是不是對nginx又多了一些了解呢?