做者 : Stanley 羅昊html
講到併發數這個概念,想必各位應該都知道是什麼意思,就是同時訪問一個項目,就比咱們如今作的一些項目完工之後要放到公網環境下的時候,全部人都能用,好比,你上百度,同時別人也在上,因此有多少人同時在,又同時去處理,這就是所謂的併發數;java
tomcat的併發數大概在300左右,若是再多的話,它的訪問速度就會變的很慢,這裏值得提一下,雖然只有300,可是併發數仍是比較多的,什麼概念呢?就死在一秒以內,甚至不到一秒,同時訪問這個系統的併發量300左右,固然它也受限於網絡帶寬的問題;nginx
帶寬越大,我在你這個網頁上下載的速度也就越快,若是個人帶寬只有一兆的話,那麼個人下載速度也就幾十KB,因此這些併發數,還受限於這寫影響;spring
剛纔我也說了,Tomcat的併發量大概也就300,同時連進來的人數若要超過這300,那麼速度就會變得很是慢,會出現丟包的狀況,至於什麼是丟包我在這裏就不詳說了,各位能夠自行百度;windows
怎麼解決這個問題呢?瀏覽器
那麼就用Nginx(靜態資源服務武器)來解決這個問題;tomcat
nginx是一個很強大的高性能的wbe和反向代理服務器,它狙狗很是優越的特性:springboot
在鏈接高併發的狀況下,Nginx是Apache服務器不錯的替代品,而它的併發量在50000左右,簡直沒法跟tomcat相比,就不是一個數量級的;服務器
可是有一個疑問就是,那直接學或直接用Nginx不就完了嗎,幹嗎還要學Tomcat、JBOSS....網絡
Nginx是一個HTTP和反向代理服務器,Tomcat是應用服務器,可以運行java程序、執行jsp、serviet;
Nginx不行,它是來處理靜態資源的,你往上面放一個靜態的圖片、視頻、音頻以及一個HTML,它能幫你處理,你往上面放一個java源代碼,它就不能幫你處理了;
因此,Nginx跟Tomcat這些應用服務器沒有任何衝突,Nginx的應用面,跟Tomcat簡直就是兩個應用面,他們之間沒有任何衝突;
Ngxin下載網盤地址【windows】(騰訊微雲):
連接:https://share.weiyun.com/5VfMTOP 密碼:mf39a6
下載安裝好後打開,咱們須要配置一些屬性來作負載均衡👇
解壓到指定文件夾後,咱們雙擊Nginx:
進去以後雙擊nginx.exe,運行便可【能夠在系統資源管理器】中查看Nginx運行狀態;
在conf文件中,雙擊nginx.conf使用記事本或者其餘文本工具打開:
接下來咱們開始對它的配置文件進行一系列的解讀;
點進去後,首先我聲明一點,我不是作運維的,我是幹開發的,因此我只會說一些對於咱們開發而言比較重要的一些配置;
第一部分:👇
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8888; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; }
首先,http是處理http協議的,setver算是一個節點,這表明其中一個服務,服務監聽端口是8888端口,當你執行8888端口的時候,他就會自動幫你映射到你Nginx所在的根目錄;
這個根目錄是在我們的電腦上的Nginx安裝目錄:
在配置文件中能夠清晰的看到,它映射到這個nginx根目錄中的html文件夾:
而這裏面的資源,你均可以經過8888來訪問了;
好比我如今想訪問我這裏的一張圖片,很簡單,打開瀏覽器,直接輸入端口8888,加上你的文件地址全目錄便可【前提是你先啓動Nginx】👇
地址欄輸入👇:
這樣就完成了靜態資源的訪問;
反向代理(Reverse Proxy)實際運行方式是指以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。
通俗點理解就是,當你訪問一個頁面,那個頁面上確定有一些什麼圖片啊音頻視頻,當咱們訪問這個網頁的時候,至關於你發了兩次請求,好比百度,你訪問百度一次,又向它的內外服務器發了一次請求,而它的內網服務器就是nginx,它從內網服務器拿出你訪問的一些圖片,音頻,從而能夠看出,靜態資源與動態資源是放在一個不一樣的服務器上;
我訪問百度,百度一看我要訪問的是圖片就是一些靜態資源,那麼,它就是把你的此次請求轉發給靜態資源服務器,獲取圖片後,響應給你;
因此,做爲用戶,你不知道你到底訪問的是哪一臺服務器;
經過反向代理機制能夠作負載均衡;
先經過一張圖大概瞭解一下:
咱們須要在配置文件中配置一下,首先,仍是在剛剛我在上面寫的那個文件,用記事本打開,接下來,我將介紹第二個比較重要的配置👇:
#配置應用服務器的ip端口 http { upstream myproject { server 127.0.0.1:8081; server 127.0.0.1:8082; } server { listen 6565; server_name www.domain.com; location / { proxy_pass http://myproject; } } }
首先,這段代碼在配置文件中不內置,須要本身手動添加進去,我大概介紹一下;
upstream是關鍵字來標識本身是一個配置反向代理的字段,不能夠更改,後面的myspringboot能夠隨便更改;
後面的就是配置你的應用服務器集羣,用來幫你代理的;
配置完成後重啓才能生效;
直接在任務管理器結束Nginx進程,再開便可~
而下面的server就表明,經過6565來訪問以上兩個應用服務器季集羣,從而達到,負載均衡;
今日感悟:
人的一切痛苦,本質上都是對本身無能的憤怒;