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