大家好,我是小林
很多同學簡歷的項目都有用到 nginx,今天我們來聊聊 nginx 常見的兩個面試題:
反向代理是什么?
負載均衡有哪些算法?
正向代理和反向代理
圖片
01 正向代理(Forward Proxy)
正向代理是位于用戶設備和互聯網之間的服務器。它代理的是客戶端,是站在用戶一方的。其真實客戶端對于服務器不可見。
正向代理通常用于:
保護客戶端,隱藏客戶端真實 IP,免受攻擊。
避免網絡瀏覽限制(科學上網)。
阻止訪問某些內容。
提高訪問速度。通常代理服務器會有較大的硬盤緩沖區,將一些響應結果緩存在服務器端,以便后續用戶取用。
02 反向代理(Reverse Proxy)
反向代理是一種服務器,它接受客戶端的請求,將請求轉發給網絡服務器,然后將結果返回給客戶端,就像代理服務器處理了請求一樣。
反向代理代理的是服務器,是和網絡服務器站在一方的。其真實服務器對于客戶端不可見。這就是它叫“反向”的原因。
反向代理可用于:
保護服務器,隱藏服務器真實 IP。
負載均衡,根據訪問流量和服務器負載情況,將請求分發到不同服務器上。
緩存靜態內容以及部分短時間的大量動態請求。
作為應用層防火墻提供防護。
加密/解密 SSL 通信。
負載均衡算法
負載均衡將網絡流量或一組任務以某種算法合理分配給各個處理節點,使得節點得到平等的使用,并及時可靠地返回結果給用戶。
負載均衡廣泛應用于各種硬件軟件系統中,比如:
根據 IP 地址進行網絡流量負載均衡。在服務進行維護時,可以方便將網絡流量切換到臨時節點或降級的服務上。
根據 HTTP 頭信息或請求字段進行應用程序負載均衡,用戶得到響應的時間更短,并且可以提供分層服務,也方便服務擴容時加入新的節點。
CDN 根據流量的來源,將流量導入相鄰地區的服務器,以獲得更短的響應時間和更高的可用性。
下圖顯示了 6 種常見算法。
圖片
01 靜態算法
循環(Round Robin)
客戶端請求按順序發送到不同的服務實例。通常要求服務是無狀態的。這種算法最簡單,但是也無法處理某個節點變慢或者客戶端操作有連續性的情況。
粘性循環(Sticky Round Robin)
這是對循環算法的一種改進。如果 Alice 的第一個請求發送到服務 A,那么接下來的請求也會發送到服務 A。這種負載均衡可以確保一個用戶的請求都發往同一個服務節點,適合客戶端操作有連續性的情況。有時候該服務節點上會保存該用戶的一些狀態,避免去后端數據庫查詢。
加權循環(Weighted Round Robin)
管理員可以指定每個服務的權重。權重高的服務會比其他服務處理更多請求。
散列(IP/URL Hash)
該算法對傳入請求的 IP 或 URL 應用哈希函數。根據哈希函數的結果將請求路由到相關服務。
02 動態算法
最少連接(Least Connections)
新請求會發送到并發連接最少的服務節點。
響應時間最少(Least Time)
新請求會發送到響應時間最快的服務節點。這樣,某個服務節點變慢就不會阻塞后續請求處理了。
審核編輯:黃飛
-
服務器
+關注
關注
12文章
9255瀏覽量
85752 -
防火墻
+關注
關注
0文章
419瀏覽量
35646 -
SSL
+關注
關注
0文章
126瀏覽量
25755 -
負載均衡
+關注
關注
0文章
113瀏覽量
12373 -
nginx
+關注
關注
0文章
151瀏覽量
12195
原文標題:面試官:你背一下負載均衡算法?
文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論