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)