Mac系統下Spring Boot + Nginx實現負載均衡

Nginx多強大,對性能提升多大,作用是什麼,這裏不做解釋了,百度上一大把。

安裝下載工具:ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

查看是否安裝好了brew: brew -v

在這裏插入圖片描述

下載Nginx:brew install nginx

在這裏插入圖片描述

檢查下是否安裝好了nginx: nginx -v

在這裏插入圖片描述

然後,找到它的安裝目錄,這裏注意,Mac中的安裝目錄一般是在etc下面,你如果使用where nginx 顯示的是在bin目錄下面,那個不是文件夾來的,打不開的,也沒辦法修改配置文件:cd /usr/local/etc/nginx

下一步,就是修改配置文件,使得它能負載均衡分發請求到你指定的IP地址和端口號:sudo vim ./nginx.conf

加入這麼兩段,注意端口不要再用8080了,因爲nginx默認啓動端口是8080,不要跟它搶位置,作爲它的馬仔的,還是避避老大的風頭選擇其他端口號吧:

在這裏插入圖片描述

每次修改完配置文件後都要重啓一下:nginx -s reload

如果說permission denied 就 sudo nginx -s reload.

最後看看是否啓動成功:瀏覽器隨便輸入:localhost:8080

在這裏插入圖片描述

看到這幅圖就是說Nginx大佬接管你的請求了,所有到8080端口的請求,Nginx都會幫你做一層轉發!

然後再到Spring Boot那邊:

我們先修改啓動端口,在application.properties文件那裏,加上一句:server.port = 9090

加一個方法,輸出當前的端口的:


    @Value("${server.port}")
    private String port;

	@RequestMapping("/testC")
    @ResponseBody
    public String testC() {
       return "當前端口號是:" + port;
    }
點擊啓動:

在這裏插入圖片描述

然後,點擊右上角的edit configuration . 允許 run parallel。

在這裏插入圖片描述
在這裏插入圖片描述

然後再啓動一個Application run !

在這裏插入圖片描述

這樣,我們9090,9999端口的服務都做好了,接下來就是請求一個controller,讓Nginx幫我們隨機分配,在上面我們做的權重都是10,所以請求到兩個端口的次數應該都是公平的。
測試:

第一次訪問:
在這裏插入圖片描述
刷新一下:
在這裏插入圖片描述
再刷新一下:
在這裏插入圖片描述

不同場景下的選用,設想一下:

場景一:假如有個用戶,登陸了之後,關於一些用戶偏好的設置數據和登陸狀態等等都存放在session中,第一次請求到9090端口沒問題,第二次請求又去到9999的另外一臺機器了,因爲nginx不知道啊,因爲另外一臺服務器沒有該用戶的登陸信息,又要求用戶登錄,這樣就非常不好。那我們就要想辦法讓該用戶的請求全部只會去到一臺機器,這個就是 分發策略中的: IP_Hash

在這裏插入圖片描述

加上一句話,Nginx就會默認把同一個IP地址發起的請求,都統一發送到一臺服務器上進行處理,怎麼驗證呢?我在剛纔的瀏覽器頁面中,不管再刷新多少,也還會是同一個端口號~

在這裏插入圖片描述

這樣證明了IP_HASH分發策略確實是可行。

場景二:現在有一組很大的數據,比如一大段視頻資源圖片資源或者信息,平時存放到Algolia之類的第三方數據庫上,當用戶請求的時候才下載下來。或者有一個接口是專門負責很複雜的很耗費資源一組邏輯計算的,同時會將計算結果保留在緩存中,例如實時遊戲數據這些。如果我們採用普通的IP Hash,其實是沒幫助的,因爲我們不需要區分不同IP發起的請求。同時如果採用默認的RR分發策略,那麼幾乎每臺服務器都會在緩存中放一組那麼大的數據,每臺都保存一份,這很明顯不太必要。這個時候我們可以採用url_hash,也就是根據請求路徑來進行分發,所有用戶共享一臺服務器緩存中的那堆數據。

當然也還有更多的例如動靜分離,反向代理正向代理等等~~~雖然說我們開發中實際場景可能沒有那麼多情況,但是我個人想法就是了解全面了,當個知識儲備,在有需要的時候,能夠快速設計出完美的解決方案去解決問題。

後期再用虛擬機做下實驗自己逐個去模擬不同生產環境下的特殊場景,配置文件nginx.conf那裏,直接寫不同虛擬機的IP和端口號。(個人推薦MacBook用這個)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章