1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 4463字,需瀏覽 9分鐘

         ·

        2021-05-17 18:44

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



        1.前言

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

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

        2.什么是負載均衡

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

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

        3.準(zhǔn)備工作

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

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

        本次用的是 homebrew 安裝的

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

        3.2 測試項目說明

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

        4.Nginx負載均衡的集中方式介紹

        4.1 輪詢

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

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

        4.2 權(quán)重

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

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

        4.3 iphash

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

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

        4.4 最少連接

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

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

        4.5 fair(第三方)

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

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

        4.6 url_hash(第三方)

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

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

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

        訪問http://localhost:10000

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

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

        此次nginx路徑展示

        主配置與自定義配置

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

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

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

        進入自定義配置文件夾配置自定義配置

        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;
            }

        }

        測試SpringBoot項目地址

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

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



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

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

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


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

        瀏覽 54
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            黄色无码高清 | 国产资源视频 | 波多野结衣视频网 | 在线人妻 | 91麻豆天美京东蜜桃传媒老牛 | 韩国一区二区三区在线观看 | 偷拍自拍p | 天天舔天天舔 | 少妇五月天激情 | 啊啊啊好爽在线观看 |