第3章 反向代理和負載均衡

3.1 反向代理

  • 負載均衡:按一定策略轉發web請求
  • 服務加速:緩存靜態內容、解壓縮請求信息
  • 請求鑑權:
3.1.1 Nginx
  • 作爲Apache Web服務器的反向代理使用。
  • Nginx是專爲高併發情況而設計的,其設計思路是採用Linux/UNIX提供的非阻塞的事件處理機制(epoll)來處理請求。這樣,有限的線程就可以處理數量巨大的請求。
  • Nginx的工作線程由多個請求共享,所以其每個請求的處理時間就不能太長,否則會造成請求阻塞。也正是因爲這個原因,Nginx的設計者選擇了不在其內部進行任何動態內容的處理,而是將其轉給外部的矗立着,例如,轉給配有PHP模塊的Apache
3.1.2 Tengine

Tengine()是基於Nginx1.8.1的,與其完全兼容。主要增強功能有:

  • 可以動態加載模塊,而無需重新編譯
  • 支持http2協議
  • 支持動態語言Lua寫的腳本,便於擴充系統功能
  • 更多的負載均衡選項,如一致性哈希
  • 更好的命令行支持
3.1.3 Varnish

專注於反向代理
原理:Varnish([ˈvɑːrnɪʃ])將緩存的內容存儲在64位操作系統的虛擬內存中,依賴於操作系統的動態頁面換入換出(page-in/page-out)來管理緩存內容。
缺點:和apache一樣,每個請求對應一個線程,難以如Nginx那樣很好地處理極爲大量的併發請求

3.2 負載均衡

  • DNS負載均衡
  • 硬件負載均衡
  • 軟件負載均衡
3.2.1 DNS負載均衡

依據一定的算法(如輪詢),當查詢DNS服務時對同一個域名從多個IP地址中返回其中之缺點:

  • DNS服務器在返回IP地址時並不驗證該IP地址是否可用
  • DNS查詢有一定的時間開銷,DNS客戶端都會緩存查詢的結果
  • 不能用於大型的分佈式系統
3.2.2 硬件負載均衡

F5很貴

3.2.3 軟件負載均衡
  • L4負載均衡(傳輸層:IP、TCP、UDP、ICMP)
  • L7負載均衡(應用層:HTTP、HTTPS)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章