偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試官最愛問:Nginx 怎么實(shí)現(xiàn)負(fù)載均衡?哪幾種策略最常用?

運(yùn)維 服務(wù)器運(yùn)維 服務(wù)器
今天分享一個(gè)常見的面試題:“Nginx 是如何做負(fù)載均衡的?常見策略有哪些?有什么區(qū)別?”

今天分享一個(gè)常見的面試題:“Nginx 是如何做負(fù)載均衡的?常見策略有哪些?有什么區(qū)別?”

別小看這個(gè)問題,它幾乎是大廠面試 運(yùn)維 的必考題。下面就展開詳細(xì)講解一下。

1. 什么是負(fù)載均衡?

一句話概括:把用戶的請求分?jǐn)偟蕉嗯_服務(wù)器上,提高系統(tǒng)并發(fā)能力和穩(wěn)定性。

沒有負(fù)載均衡時(shí):

  • 全部流量打到一臺服務(wù)器,可能會“爆掉”;
  • 一臺掛了,整個(gè)服務(wù)就宕機(jī)。

有了負(fù)載均衡:

  • 請求被智能分配到多臺機(jī)器,性能提升;
  • 單機(jī)宕機(jī),其他機(jī)器繼續(xù)扛流量,系統(tǒng)更穩(wěn)。

而 Nginx 就是最常用的 七層(應(yīng)用層)負(fù)載均衡器。

2. Nginx 怎么實(shí)現(xiàn)負(fù)載均衡?

Nginx 的負(fù)載均衡主要通過 upstream 模塊 實(shí)現(xiàn),需要配合proxy_pass使用,。

核心配置長這樣:

