欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分布式架構(gòu)中關(guān)于正向代理反向代理面試提問

 更新時間:2022年03月10日 14:36:40   作者:Q.E.D  
這篇文章主要為大家介紹了分布式架構(gòu)中關(guān)于正向代理反向代理的面試提問,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

引言

面完了RPC相關(guān)的一系列問題,面試官確定我對分布式架構(gòu)的理論知識和服務(wù)間通訊框架(RPC) 確實了解了。

接下來又開始問我網(wǎng)絡(luò)相關(guān)的知識,但不是直接問HTTP三次握手,TCP,UPD這些,因為這些基礎(chǔ)已經(jīng)在一面問完了,這一面只圍繞分布式系統(tǒng)相關(guān)的網(wǎng)絡(luò)概念,從最基本的代理開始。

1、面試官:完看你簡歷提到使用過Nginx做代理,你是如何理解“正向代理”,“反向代理”的?

問題分析: 即使作為業(yè)務(wù)開發(fā)人員也會經(jīng)常遇到需要配置Nginx或其他負載均衡的問題,比如你做了一個文件上傳服務(wù),上線后發(fā)現(xiàn)文件被攔截了,看看報錯信息一看是被Nginx 代理攔截了,Nginx限制了文件大小,這個時候代理的概念是啥怎么看明白這個問題呢?

答:

正向代理: 代理用戶端請求服務(wù)端,相對于服務(wù)器用戶端是匿名的,比如單位內(nèi)網(wǎng)使用了正向代理軟件,所有員工都訪問百度,但是百度看到的只有一個IP地址,百度也不知道到底是哪個員工訪問的。

反向代理: 代理服務(wù)端提供服務(wù),相對于用戶服務(wù)端是匿名的,同樣是訪問www.baidu.com,所有用戶輸入的都是一個網(wǎng)站或者一個IP,但是百度背后有成千上萬的服務(wù)器,你也不知道你訪問的是哪一個。

2、面試官:那服務(wù)端為什么要使用代理?有啥好處?

問題分析: 面試官點點頭,對我理解的代理表示認可,隨后問我使用代理有什么用,考察代理技術(shù)的原理。

答:比如用 Nginx 做代理,這樣就可以開buffer,Nginx 可以把 Request 請求和 Response 在讀取完整之前 buffer 住,好比飯店服務(wù)員,所有顧客要什么菜和一個服務(wù)員說一下就行了,不會直接找廚師,一個服務(wù)員接待10個顧客,最后把點的20道菜分發(fā)給5個廚子做就行了,廚子好比服務(wù)器,這樣廚子就可以專心做菜了,接待這種事就有Nginx代理做,同時,還可以根據(jù)顧客數(shù)量多增加或者減少廚師數(shù)量,把任務(wù)均勻分給每個廚師,這就是負載均衡的作用,Nginx 就可以有效分發(fā)流量。

總的來說:

  • 讓IO和服務(wù)器分離,突破IO性能,提高服務(wù)器吞吐能力。
  • 控制流量分發(fā),管理服務(wù)集群,起到負載均衡作用。
  • 安全性和匿名性:通過攔截前端服務(wù)器的請求,反向代理服務(wù)器可以保護其身份,并可以抵御安全攻擊。它還確??梢詮膯蝹€記錄定位器或URL訪問多個服務(wù)器,而不管服務(wù)端網(wǎng)絡(luò)的結(jié)構(gòu)如何。

3、面試官:那你知道哪些負載均衡算法?

問題分析: 聊到了負載面試官要繼續(xù)深挖算法了。

答:

輪詢算法:簡單的理解就好比性感荷官在線發(fā)牌,從左到右依次發(fā)牌,最后每個人獲得的紙牌張數(shù)一樣,輪詢算法就是將多個用戶請求按順序依次分發(fā)到1-10號機器上,目的就是讓每臺機器承受相同的壓力,100W次查詢理論上每臺機器分攤了10W次查詢。

加權(quán)輪詢算法:輪詢算法和加權(quán)輪詢算法有什么區(qū)別?想象一下,如果10臺服務(wù)器的配置不相同,8臺機器是8核32G,剩下兩臺是4核16G,如果按照算法1輪詢,每臺機器分擔(dān)10W次請求,那兩臺低配的服務(wù)器說我扛不住呀,你們配置比我好,這不公平,我要宕機休息一下,加權(quán)輪詢算法就是為了應(yīng)對這種情況,設(shè)置不同機器的權(quán)重不同,10臺同配置機器分別均攤10%的流量,如果機器性能不同,那讓兩臺低配的權(quán)重降低,只承擔(dān)5%的流量,這樣就公平了,能者多勞。每臺機器都不閑著發(fā)揮自己最大的性能。

隨機算法:隨機算法和輪詢算法類似,讓所有請求隨機分配到不同的機器上,請求越多最后分散在每臺機器上的請求數(shù)約接近相等。

加權(quán)隨機算法:和加權(quán)輪詢算法道理相似,這里不多說了。

最小連接數(shù)算法:最小鏈接數(shù)就是請求分發(fā)以前,先看當(dāng)前10臺機器誰最清閑,誰當(dāng)前處理的鏈接數(shù)最少那就把活分給誰,最后的分工也相對公平。

Hash 算法:前5種算法有一個問題,就是同一個用戶的請求多次,可能每次都會被分配到不同機器上,這樣有什么不好?如果服務(wù)器緩存了用戶 Session,那每次請求不同服務(wù)器都需要保存用戶的 Session,最壞的結(jié)果就是用戶請求10次,10臺服務(wù)器都緩存了同一個用戶的 Session,這顯然是浪費服務(wù)器資源。這個時候 Hash 算法就出現(xiàn)了,如果讀者還不知道 Hash,建議先 Google 下 Hash,hash(client:ip) % N,N就是服務(wù)器的數(shù)量,只要用戶的 IP不變,最后 Hash 取余的結(jié)果就不會變,這樣就能保證同一個用戶每次請求都會在同一臺機器上,這里的IP還可以是用戶的其他唯一ID。

一致性Hash:hash(client:ip) % N 上面的公式中如果N變了怎么辦?比如一臺服務(wù)器斷電了,那最后 Hash 取余的結(jié)果就全變了,所有用戶會被分配到哪臺機器需要全部重新計算,這對有 Session 狀態(tài)的服務(wù)就是一場災(zāi)難,一致性Hash 就是為了解決這個問題。

深入分析

負載均衡幾乎是各大互聯(lián)網(wǎng)公司搭建系統(tǒng)必用的技術(shù)了,也會有初學(xué)者學(xué)習(xí)分布式系統(tǒng)時會問我,什么是負載均衡,為什么要使用負載均衡,多加一層負載均衡會讓服務(wù)調(diào)用變慢嗎?帶著這些問題學(xué)習(xí)一下這一章。

先看下沒有負載均衡的網(wǎng)站架構(gòu)

圖片描述

 不知道你有沒有發(fā)現(xiàn),如果服務(wù)端是單臺服務(wù)器,直接通過網(wǎng)絡(luò)就可以鏈接。為什么說負載均衡幾乎是各大互聯(lián)網(wǎng)公司搭建系統(tǒng)必用的技術(shù),除了個人網(wǎng)站,比如我的博客還是單體服務(wù)器以外,相信沒有哪家互聯(lián)網(wǎng)公司的服務(wù)敢這樣,一臺機器如果宕機怎么辦?讓用戶等一會兒嗎?那估計這家公司離倒閉就不遠了。

那怎么解決單機故障的問題,再看下面的圖。

圖片描述

 可以看出,多臺服務(wù)器的情況,增加了一層負載均衡。

什么是負載均衡

 負載平衡(Load balancing)是一種計算機技術(shù),用來在多個計算機(計算機集群、網(wǎng)絡(luò)連接、CPU、磁碟驅(qū)動器或其他資源中分配負載,以達到最佳化資源使用、最大化吞吐率、最小化響應(yīng)時間、同時避免過載的目的。 使用帶有負載平衡的多個伺服器組件,取代單一的組件,可以通過冗余提高可靠性。負載平衡服務(wù)通常是由專用軟件和硬件來完成。 主要作用是將大量作業(yè)合理地分攤到多個操作單元上進行執(zhí)行,用于解決互聯(lián)網(wǎng)架構(gòu)中的高并發(fā)和高可用的問題。

? ——— 維基百科

 簡單地理解負載均衡的作用就是流量分發(fā),將大量用戶請求分發(fā)到不同服務(wù)器上分擔(dān)壓力,如果有機器宕機,負載均衡服務(wù)器會負責(zé)把故障機器自動摘除。

常用的負載均衡框架

NginxNGINX | High Performance Load Balancer, Web Server, & Reverse Proxy ,來自俄羅斯的軟件,不光可以用作負載均衡,反向代理,還是出色的web服務(wù)器,使用廣泛,所以也是面試常問的知識點。如果英文不錯可以參考。

LVSThe Linux Virtual Server Project - Linux Server Cluster for Load Balancing ,Linux Virtual Server的縮寫,一個Linux下的開源服務(wù)器集群系統(tǒng),章?文嵩博?士于1998年5月創(chuàng)立。

HAProxy:http://www.haproxy.org/ ,一款高可用http/TCP負載均衡。

F5F5 | Multi-Cloud Security and Application Delivery 硬件負載均衡。

上述都是常見負載均衡,在企業(yè)里具體使用哪種框架并不是絕對的,主要取決于系統(tǒng)的需求和工程師對每個框架的了解程度。

一個框架能存活下來一定是具有自己的優(yōu)點,沒有最好,適合自己的就是最好的。

比如F5,性能出色價格昂貴而出名,從十幾萬到上百萬不等,有強大的售后和技術(shù)支持,我工作多年只有工作第一年參加國家電網(wǎng)項目上使用過F5,當(dāng)時還給了我們一臺測試用的機器,后來辭職后面試別的公司,面試官問我以前的項目組是使用的什么負載均衡,我說F5,面試官感嘆國家隊果然財大氣粗,我那個時候不了解還有什么其他解決方案,表示F5很奇怪嗎?面試完回家才慢慢了解,原來有很多解決方案,阿里使用LVS,也使用Nginx,美團最初使用Nginx + LVS,以及后來獨立研發(fā)的MGW。

有人會問,怎么一個負載均衡就這么多種算法,心好累,企業(yè)開發(fā)里能用這么多算法嗎?真正到企業(yè)開發(fā)中,一般都只用一種,如果負責(zé)的服務(wù)器沒有帶狀態(tài)的 Session,也不存在機器配置不相同的情況,那就可以用輪詢或隨機算法,工程師根據(jù)實際情況選擇最合適自己的算法。

正向代理&反向代理

正向代理

生活中的正向代理,打個比方,你想去俄羅斯旅行,需要去使館辦理簽證,手續(xù)麻煩,你完全不知道從何下手,這個時候你想到找旅行社,有專門的導(dǎo)游可你幫你代辦,你只需提供資料就在家等著拿簽證就可以了,你是客戶端,俄羅斯使館是服務(wù)端,導(dǎo)游就是代理端。

正向代理就是代理客戶端,服務(wù)端不知道客戶端是誰。

反向代理 

 互聯(lián)網(wǎng)不夠發(fā)達的時候,我們都打過10086,有事兒就找客服,全國31個省都有自己的客服中心,每個客服中心都有上百個客服小哥小姐姐,我們不關(guān)心給你分配的是誰,只需要接通10086后會自動給你分配客服給你,這就是反向代理。

反向代理就是代理服務(wù)端,客戶端不知道服務(wù)端是誰。

圖片描述

 反向代理服務(wù)器可以充當(dāng)“交通警察”,如上圖,位于后端服務(wù)器(baidu)前面,并以最大化速度和容量利用率的方式在一組服務(wù)器上分發(fā)客戶端請求,同時確保沒有一個服務(wù)器過載,可以降低性能。如果服務(wù)器出現(xiàn)故障,負載均衡器會將流量重定向到其它正常的服務(wù)器上。

總結(jié)

這一節(jié)主要講了負載均衡在網(wǎng)站后臺建設(shè)中的應(yīng)用和代理的概念,負載均衡算法和正/反向代理的概念也是面試中容易碰到的基礎(chǔ)問題,是初學(xué)者必須掌握的概念。

以上就是分布式架構(gòu)中關(guān)于正向代理反向代理面試提問的詳細內(nèi)容,更多關(guān)于分布式架構(gòu)正向代理反向代理面試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • windows下nginx如何操作命令

    windows下nginx如何操作命令

    這篇文章主要介紹了windows下nginx如何操作命令,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Nginx+Keepalived實現(xiàn)雙機熱備

    Nginx+Keepalived實現(xiàn)雙機熱備

    這篇文章主要介紹了Nginx+Keepalived實現(xiàn)雙機熱備,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 在Ubuntu20.04上安裝Kubernetes集群

    在Ubuntu20.04上安裝Kubernetes集群

    容器化為開發(fā)人員提供了很大的靈活性,最常用的容器化應(yīng)用程序之一是 Docker,在容器上部署服務(wù)的主要原因之一是它們靈活、輕量級并且在部署在數(shù)百臺機器上時易于擴展,但是,誰來管理所有這些容器?這就是 Kubernetes 發(fā)揮作用的地方
    2023-12-12
  • PHP的Symfony和CodeIgniter框架的Nginx重寫規(guī)則配置

    PHP的Symfony和CodeIgniter框架的Nginx重寫規(guī)則配置

    這篇文章主要介紹了PHP的Symfony和CodeIgniter框架的Nginx重寫規(guī)則配置,文中截取配置中關(guān)鍵的一些rewrite寫法進行講解,需要的朋友可以參考下
    2016-01-01
  • Nginx重新編譯添加模塊的方法

    Nginx重新編譯添加模塊的方法

    這篇文章主要介紹了Nginx重新編譯添加模塊的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • nginx中用JSON格式記錄日志的配置示例

    nginx中用JSON格式記錄日志的配置示例

    這篇文章主要介紹了nginx中用JSON格式記錄日志的配置示例,其實就是定義一個JSON的日志格式,然后在需要的地方調(diào)用即可,需要的朋友可以參考下
    2014-07-07
  • 使用Nginx搭建文件下載服務(wù)器的方法詳解

    使用Nginx搭建文件下載服務(wù)器的方法詳解

    本篇文章主要介紹了使用nginx搭建文件下載服務(wù)器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,文章通過代碼給大家介紹的非常詳細,有需要的一起跟隨小編過來看看吧
    2023-09-09
  • Nginx配置文件nginx.conf的基本配置實例詳解

    Nginx配置文件nginx.conf的基本配置實例詳解

    Nginx(engine x)是一個輕量級的高性能的HTTP和反向代理web服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Nginx配置文件nginx.conf基本配置的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • nginx配置多個虛擬主機vhost的方法示例

    nginx配置多個虛擬主機vhost的方法示例

    這篇文章主要介紹了nginx配置多個虛擬主機vhost的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Nginx服務(wù)器的SSL證書配置以及對SSL的反向代理配置

    Nginx服務(wù)器的SSL證書配置以及對SSL的反向代理配置

    這篇文章主要介紹了Nginx服務(wù)器的SSL證書配置以及對SSL的反向代理配置方法,通常在開啟全站HTTPS時會用到,需要的朋友可以參考下
    2016-01-01

最新評論