企業常常有代理人機制, 當我們有重要的事情需要請假時, 就會有代理人幫我們處理公司事務, 相當於「我們授權代理人處理什麼事情」,而這樣的代理機制在軟體世界也是常見的一種機制, 尤其是在分散式運算的架構下。
那代理能為我們帶來什麼好處呢? 又為什麼非用不可? 這也是我們今天著重探討的主題。
其實代理就是你跟我之間隔著一層, 彼此不知道對方, 只知道往哪邊遞送資料, 從而解決雙方的依賴, 尤其伺服器端如果是一群機器在服務, 撇開代理, 用戶端勢必得自己管控要送到哪一台機器去處理, 那刪減及增加機器時怎麼辦? 對於用戶端不就得常常停機,更新這些機器的位置, 這對於應用上來講就大打折扣了,因此有了代理之後,這樣的問題就迎刃而解了。
另外我們可能也聽過反向代理這個詞, 後面也會進行介紹,說明一下什麼是正向代理,什麼又是反向代理。
使用代理帶來哪些好處?
快取
由於Server與Client之間隔著一層Proxy Server,因此該台機器就可以加入緩存機制,當資料未發生變化時,每次Client的存取所看到的結果都會是一樣的,因此我們就可以將緩存的資料直接送往Client端,而不用往伺服器發送,減緩伺服器的壓力。
匿名性
透過Proxy的轉發,Client端並不知道真正處理請求的機器到底是哪一台,只知道要把這個請求送給Proxy請它代理處理。
流量控制
有了Proxy做為中間人,在這裡就能夠掌握流量,並且依序負荷程度進行適當的調配,避免阻塞。
稽核日誌
由於所有請求都會經過Proxy,因此在這裡非常容易掌控來源與目的,想當然也就更容易達到稽核的目的了。
先來搞懂正向代理與反向代理吧!
正向代理
其實正向代理就是以Client端為出發點,Proxy的角色就是中間人,中間人可以為Client進行服務,代為向伺服端發送對應的請求,那麼相對的以這個角度來說,應該站在Client的立場進行服務,包括匿名、翻牆…都是正向代理的服務範疇。
反向代理
而反向代理就不一樣囉,以服務端為出發點,替他們站在最前線,阻擋非必要的需求,就很像PM跟PG的角色,PM站在最前線釐清需求後,再往後派工。
反向代理能夠帶來什麼好處?
● 負載平衡: 由於運算量比較大的負擔會在伺服器端,因此在最前線的Proxy自然可以做到分散負擔的任務,才不至於太多的請求導致背後的伺服器掛掉,並且進階一點還可以在Proxy到Server之間架設一層防火牆,防火牆只讓Proxy過來的連線通過。
● 隱藏伺服器的身份,避免被直接攻擊。
● 快取請求,假設沒有變化的狀況下,可以從快取拿資料進行回應,減少伺服器的負荷。
● 稽核: 可以記錄所有連線,留下證據,當發生損害時可以追朔。
● 實驗性功能: 假設我們產品新功能要推出時,通常不會將所有新功能一次推出給所有客戶,並根據需求決定哪些人可以使用新功能,哪些人維持舊功能。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識,累積財富!