要理解正向和反向代理,
簡單說就是要整明白到底代理服務器代理了誰后者說代理服務器為誰服務?
別急,一點點往下看,
一、正向代理
1、啥是正向代理
就是一個在客戶端和目標服務器之間的服務器(稱為代理服務器),幫助客戶端從目標服務器獲取內容,此時目標服務器是不知道訪問自己的是真實的客戶端還是客戶端找的代理,
比如要訪問國外網站,直接訪問不通,那么就可以找一個代理服務器為我們服務,客戶端發請求到代理服務器,代理服務器把請求轉發到目標服務器讓后把結果拿回來回傳給客戶端,

我靠,原來正向代理說白了就是代理服務器為客戶端服務去訪問目標服務器啊,那這玩意有啥用呢?
2、正向代理有啥用
(1)提高訪問速度
代理服務器一般都會設定一個緩沖區,目的是將一些請求的回應保存起來,當有其他用戶訪問相同請求時,直接從緩沖區中拿出資訊就好了,提高訪問速度,
(2)突破訪問限制
通過代理服務器可以突破客戶端自身 IP 的訪問限制,比如去訪問國外網站等,
(3)隱藏真實IP
客戶端可以用代理服務器隱藏自己的IP,目標服務器不知道,只知道代理服務器的 IP,
二、反向代理
1、啥是反向代理
理解了正向代理,反向代理就簡單了,就反過來唄,代理服務器為目標服務器服務,代理服務器同樣接收來自客戶端的請求,然后把請求轉發目標服務器,取得結果回傳給客戶端,此時客戶端不知道自己訪問的是真實的目標服務器還是代理服務器,
比如我們要訪問百度網站,百度的代理服務器對外的域名為 https://www.baidu.com ,具體內部的服務器節點其實我們是不知道的,現實中其實我們是訪問了百度的代理服務器,然后代理服務器轉發請求到內部 N 多個的服務器節點中的一個,最后取得結果回傳,

所以,反向代理,就是 “代理服務器” 代理了 “目標服務器”,去跟"客戶端"互動,我靠,牛啊,那么問題來了,它有啥用?
2、反向代理有啥用
(1)提高訪問速度
反向代理服務器也可以提供快取服務以提高訪問速度,
(2)隱藏服務器IP
正向代理隱藏客戶端IP,反向代理可以對客戶端隱藏服務器的IP,
(3)提供安全保障
反向代理服務器可以作為應用層防火墻,為網站提供防護功能,還可以有一些特殊的處理,比如為后端服務器統一提供加密、HTTP訪問認證等,
(4)負載均衡
反向代理服務器能用于負載均衡,根據真實服務器的負載情況,將客戶端請求根據策略分發到不同的真實服務器去處理,
三、負載均衡
1、為啥需要負載均衡
舉個栗子,日常生活中火車站、電影院、銀行等比較擁擠的場所一般都會設定多個服務點或入口,但是如果沒有人引導,多數情況下,最近的入口就會擠滿人,而距離較遠的入口就寬松很多,這種情況下,就會大大浪費資源,因為如果把這些人合理的分散到各入口的話將大幅縮短排隊等待的時間,
因此,網站的建設 道理一樣,為了提升服務能力,大多網站采用集群部署,就好像火車站有多個入口一樣,當大批用戶集中訪問網站時,如果沒有任何機制來疏導限制,那么可能會導致某些服務器的流量很大,其他服務器流量很小,不僅浪費了資源,而且還會影響用戶體驗,更嚴重時可能直接拖垮流量大的服務器,
咋解決呢,此時就需要有一個協調者去均衡分配用戶請求,目的就是可以分散服務器壓力使得請求均勻被分配到不同的服務器上,
2、啥是負載均衡
上面已經說了,為提升網站服務能力,一般會把多臺機器組成一個集群對外提供服務,但是,網站對外提供的訪問入口都是同一個,比如 www.baidu.com,那么,當用戶在瀏覽器輸入www.baidu.com 時,如何將這些用戶請求分發到集群中不同的機器上?這就是負載均衡要做的事,

3、負載均衡的幾種實作方式
(1)HTTP 重定向
通過 HTTP 重定向服務器根據用戶的 http 請求計算出一個真實的 web 服務器地址,然后把該地址寫入http 重定向回應中回傳給客戶端瀏覽器,再由瀏覽器重新訪問,

這種方式比較簡單,但是瀏覽器要兩次請求服務器才能完成一次訪問取得結果,性能較差,
(2)DNS 域名決議
在 DNS 服務器上配置某個域名對應的多個 IP 的地址,每次域名決議請求時,會根據負載均衡演算法計算一個不同的 IP 地址回傳,這樣配置的多個服務器構成一個集群, 可以實作負載均衡,

這種方式將負載均衡作業轉交給 DNS,省去了網站管理負載均衡服務器的麻煩,但是網站無法對其做改善和管理,因為 DNS 負載均衡的控制權屬于域名服務商,
(3)反向代理
反向代理服務器將用戶請求根據負載均衡演算法轉發到不同的 Web 服務器上,Web 服務器將處理結果通過反向代理服務器回傳給用戶,由于反向代理服務器轉發請求是在 HTTP 協議層面,因此也稱為應用層負載均衡,

反向代理服務器部署簡單,但是其作為請求和回應的中轉站,性能可能會成為系統瓶頸,
(4)IP 負載均衡
在網路層通過修改請求目標的地址進行負載均衡,負載均衡服務器在作業系統內核行程獲取用戶請求的資料包,在根據負載均衡演算法得到一個真實 Web 服務器地址,然后將這個請求資料的目的 IP 修改為通過計算得到的真實 Web 服務器 IP,真實 Web 服務器處理后會將回應資料給到負載均衡服務器,此時負載均衡服務器再將回傳資料包的源地址修改為自身 IP 地址返給用戶瀏覽器,

反向代理負載均衡是在應用程式中分發資料,而 IP 負載均衡在內核行程分發資料,因此處理性能更好,但是負載均衡服務器作為中轉站,會成為集群的性能瓶頸(如吞吐量),難以滿足像提供下載服務或視頻服務的需求(因為傳輸的資料量很大),
那么能否讓負載均衡服務器只負責分發請求,而回應資料讓真實的服務器不通過負載均衡服務器而是直接回傳給用戶呢?這就要用到資料鏈路層負載均衡了
(5)資料鏈路層負載均衡
將真實的 web 服務器集群中所有機器的虛擬 IP 地址配置成和負載均衡服務器的 IP 相同,進而達到不修改資料包的源地址和目的地址就可以進行資料分發的目的,
也就是說,資料鏈路層負載均衡分發資料時只修改目的 MAC 地址,不修改目的 IP 地址,不需要通過負載均衡服務器進行地址交換,可直接將回應資料包回傳給用戶瀏覽器,避免了負載均衡服務器成為性能瓶頸,

一群白嫖怪,不點個贊在走嘛,哼!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307202.html
標籤:其他
