1、高并發時代
單臺tomcat在理想情況下可支持的最大并發數量在200~500之間,如果大于這個數量可能會造成響應緩慢甚至宕機。
解決方案是通過多臺服務器分攤并發壓力,這不僅需要有多臺tomcat服務器,還需要一臺服務器專門用來分配請求。這既是反向代理服務器
2、Nginx概述
Nginx是一款優秀的反向代理服務器程序,能夠為若干臺服務器提供反向代理服務,一方面為客戶端提供一個統一訪問的地址,一方面為后臺多個服務器提供負載均衡 。
Nginx可以實現不僅可以實現反向代理,也可以實現正向代理,不過一般我們都是使用反向代理,即代理服務器集群,因為一般集群部署也是服務端
- 正向代理
nginx為客戶端代理稱為正向代理。客戶端集群部署,可以通過訪問同一個地址來訪問服務端。
- 反向代理
nginx為服務端代理稱之為反向代理。Nginx為訪問服務端提供一個統一的接口,客戶端只需要訪問這個統一接口就可以訪問到服務端。
3、Nginx使用
通過Nginx實現請求轉發
例:當客戶端訪問http://www.pq.com時,由nginx轉發給 http://127.0.0.1:8080端口進行處理
在nginx.conf中配置
http{
#為nginx配置一個虛擬服務器,server {
#監聽本機80端口listen 80;
#接收對www.pq.com主機名的訪問server_name www.pq.com;
#對/即任意路徑的訪問進行處理location / {
#轉發到指定地址proxy_pass http://127.0.0.1:8080;}
#可以配置多個location
...
}
#可以配置多個server
...
}
通過server和location配置轉發的地址。接下來用戶可以通過訪問 www.pq.com,實際請求是被轉發到 127.0.0.1:8080
實現負載均衡
對服務端集群部署,如現在對于客戶端的請求有三臺服務器可以處理,nginx可以對這三臺服務器進行負載均衡,并提供一個統一的接口給客戶端訪問
在nginx.conf中這樣配置:
#upstream是nginx配置文件中的關鍵字,用來配置一組服務器地址供后續使用
upstream big1907{server 127.0.0.1:8081;server 127.0.0.1:8082;server 127.0.0.1:8083;
}server {listen 80; #對80端口的訪問server_name www.pq.com; #對此主機名的訪問location / {
#轉發到上面配置的服務器組proxy_pass http://big1907;}}
對于三臺服務器的請求可以都通過代理接口www.pq.com進行訪問
- Nginx中的負載均衡策略
輪詢 :默認不配置就是輪詢。連接請求輪流分配給服務器。
IP哈希 :(客戶端ip.hash()%服務器數量),根據余數決定請求去往哪個服務器
最少連接 :將連接請求分配給目前連接數最少的服務器
基于權重 :根據權重進行分配(權重值可以自定義,在地址后配置weight=x),權重值越大,被分配的連接就越多;如果直接配置為down,則該服務器不再被分配連接