亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

面試題1:談一下你對 Nginx 的理解

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

為啥我們總說Nginx好用?

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

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

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

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

正向代理

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

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

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

好了,有點跑偏了,這時我們打開電腦,肯定無法直接訪問內網(wǎng),因為不是同一個網(wǎng)絡,這時就需要一個能訪問內網(wǎng)(策略放開)的代理服務器,我們將請求發(fā)送給代理服務器,然后再將訪問到的數(shù)據(jù)返回給我們;或直接通過代理服務器訪問公司內網(wǎng),然后改bug。我們通過這樣的代理服務器訪問內網(wǎng)的形式,就是主動代理,代理客戶端去訪問其他網(wǎng)絡。如圖:

在這里插入圖片描述

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

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

正向代理的用途:

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

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

在這里插入圖片描述

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

客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。因為客戶端不需要任何配置就可以訪問。

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

反向代理的作用:

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

(2)負載均衡,通過反向代理服務器來優(yōu)化每個單機服務實例的負載。

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

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

1.指定權重(weight)輪詢(默認,常用):

指定輪詢幾率,可以給不同的后端服務器設置一個權重值(weight),weight和訪問比率成正比,接收到的請求按照權重分配到不同的后端服務器,即使在使用過程中,某一臺后端服務器宕機,Nginx會自動將該服務器剔除出隊列,請求受理情況不會受到任何影響。

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

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

2、ip_hash(常用):

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

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

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

3、least_conn:

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

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

4、fair(第三方)

智能調整調度算法,動態(tài)根據(jù)后端服務器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的服務器分配到請求的概率高,響應時間長處理效率低的服務器分配到的請求少;

需要注意的是Nginx默認不支持fair算法,如果要使用這種調度算法,請安裝upstream_fair模塊。

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

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

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

總結

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

相關文章

  • 深入解析Java設計模式編程中觀察者模式的運用

    深入解析Java設計模式編程中觀察者模式的運用

    這篇文章主要介紹了Java設計模式編程中觀察者模式的運用,觀察者模式主要是為了將對象進行與被觀察者一樣的實現(xiàn),需要的朋友可以參考下
    2016-02-02
  • Java多線程中ThreadLocal解讀

    Java多線程中ThreadLocal解讀

    這篇文章主要介紹了Java多線程中ThreadLocal解讀,??多線程訪問同一個共享變量的時候容易出現(xiàn)并發(fā)問題,因此為了保證線程安全性,我們都會采用加鎖的方式,而ThreadLocal是除加鎖方式之外的另一種保證線程安全性的方法,需要的朋友可以參考下
    2023-09-09
  • Java默認傳入時間段時間的實例

    Java默認傳入時間段時間的實例

    下面小編就為大家?guī)硪黄狫ava默認傳入時間段時間的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • JPA merge聯(lián)合唯一索引無效問題解決方案

    JPA merge聯(lián)合唯一索引無效問題解決方案

    這篇文章主要介紹了JPA merge聯(lián)合唯一索引無效問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • IntelliJ Idea常用11款插件(提高開發(fā)效率)

    IntelliJ Idea常用11款插件(提高開發(fā)效率)

    這篇文章主要介紹了IntelliJ Idea常用11款插件(提高開發(fā)效率),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java用freemarker導出word實用示例

    Java用freemarker導出word實用示例

    本篇文章主要介紹了Java用freemarker導出word實用示例,使用freemarker的模板來實現(xiàn)功能,有需要的可以了解一下。
    2016-11-11
  • Springboot如何實現(xiàn)對配置文件中的明文密碼加密

    Springboot如何實現(xiàn)對配置文件中的明文密碼加密

    這篇文章主要介紹了Springboot如何實現(xiàn)對配置文件中的明文密碼加密問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring AOP失效的常見場景分析

    Spring AOP失效的常見場景分析

    Spring的AOP(面向切面編程)是一種強大的技術,用于在應用程序中實現(xiàn)橫切關注點的模塊化,雖然Spring的AOP在大多數(shù)情況下都是有效的,但在某些場景下可能會失效,下面來分析Spring AOP失效的常見場景,需要的朋友可以參考下
    2024-01-01
  • 基于雪花算法實現(xiàn)增強版ID生成器詳解

    基于雪花算法實現(xiàn)增強版ID生成器詳解

    這篇文章主要為大家詳細介紹了如何基于雪花算法實現(xiàn)增強版ID生成器,文中的示例代碼講解詳細,對我們學習具有一定的借鑒價值,需要的可以了解一下
    2022-10-10
  • SpringBoot2實現(xiàn)MessageQueue消息隊列

    SpringBoot2實現(xiàn)MessageQueue消息隊列

    本文主要介紹了 SpringBoot2實現(xiàn)MessageQueue消息隊列,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論