掌握之分佈式-5.Nginx

掌握高併發、高可用架構

第三章 分佈式

本章介紹分佈式架構的底層技術。主要說明面試過程中可能被問到的技術點。

第五節 NGINX

nginx 反向代理

1. 正向代理和反向代理的區別

正向代理,指在客戶端,代替客戶端收發請求,使得真實客戶端對服務器不可見。

反向代理,指在服務器端,代替服務器收發請求,使得真實服務器對客戶端不可見

2. nginx是什麼

nginx是一個高性能的HTT服務器、電子郵件(IMAP/POP3)代理服務器、非常高效的反向代理服務器

3. nginx的特性

  • 異步、事件驅動、非阻塞
  • 併發請求處理,通過epoll/select
  • 文件IO
  • 高度模塊化
4. 支持的併發數

每秒十萬級別

5. nginx的使用場景
  • 靜態資源服務器,例如圖片、網站靜態資源(css、js等)
  • 反向代理服務器,實現負載均衡
6. 支持的負載均衡策略(upstream)
  • 輪詢(默認),每個請求按時間順序逐一分配到不同的後端服務器

  • 權重(weight),指定服務器的權重,數值越大的訪問機率越多,用於服務器性能不均衡的情況

    upstream domain {
      server 127.0.0.1:8080 weight=5;
      server 127.0.0.1:8040 weight=1;
    }
  • ip_hash,每個請求按照訪問IP的hash值進行分配,這樣每個客戶端IP就會固定訪問一臺服務器

    upstream domain {
      ip_hash;
      server 127.0.0.1:8080;
      server 127.0.0.1:8040;
    }
  • fair(第三方提供),按照服務器的響應時間來分配請求,響應時間短的優先分配

  • url_hash(第三方提供),按照每個請求的URL的hash值進行分配,每個URL固定訪問一臺服務器

upstream還支持以下的狀態值:

  • down,表示當前的server不參與負載

  • max_fails,允許請求失敗的次數

  • fail_timeout,max_fails後,暫停負載的時間

  • backup,備用,當其他非backup的server處於down或忙的時候,啓用該server

    upstream domain {
      server 127.0.0.1:8080 down;
      server 127.0.0.1:8080 max_fails=3;
      server 127.0.0.1:8080 fail_timeout=10;
      server 127.0.0.1:8080 backup;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章