91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx+SpringBoot怎么實現負載均衡

發布時間:2022-04-07 10:20:51 來源:億速云 閱讀:139 作者:iii 欄目:編程語言

這篇“Nginx+SpringBoot怎么實現負載均衡”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx+SpringBoot怎么實現負載均衡”文章吧。

負載均衡介紹

在介紹nginx的負載均衡實現之前,先簡單的說下負載均衡的分類,主要分為硬件負載均衡和軟件負載均衡,硬件負載均衡是使用專門的軟件和硬件相結合的設備,設備商會提供完整成熟的解決方案,比如f5,在數據的穩定性以及安全性來說非常可靠,但是相比軟件而言造價會更加昂貴;軟件的負載均衡以nginx這類軟件為主,實現的一種消息隊列分發機制。

簡單來說所謂的負載均衡就是把很多請求進行分流,將他們分配到不同的服務器去處理。比如我有3個服務器,分別為a、b、c,然后使用nginx進行負載均衡,使用輪詢策略,此時如果收到了9個請求,那么會均勻的將這9個請求分發給a、b、cf服務器,每一個服務器處理3個請求,這樣的話我們可以利用多臺機器集群的特性減少單個服務器的壓力。

nginx實現負載均衡的示例圖:

Nginx+SpringBoot怎么實現負載均衡

負載均衡策略

nginx開源支持四種負載平衡方法,而nginx plus又增加了兩種方法。

1.round robin:

對所有的請求進行輪詢發送請求,默認的分配方式。

nginx.conf 配置示例:

注:上面的域名也可以用ip替代。

2.least connections:

以最少的活動連接數將請求發送到服務器,同樣要考慮服務器權重。

nginx.conf 配置示例:

3.ip hash :

發送請求的服務器由客戶機ip地址決定。在這種情況下,使用ipv4地址的前三個字節或整個ipv6地址來計算散列值。該方法保證來自相同地址的請求到達相同的服務器,除非該服務器不可用。

4.generic hash:

請求發送到的服務器由用戶定義的鍵決定,該鍵可以是文本字符串、變量或組合。

5.least time (nginx plus only)

對于每個請求,nginx plus選擇具有最低平均延遲和最低活動連接數的服務器,其中最低平均延遲是根據包含least_time指令的下列參數計算的:

  • header : 從服務器接收第一個字節的時間。

  • last_byte: 從服務器接收完整響應的時間。

  • last_byte inflight:從服務器接收完整響應的時間。

6.random:

每個請求將被傳遞到隨機選擇的服務器。如果指定了兩個參數,首先,nginx根據服務器權重隨機選擇兩個服務器,然后使用指定的方法選擇其中一個。

  • least_conn :活動連接的最少數量

  • least_time=header (nginx plus):從服務器接收響應標頭的最短平均時間 ($upstream_header_time)。

  • least_time=last_byte (nginx plus) :從服務器接收完整響應的最短平均時間($upstream_response_time)。

nginx+springboot實現負載均衡

環境準備

  • 依賴jdk1.8以上的版本;

  • 依賴nginx環境;

這里的項目就用本人之前的一個springboot項目,springboot的項目地址: https://github.com/xuwujing/springboot-study/tree/master/springboot-thymeleaf

首先我們下載這個項目,輸入:mvn clean package 將項目進行打包為jar文件,然后將application.properties和此jar項目放在一個文件夾中,然后復制該文件夾(這里為了清晰所以進行復制,實際不復制更改端口重啟也行),修改復制文件夾application.properties的端口,比如改為8086。

nginx 配置

我們找到nginx的配置文件nginx.conf,該配置在nginx/conf/nginx.conf目錄下,然后我們來修改該配置,新增如下配置:

  • upstream pancm:定義一個名稱,隨意就行;

  • server + ip:端口 or 域名;

如果不想使用round robin策略,也可以換成其他的。

然后在server添加/修改如下配置:

配置說明:

  • server: 虛擬主機的名稱,一個http中可以配置多個server;

  • listen:nginx默認的端口;

  • server_name:nginx服務的地址,可以使用域名,多個用空格分隔。

  • proxy_pass:代理路徑,一般配置upstream后面的名稱用于實現負載均衡,可以直接配置ip進行跳轉;

nginx.conf 完整的配置:

負載均衡測試

在完成nginx配置之后,我們啟動nginx。
linux輸入/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf,如果已經啟動可以使用/usr/local/nginx/sbin/nginx -s reload命令進行熱加載配置文件,windows直接點擊nginx目錄下的nginx.exe或者 cmd運行start nginx進行啟動,如果啟動了依舊可以使用nginx -s reload進行熱加載。

nginx啟動完成之后,我們依次啟動剛剛下載的springboot和復制更改端口的項目,輸入:java -jar springboot-jsp-thymeleaf.jar啟動。

都啟動成功之后,我們在瀏覽器輸入服務的ip即可進行訪問。

示例圖:

Nginx+SpringBoot怎么實現負載均衡

注:這里我使用的是windows系統做測試,實際linux也是一樣的。

然后我們進行操作,并查看控制臺日志!

Nginx+SpringBoot怎么實現負載均衡

從上述示例圖中我們進行4次界面刷新請求,最終平均分配到兩個服務中去了,從上述的測試結果中我們實現了負載均衡。

這里我在說一下使用nginx的注意事項,在進行學習和測試的時候,使用nginx默認的端口實現負載均衡一般沒有什么問題,但是當我們在項目中使用的時候,特別有登錄界面的并且端口不是80的時候,會出現登錄的界面無法跳轉,進行調試的話會出現 net::err_name_not_resolved這樣的錯誤,出現這個原因的是因為nginx默認的端口是80,那么默認跳轉的也是這個,所以出現這種情況的時候,需要在location 下添加proxy_set_header host $host:port 這個配置,port 和listen 的端口保持一致就可以了。

以上就是關于“Nginx+SpringBoot怎么實現負載均衡”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

逊克县| 资兴市| 嘉峪关市| 颍上县| 扬州市| 汽车| 河间市| 二连浩特市| 镇康县| 衢州市| 乃东县| 武强县| 惠水县| 玉屏| 凌海市| 资溪县| 阳春市| 清水河县| 上蔡县| 南部县| 永吉县| 蕉岭县| 三原县| 内江市| 武强县| 彰武县| 岚皋县| 宜川县| 宝兴县| 张家口市| 得荣县| 定结县| 马山县| 吉木萨尔县| 台中县| 会昌县| 通榆县| 汕头市| 鹤壁市| 雷波县| 伊宁市|