Nginx負載均衡中4層代理和7層代理對比


1.4層代理和7層代理什么意思?

這里的層是OSI 7層網絡模型,OSI 模型是從上往下的,越底層越接近硬件,越往上越接近軟件,這七層模型分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。

4層是指傳輸層的 tcp / udp 。

7層是指應用層,通常是http 。

 

2.代理原理:

4層用的是NAT技術。NAT英文全稱是“Network Address Translation”,中文意思是“網絡地址轉換”,請求進來的時候,nginx修改數據包里面的目標和源IP和端口,然后把數據包發向目標服務器,服務器處理完成后,nginx再做一次修改,返回給請求的客戶端。

7層代理:需要讀取並解析http請求內容,然后根據具體內容(url,參數,cookie,請求頭)然后轉發到相應的服務器,轉發的過程是:建立和目標機器的連接,然后轉發請求,收到響應數據在轉發給請求客戶端。

 

3.優缺點對比:

性能:

理論上4層要比7層快,因為7層代理需要解析數據包的具體內容,需要消耗額外的cpu。但nginx具體強大的網絡並發處理能力, 對於一些慢連接,nginx可以先將網絡請求數據緩沖完了一次性轉發給上游server,這樣對於上游網絡並發處理能力弱的服務器(比如tomcat),這樣對tomcat來說就是慢連接變成快連接(nginx到tomcat基本上都是可靠內網),從而節省網絡數據緩沖時間,提供並發性能。

靈活性:

由於4層代理用的是NAT,所以nginx不知道請求的具體內容,所以nginx啥也干不了。 用7層代理,可以根據請求內容(url,參數,cookie,請求頭)做很多事情,比如:

a:動態代理:不同的url轉發到不同服務器。

b.風控:屏蔽外網IP請求某些敏感url;根據參數屏蔽某些刷單用戶。

c.審計:在nginx層記錄請求日志。

....

 

4.結論:

由於現在機器cpu性能都很好,4層代理並沒有明顯的性能優勢,而7層代理在業務層面優勢明顯,所以一般直接選擇7層代理就OK了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM