最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java面試題沖刺第二十二天-- Nginx

 更新時(shí)間:2021年08月09日 10:42:19   作者:_陳哈哈  
這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于Nginx的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下

面試題1:談一下你對(duì) Nginx 的理解

Nginx 是一款自由的、開源的、高性能的 HTTP 服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè) IMAP、POP3、SMTP 代理服務(wù)器。 Nginx 可以作為一個(gè) HTTP 服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外 Nginx 也可以作為反向代理進(jìn)行負(fù)載均衡的實(shí)現(xiàn),在分布式火熱的今天,Nginx是再好不過的選擇。

為啥我們總說Nginx好用?

  • Nginx使用基于事件驅(qū)動(dòng)架構(gòu),使得其可以支持?jǐn)?shù)以百萬級(jí)別的TCP連接;
  • 高度的模塊化和自由軟件許可證使得第三方模塊(插件)層出不窮(開源時(shí)代的產(chǎn)物);
  • Nginx是跨平臺(tái)服務(wù)器,可以運(yùn)行在Linux,Windows,F(xiàn)reeBSD,Solaris,AIX,Mac OS等操作系統(tǒng)上;

追問1:正向代理和反向代理區(qū)別在哪?

說到代理,我們要明確一個(gè)概念,所謂代理就是一個(gè)代表、一個(gè)渠道;

其實(shí),正向代理和反向代理的關(guān)鍵不同點(diǎn)在于是否處于同一個(gè)網(wǎng)絡(luò)環(huán)境下,我們往下看。

正向代理

如今的互聯(lián)網(wǎng)公司基本都在使用內(nèi)網(wǎng)開發(fā),如果晚上我在家打著王者農(nóng)藥排位,這邊領(lǐng)導(dǎo)打電話過來讓我處理bug,我該怎么辦?

不接,就當(dāng)沒聽見,打完排位再說;懇切告知隊(duì)友領(lǐng)導(dǎo)發(fā)病了,需要給她做人工呼吸,請(qǐng)勿舉報(bào)~

注:如果領(lǐng)導(dǎo)也玩兒王者,那這道題就變成了失業(yè)題,請(qǐng)果斷選二。

好了,有點(diǎn)跑偏了,這時(shí)我們打開電腦,肯定無法直接訪問內(nèi)網(wǎng),因?yàn)椴皇峭粋€(gè)網(wǎng)絡(luò),這時(shí)就需要一個(gè)能訪問內(nèi)網(wǎng)(策略放開)的代理服務(wù)器,我們將請(qǐng)求發(fā)送給代理服務(wù)器,然后再將訪問到的數(shù)據(jù)返回給我們;或直接通過代理服務(wù)器訪問公司內(nèi)網(wǎng),然后改bug。我們通過這樣的代理服務(wù)器訪問內(nèi)網(wǎng)的形式,就是主動(dòng)代理,代理客戶端去訪問其他網(wǎng)絡(luò)。如圖:

在這里插入圖片描述

這種代理模式稱為正向代理,正向代理最大的特點(diǎn)是客戶端明確要訪問的服務(wù)器地址(或網(wǎng)絡(luò)地址);而服務(wù)器只清楚請(qǐng)求來自哪個(gè)代理服務(wù)器,卻不清楚來自哪個(gè)具體的客戶端;正向代理模式屏蔽或者隱藏了真實(shí)客戶端信息。

正向代理,代理的是客戶端,代客戶端發(fā)出請(qǐng)求,是一個(gè)位于客戶端和目標(biāo)服務(wù)器間的服務(wù)器,為了從目標(biāo)服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(內(nèi)網(wǎng)服務(wù)器),然后代理向目標(biāo)服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端。

正向代理的用途:

  • 訪問原來無法訪問的資源,如外網(wǎng)、辦公內(nèi)網(wǎng)
  • 可以做緩存,加速訪問資源
  • 對(duì)客戶端訪問授權(quán),上網(wǎng)進(jìn)行認(rèn)證
  • 代理可以記錄用戶訪問記錄(上網(wǎng)行為管理),對(duì)外隱藏用戶信息 反向代理

一說起反向代理,大家會(huì)不約而同的想到分布式部署。是的,反向代理通常使用在分布式架構(gòu)中。在客戶端明確的前提下,大量訪問請(qǐng)求(QPS)涌入。我們后臺(tái)通過Nginx代理了20個(gè)服務(wù)器,高QPS打進(jìn)來后先打到Nginx中,通過Nginx的負(fù)載均衡來把請(qǐng)求分發(fā)給這20臺(tái)服務(wù)器,減輕了單臺(tái)服務(wù)器負(fù)擔(dān)。這種客戶端 → Nginx → 服務(wù)器 的模式稱為反向代理,如下圖:

在這里插入圖片描述

N個(gè)客戶端給服務(wù)器發(fā)送的請(qǐng)求,Nginx服務(wù)器接收到之后,按照一定的規(guī)則均衡分發(fā)給了后端的業(yè)務(wù)處理服務(wù)器進(jìn)行處理了。此時(shí),請(qǐng)求的客戶端是明確的,但是請(qǐng)求具體由哪臺(tái)服務(wù)器處理的并不明確了,Nginx扮演的就是一個(gè)反向代理角色。

客戶端是無感知代理的存在的,反向代理對(duì)外都是透明的,訪問者并不知道自己訪問的是一個(gè)代理。因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問。

反向代理,它代理的是服務(wù)端,代服務(wù)端接收請(qǐng)求,主要用于服務(wù)器集群分布式部署的情況下,反向代理隱藏了服務(wù)器的信息。

反向代理的作用:

(1)保證內(nèi)網(wǎng)的安全,通常將反向代理服務(wù)器配置為公網(wǎng)訪問地址,代理的Web服務(wù)器是內(nèi)網(wǎng)IP。

(2)負(fù)載均衡,通過反向代理服務(wù)器來優(yōu)化每個(gè)單機(jī)服務(wù)實(shí)例的負(fù)載。

正向代理中,Proxy和Client同屬于一個(gè)網(wǎng),隱藏了客戶端信息;反向代理中,Proxy和Server同屬于一個(gè)網(wǎng),隱藏了服務(wù)端信息;

面試題2:常用的 Nginx 做負(fù)載均衡的策略有哪些?

1.指定權(quán)重(weight)輪詢(默認(rèn),常用):

指定輪詢幾率,可以給不同的后端服務(wù)器設(shè)置一個(gè)權(quán)重值(weight),weight和訪問比率成正比,接收到的請(qǐng)求按照權(quán)重分配到不同的后端服務(wù)器,即使在使用過程中,某一臺(tái)后端服務(wù)器宕機(jī),Nginx會(huì)自動(dòng)將該服務(wù)器剔除出隊(duì)列,請(qǐng)求受理情況不會(huì)受到任何影響。

這種方式用于調(diào)整不同的服務(wù)器上請(qǐng)求的分配率;權(quán)重?cái)?shù)據(jù)越大,被分配到請(qǐng)求的幾率越大;該權(quán)重值,主要是針對(duì)實(shí)際工作環(huán)境中不同的后端服務(wù)器硬件配置進(jìn)行調(diào)整的,多用于后端服務(wù)器性能不均的情況。

upstream dynamic_tsingxin {
    #ip地址1服務(wù)器的訪問概率:30%
    server ip地址1 weight=3;
    #ip地址2服務(wù)器的訪問概率:70%
    server ip地址2 weight=7;
}

2、ip_hash(常用):

上述方式存在一個(gè)問題,在負(fù)載均衡系統(tǒng)中,假如用戶在某臺(tái)服務(wù)器上登錄了,那么該用戶第二次請(qǐng)求的時(shí)候,由于負(fù)載均衡,每次請(qǐng)求都會(huì)重新定位到服務(wù)器集群中的某一個(gè),那么已經(jīng)登錄某一個(gè)服務(wù)器的用戶再重新定位到另一個(gè)服務(wù)器,Session信息就丟失了!

這種情況可以采用ip_hash指令解決,如果客戶已經(jīng)訪問了某個(gè)服務(wù)器A,當(dāng)用戶再次訪問時(shí),會(huì)將請(qǐng)求按訪問IP的hash結(jié)果分配,自動(dòng)定位到該服務(wù)器A。這樣每個(gè)訪客IP會(huì)固定訪問一個(gè)后端服務(wù)器,可以解決session不能跨服務(wù)器的問題。

upstream dynamic_tsingxin {
    ip_hash;    #保證每個(gè)訪客固定訪問一個(gè)后端服務(wù)器
    server ip地址1;
    server ip地址2;
}

3、least_conn:

把請(qǐng)求轉(zhuǎn)發(fā)給連接數(shù)較少的后端服務(wù)器。輪詢算法是把請(qǐng)求平均的轉(zhuǎn)發(fā)給各個(gè)后端,使它們的負(fù)載大致相同;但是,有些請(qǐng)求占用的時(shí)間很長,會(huì)導(dǎo)致其所在的后端負(fù)載較高。這種情況下,least_conn就可以達(dá)到更好的負(fù)載均衡效果。

upstream dynamic_tsingxin {
    least_conn;    #把請(qǐng)求轉(zhuǎn)發(fā)給連接數(shù)較少的后端服務(wù)器
    server ip地址1; 
    server ip地址2; 
}

4、fair(第三方)

智能調(diào)整調(diào)度算法,動(dòng)態(tài)根據(jù)后端服務(wù)器的請(qǐng)求處理到響應(yīng)的時(shí)間進(jìn)行均衡分配,響應(yīng)時(shí)間短處理效率高的服務(wù)器分配到請(qǐng)求的概率高,響應(yīng)時(shí)間長處理效率低的服務(wù)器分配到的請(qǐng)求少;

需要注意的是Nginx默認(rèn)不支持fair算法,如果要使用這種調(diào)度算法,請(qǐng)安裝upstream_fair模塊。

upstream dynamic_tsingxin {
    server ip地址1;
    server ip地址2;
    fair;    #實(shí)現(xiàn)響應(yīng)時(shí)間短的優(yōu)先分配
}

面試題3:說幾個(gè)你常用的 nginx 命令吧

命令 作用
nginx -s reopen #重啟Nginx
nginx -s reload #重新加載Nginx配置文件,熱部署
nginx -s stop #強(qiáng)制停止Nginx服務(wù),類似kill -9 pid
nginx -s quit #優(yōu)雅地停止Nginx服務(wù)(即處理完所有請(qǐng)求后再停止服務(wù)),類似kill pid
nginx -V #顯示版本和配置選項(xiàng)信息,然后退出
nginx -t #檢測(cè)配置文件是否有語法錯(cuò)誤,然后退出

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java中Shiro安全框架的權(quán)限管理

    Java中Shiro安全框架的權(quán)限管理

    這篇文章主要介紹了Java中Shiro安全框架的權(quán)限管理,Apache?Shiro是Java的一個(gè)安全框架,Shiro可以非常容易的開發(fā)出足夠好的應(yīng)用,其不僅可以用在JavaSE環(huán)境,也可以用在JavaEE環(huán)境,需要的朋友可以參考下
    2023-08-08
  • Java之Mybatis多層嵌套查詢方式

    Java之Mybatis多層嵌套查詢方式

    這篇文章主要介紹了Java之Mybatis多層嵌套查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java List分頁功能實(shí)現(xiàn)代碼實(shí)例

    Java List分頁功能實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了Java List分頁功能實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java實(shí)現(xiàn)文件歸檔和還原

    java實(shí)現(xiàn)文件歸檔和還原

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件歸檔和還原,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java如何利用遞歸計(jì)算出階乘

    Java如何利用遞歸計(jì)算出階乘

    這篇文章主要介紹了Java如何通過遞歸計(jì)算出階乘,文中介紹了遞歸的使用方法和基本特點(diǎn),以及相關(guān)示例代碼,對(duì)大家的學(xué)習(xí)有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • Springboot實(shí)現(xiàn)自定義錯(cuò)誤頁面的方法(錯(cuò)誤處理機(jī)制)

    Springboot實(shí)現(xiàn)自定義錯(cuò)誤頁面的方法(錯(cuò)誤處理機(jī)制)

    這篇文章主要介紹了Springboot實(shí)現(xiàn)自定義錯(cuò)誤頁面的方法(錯(cuò)誤處理機(jī)制),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • IntelliJ IDEA使用git初始化倉庫的使用方法

    IntelliJ IDEA使用git初始化倉庫的使用方法

    這篇文章主要介紹了IntelliJ IDEA使用git初始化倉庫的使用方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法

    Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法

    在Java中我們經(jīng)常需要將數(shù)組從一種類型轉(zhuǎn)換為另一種類型,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法,文中通過圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • IDEA設(shè)置Maven自動(dòng)編譯model的實(shí)現(xiàn)方法

    IDEA設(shè)置Maven自動(dòng)編譯model的實(shí)現(xiàn)方法

    本文主要介紹了IDEA設(shè)置Maven自動(dòng)編譯model的實(shí)現(xiàn)方法, maven結(jié)構(gòu)的項(xiàng)目,我們?cè)诿看涡薷拇a后都會(huì)需要手動(dòng)編譯,本文就可以解決這個(gè)問題,感興趣的可以了解一下
    2023-08-08
  • 淺析Java中的Caffeine緩存源碼

    淺析Java中的Caffeine緩存源碼

    這篇文章主要介紹了淺析Java中的Caffeine緩存源碼,Caffeine是一個(gè)Java開發(fā)的高性能緩存庫,它提供了一種簡(jiǎn)單而強(qiáng)大的方式來管理內(nèi)存中的緩存數(shù)據(jù),Caffeine的設(shè)計(jì)目標(biāo)是提供快速、高效的緩存訪問,同時(shí)保持簡(jiǎn)單易用的API,本文針對(duì)其部分源碼做出解析,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

连山| 桂阳县| 临安市| 扶余县| 松潘县| 交城县| 广宁县| 和顺县| 福鼎市| 灵宝市| 临猗县| 航空| 九江市| 池州市| 政和县| 嘉善县| 绥滨县| 岢岚县| 聂荣县| 景东| 三明市| 渭源县| 衡东县| 汝阳县| 涿州市| 宣威市| 太仓市| 营口市| 东山县| 鲜城| 平利县| 宁都县| 奇台县| 江达县| 河曲县| 临沭县| 丰镇市| 文登市| 土默特左旗| 淮安市| 固始县|