http {
    upstream backend {
        server 10.0.0.101:8089;
        server 10.0.0.102:8089;
        server 10.0.0.103:8089;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

上面配置的意思是:

  • 定義了一個(gè) backend 集群,包含三臺服務(wù)器;
  • 用戶請求訪問 80 端口時(shí),Nginx 會按照一定策略分配到這幾臺機(jī)器上。

3. Nginx 常見負(fù)載均衡策略

Nginx 提供了多種 調(diào)度算法(分配策略),我這里講幾個(gè)常用并且比較重要的。

可以參考官網(wǎng)的:https://nginx.org/en/docs/http/load_balancing.html

(1) 輪詢(默認(rèn))

  • 配置:直接寫 server,不加任何參數(shù)。
  • 規(guī)則:按照順序一個(gè)一個(gè)分配,平均分流。
  • 特點(diǎn):簡單、常用,適合請求壓力差不多的場景。

(2) 加權(quán)輪詢(weight)

配置:

upstream backend {
      server 10.0.0.101:8089 weight=3;
      server 10.0.0.102:8089 weight=1;
  }
  • 規(guī)則:權(quán)重越高,分到的請求越多。
  • 應(yīng)用場景:某些機(jī)器性能更強(qiáng),就給它更高權(quán)重。

(3) IP 哈希(ip_hash)

配置:

upstream backend {
      ip_hash;
      server 10.0.0.101:8089;
      server 10.0.0.102:8089;
  }
  • 規(guī)則:根據(jù)客戶端 IP 計(jì)算 hash,固定分配到某一臺服務(wù)器。
  • 優(yōu)點(diǎn):能保持“會話粘性”(用戶 A 每次都打到同一臺機(jī)器)。
  • 缺點(diǎn):一臺機(jī)器宕機(jī)后,hash 可能失效,用戶會斷開,清除緩存后會重新分配可用節(jié)點(diǎn)。

(4) 最少連接(least_conn)

配置:

upstream backend {
      least_conn;
      server 10.0.0.101:8089;
      server 10.0.0.102:8089;
  }
  • 規(guī)則:優(yōu)先把請求分給當(dāng)前連接數(shù)最少的機(jī)器。
  • 應(yīng)用場景:請求處理耗時(shí)差別較大時(shí)更公平。

(5) 隨機(jī)(Random)

配置:

upstream backend {
    random;
    server 10.0.0.101:8089;
    server 10.0.0.102:8089;
}

規(guī)則:隨機(jī)分配。

增強(qiáng)版:

random two least_conn;

表示從兩臺隨機(jī)機(jī)器里選連接數(shù)少的。

應(yīng)用場景:避免熱點(diǎn)傾斜,簡單有效。

(6) 哈希(Hash)

配置:

upstream backend {
      hash $request_uri consistent;
      server 10.0.0.101:8089;
      server 10.0.0.102:8089;
  }
  • 規(guī)則:對任意 key(比如 URI、用戶 ID、cookie)做哈希。
  • 應(yīng)用場景:一致性 hash,適合分布式緩存。
  • 比 ip_hash 更靈活。

(7)  fair(第三方模塊)

規(guī)則:根據(jù)響應(yīng)時(shí)間分配,請求優(yōu)先落到響應(yīng)更快的機(jī)器。

說明:不是 Nginx 自帶,需要 upstream_fair 模塊。

(8) 最少時(shí)間(least_time)

  • 規(guī)則:選擇平均響應(yīng)時(shí)間最短的機(jī)器,而不僅僅看連接數(shù)。
  • 說明:開源版 Nginx 沒有,商業(yè)版 Nginx Plus 提供。

上面是Nginx的分流模式,Nginx還支持“健康檢測”,就是可以通過Keepalived實(shí)現(xiàn)高可用。

  • 如果某臺機(jī)器掛了,Nginx 會臨時(shí)摘除它,不再轉(zhuǎn)發(fā)請求;
  • 等它恢復(fù)正常,再自動(dòng)加入。

這樣就避免了用戶請求打到壞機(jī)器上。

4. 回答公式

如果面試官問你:“Nginx 怎么做負(fù)載均衡?有哪些策略?”

你可以這么答:

Nginx 通過 `upstream` 模塊實(shí)現(xiàn)負(fù)載均衡。常見策略有:
輪詢(默認(rèn),平均分配請求);
加權(quán)輪詢(根據(jù)服務(wù)器性能分配流量);
least_conn(優(yōu)先分配給連接數(shù)少的機(jī)器);
ip_hash(保證會話粘性);
另外還有 random、hash、fair、least_time 等進(jìn)階策略,能根據(jù)不同業(yè)務(wù)場景優(yōu)化分配效果。
 同時(shí) Nginx 還支持通過keepalived健康檢查,能保證高可用。

怎樣?面試官看你這樣答后心想:這小子有點(diǎn)東西,穩(wěn)值三千。

責(zé)任編輯:趙寧寧 來源: 運(yùn)維李哥不背鍋
相關(guān)推薦

2023-10-31 16:38:02

注冊中心負(fù)載均衡器

2025-03-31 07:53:10

單例模式設(shè)計(jì)模式C#

2020-09-07 06:28:37

Nginx靜態(tài)負(fù)載均衡動(dòng)態(tài)負(fù)載均衡

2025-06-03 07:05:00

Linux操作系統(tǒng)Windows

2021-07-14 08:00:13

reactCss模塊

2018-01-19 10:43:06

Java面試官volatile關(guān)鍵字

2021-03-12 08:02:34

Redis數(shù)據(jù)類型.

2024-08-19 09:13:02

2024-06-04 07:38:10

2021-03-17 08:39:24

作用域作用域鏈JavaScript

2025-03-18 12:00:00

閉包JavaScript前端

2020-04-27 10:00:53

負(fù)載均衡互聯(lián)網(wǎng)架構(gòu)

2019-12-25 11:22:19

負(fù)載均衡集群算法

2025-09-29 01:00:00

2025-02-10 00:00:25

內(nèi)存管理開發(fā)

2019-04-29 11:00:14

架構(gòu)負(fù)載均衡互聯(lián)網(wǎng)

2023-09-26 00:37:38

Spring微服務(wù)框架

2025-05-12 10:10:00

運(yùn)維Linux系統(tǒng)

2025-09-03 04:25:00

MySQLFLOATDOUBLE

2025-06-04 10:10:00

static編程C++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號