<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Nginx實(shí)現(xiàn)負(fù)載均衡(整合SpringBoot小demo)

          共 4463字,需瀏覽 9分鐘

           ·

          2021-05-17 18:44

          點(diǎn)擊關(guān)注,與你共同成長!



          1.前言

          要理解負(fù)載均衡,必須先搞清楚正向代理和反向代理。

          注:
          正向代理,代理的是用戶。
          反向代理,代理的是服務(wù)器。

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

          當(dāng)一臺(tái)服務(wù)器的單位時(shí)間內(nèi)的訪問量越大時(shí),服務(wù)器壓力就越大,大到超過自身承受能力時(shí),服務(wù)器就會(huì)崩潰。為了避免服務(wù)器崩潰,讓用戶有更好的體驗(yàn),我們通過負(fù)載均衡的方式來分擔(dān)服務(wù)器壓力。我們可以建立很多很多服務(wù)器,組成一個(gè)服務(wù)器集群,當(dāng)用戶訪問網(wǎng)站時(shí),先訪問一個(gè)中間服務(wù)器,在讓這個(gè)中間服務(wù)器在服務(wù)器集群中選擇一個(gè)壓力較小的服務(wù)器,然后將該訪問請(qǐng)求引入該服務(wù)器。如此以來,用戶的每次訪問,都會(huì)保證服務(wù)器集群中的每個(gè)服務(wù)器壓力趨于平衡,分擔(dān)了服務(wù)器壓力,避免了服務(wù)器崩潰的情況。

          負(fù)載均衡是用反向代理的原理實(shí)現(xiàn)的。

          3.準(zhǔn)備工作

          結(jié)合本文場(chǎng)景,需要安裝Nginx和Java環(huán)境(運(yùn)行SpringBoot項(xiàng)目)

          3.1 關(guān)于Mac系統(tǒng)安裝Nginx

          本次用的是 homebrew 安裝的

          大家也可前去官網(wǎng)下載

          3.2 測(cè)試項(xiàng)目說明

          由于只是測(cè)試, SpringBoot只是映射了根路徑,端口分別是 10001 和 10002 ,分別返回 demo1 和 demo2 字符串作為區(qū)分。

          4.Nginx負(fù)載均衡的集中方式介紹

          4.1 輪詢

          輪詢方式是Nginx負(fù)載默認(rèn)的方式,顧名思義,所有請(qǐng)求都按照時(shí)間順序分配到不同的服務(wù)上,如果服務(wù)Down掉,可以自動(dòng)剔除,如下配置后輪訓(xùn)10001服務(wù)和10002服務(wù)。

          upstream  codingce-nginx {
                 server    localhost:10001;
                 server    localhost:10002;
          }

          4.2 權(quán)重

          指定每個(gè)服務(wù)的權(quán)重比例,weight和訪問比率成正比,通常用于后端服務(wù)機(jī)器性能不統(tǒng)一,將性能好的分配權(quán)重高來發(fā)揮服務(wù)器最大性能,如下配置后10002服務(wù)的訪問比率會(huì)是10001服務(wù)的二倍。

          upstream  codingce-nginx {
                 server    localhost:10001 weight=1;
                 server    localhost:10002 weight=2;
          }

          4.3 iphash

          每個(gè)請(qǐng)求都根據(jù)訪問ip的hash結(jié)果分配,經(jīng)過這樣的處理,每個(gè)訪客固定訪問一個(gè)后端服務(wù),如下配置(ip_hash可以和weight配合使用)。

          upstream  codingce-nginx {
                 ip_hash; 
                 server    localhost:10001 weight=1;
                 server    localhost:10002 weight=2;
          }

          4.4 最少連接

          將請(qǐng)求分配到連接數(shù)最少的服務(wù)上。

          upstream  codingce-nginx {
                 least_conn;
                 server    localhost:10001 weight=1;
                 server    localhost:10002 weight=2;
          }

          4.5 fair(第三方)

          按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。

          upstream  codingce-nginx {
                 server    localhost:10001 weight=1;
                 server    localhost:10002 weight=2;
                 fair;  
          }

          4.6 url_hash(第三方)

          按訪問url的hash結(jié)果來分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。

          upstream  codingce-nginx {
                 server localhost:10001;
                 server localhost:10002;
                 hash $request_uri;
                 hash_method crc32;   
          }

          5.測(cè)試(以輪詢?yōu)槔?

          訪問http://localhost:10000

          輪詢方式,刷新后依次切換后端服務(wù)

          如果要修改負(fù)載均衡算法修改對(duì)應(yīng)upstream模塊即可。

          此次nginx路徑展示

          主配置與自定義配置

          注意:下方自定義配置文件是自定義配置文件目錄 vhost/

          輪詢配置 在nginx.conf文件中配置的

          upstream codingce-nginx {
                 server localhost:10001;
                 server localhost:10002;
          }

          進(jìn)入自定義配置文件夾配置自定義配置

          williamma@WilliamdeMacBook-Pro nginx % cd vhost 
          williamma@WilliamdeMacBook-Pro vhost % ll
          total 16
          drwxr-xr-x   4 williamma  admin  128  5 13 15:17 ./
          drwxr-xr-x  19 williamma  admin  608  5 13 15:28 ../
          -rw-r--r--   1 williamma  admin  549  4 16 16:17 gulimall.conf
          -rw-r--r--   1 williamma  admin  167  5 13 15:17 mytest.conf
          williamma@WilliamdeMacBook-Pro vhost % vim mytest.conf 

          配置文件展示

          server {

              listen       10000;
              server_name  localhost;


              location / {
                #用在此處
                  proxy_pass http://codingce-nginx;
                  proxy_redirect default;
              }

          }

          測(cè)試SpringBoot項(xiàng)目地址

          [Github]:https://github.com/xzMhehe/codingce-java

          [Gitee]”https://gitee.com/codingce/codingce-java



          漫話:如何給女朋友解釋為什么不能在MySQL中使用UTF-8編碼

          微服務(wù)究竟是“靈丹”還是“毒藥”?

          超經(jīng)典的 25 道 MyBatis 面試題!


          以上,便是今天的分享,希望大家喜歡,覺得內(nèi)容不錯(cuò)的,歡迎「分享」「」或者點(diǎn)擊「在看」支持,謝謝各位。

          瀏覽 54
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91干色| 成人做爱网站视频| 欧美一级黄片免费看 | 亚洲国产高清无码 | 豆花视频成人版www |