服務器集羣自動化部署工具,自動生成 Redis+Tomcat+Nginx相關需要文件,自動配置好依賴jar包和配置文件,簡單快速搭建集羣環境

服務器集羣是所有企業都採用的方式,簡單的說,採用單一的Tomcat服務器部署應用,一是存在單點故障導致整個系統停止運行,而是併發量遠不能滿足現實需要,三是無法進行應用熱更新等一系列問題。目前,採用簡單一點服務器集羣,可以使用 Redis+Tomcat+Nginx 達到目的,使得應用服務更有健壯性和可維護性。

爲了解決頻繁的服務器軟件的配置問題,jar依賴問題,配置文件修改等,這兒有一款自動化生成軟件,只需要簡單的點擊和輸入參數,就可以生成相關的文件,之後把所有的文件放到服務器上啓動即可。

軟件下載地址:文章結尾處。


1、軟件下載完成後,啓動界面。
在這裏插入圖片描述

2、設置文件的保存路徑,其它可默認,最下面添加不同的 Tomcat服務器地址,這裏添加 3 個舉例,8080、8070、8060。
在這裏插入圖片描述

3、點擊生成配置,最後在選擇的路徑文件夾中得到下面的相關文件,相關配置文件的端口、IP、密碼等等都配置好了,感覺蠻智能的。
複製所有的文件夾到服務器上的某個目錄,或者壓縮之後上傳到服務器進行解壓。
在這裏插入圖片描述
4、依次啓動 Redis——》Tomcat——》Nginx;
開始之前,務必確保 JDK1.8及以上版本,安裝無誤,java環境配置正常;
在Redis文件夾中,找到 redis-server.exe ,雙擊啓動;
在每個Tomcat文件夾中的 bin 目錄,找到 startup.bat ,雙擊啓動;
在Nginx文件夾中,找到 nginx.exe ,雙擊啓動,這個地方窗口是一閃而過,沒錯,就是這個效果。

5、在瀏覽器輸入Nginx 的監聽端口,默認 80 ,可以不用輸入,直接 輸入 localhost 就行。
在這裏插入圖片描述

6、點擊瀏覽器上面的刷新。
在這裏插入圖片描述
7、點擊瀏覽器上面的刷新。
在這裏插入圖片描述

8、可以看到 Nginx 根據負載均衡策略,會把每個請求轉發到不同的服務器上面。

9、再看 session ID 一直沒變過,保證用戶登錄之後,進行一次會話請求之後,後面的每次會話請求都是相同的 session。

10、簡單應用舉例,停掉其中一個Tomcat,發現還是可以刷新訪問,只是會在正常的服務器之間進行負載均衡。此時,對停掉的服務器進行應用重新部署,然後啓動,再次刷新訪問,會是什麼效果呢?留給那些有興趣的人給答案。


軟件下載地址:

https://download.csdn.net/download/u014374009/11611177

點擊下載


相關概念:

Tomcat的性能與最大併發數:當一個進程有500個線程在跑的話,那性能已經是很低很低了。Tomcat默認配置的最大請求數是150,也就是說同時支持150個併發,當然了,也可以將其改大。
當某個應用擁有250個以上併發的時候,應考慮應用服務器的集羣。

具體能承載多少併發,需要看硬件的配置,CPU越多性能越高,分配給JVM的內存越多性能也就越高,但也會加重GC的負擔。

操作系統對於進程中的線程數有一定的限制:

Windows每個進程中的線程數不允許超過2000

Linux每個進程中的線程數不允許超過1000

另外,在Java中每開啓一個線程需要耗用1MB的JVM內存空間用於作爲線程棧之用。

Tomcat的最大併發數是可以配置的,實際運用中,最大併發數與硬件性能和CPU數量都有很大關係的。更好的硬件,更多的處理器都會使Tomcat支持更多的併發。

Tomcat默認的HTTP實現是採用阻塞式的Socket通信,每個請求都需要創建一個線程處理。這種模式下的併發量受到線程數的限制,但對於Tomcat來說幾乎沒有BUG存在了。

Tomcat還可以配置NIO方式的Socket通信,在性能上高於阻塞式的,每個請求也不需要創建一個線程進行處理,併發能力比前者高。但沒有阻塞式的成熟。

這個併發能力還與應用的邏輯密切相關,如果邏輯很複雜需要大量的計算,那併發能力勢必會下降。如果每個請求都含有很多的數據庫操作,那麼對於數據庫的性能也是非常高的。

對於單臺數據庫服務器來說,允許客戶端的連接數量是有限制的。

併發能力問題涉及整個系統架構和業務邏輯。

系統環境不同,Tomcat版本不同、JDK版本不同、以及修改的設定參數不同。併發量的差異還是滿大的。本軟件屬於免費試用版,針對Windows服務器環境免費,針對Linux服務器環境不開放。

maxThreads=“1000” 最大併發數

minSpareThreads=“100”///初始化時創建的線程數

maxSpareThreads=“500”///一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。

acceptCount=“700”// 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。

如何提高Web服務器的併發連接處理能力?

大概有幾個基本條件:
基於線程,即一個進程生成多個線程,每個線程響應用戶的每個請求。
基於事件的模型,一個進程處理多個請求,並且通過epoll機制來通知用戶請求完成。
基於磁盤的AIO(異步I/O)
支持mmap內存映射,mmap傳統的web服務器,進行頁面輸入時,都是將磁盤的頁面先輸入到內核緩存中,再由內核緩存中複製一份到web服務 器上,mmap機制就是讓內核緩存與磁盤進行映射,web服務器,直接複製頁面內容即可。不需要先把磁盤的上的頁面先輸入到內核緩存去。
Nginx 採用的是多進程(單線程) + 多路IO複用模型,就成了”併發事件驅動“的服務器。

Nginx 在啓動後,會有一個 master 進程和多個相互獨立的 worker 進程。
接收來自外界的信號,向各worker進程發送信號,每個進程都有可能來處理這個連接。
master 進程能監控 worker 進程的運行狀態,當 worker 進程退出後(異常情況下),會自動啓動新的 worker 進程
worker 進程數,一般會設置成機器 cpu 核數。因爲更多的worker 數,只會導致進程相互競爭 cpu,從而帶來不必要的上下文切換。

【總結】: 使用多進程模式,不僅能提高併發率,而且進程之間相互獨立,一個 worker 進程掛了不會影響到其他 worker 進程。

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