01【熟悉】實際開發中的問題?
現在我們一個專案跑在一個tomcat里面
當一個tomcat無法支持高的并發量時,可以使用多個tomcat
那么這多個tomcat如何云分配請求
|-nginx
02【熟悉】服務器概述
1,目前常見的web服務器
1,Apache(http://httpd.apache.org)
它是世界上用的最多的web服務器,市場占有率達60%左右,模塊非常豐富,系統非常穩定,可移植性好,但是比較消耗資源
2,lighttpd(http://www.lighttpd.net)
它是德國人開發的一個開源軟體,目標是提供一個高性能的網站,它具有記憶體開銷低,cpu占用低,效能好及模塊豐富,Nginx的重要競爭對手之一
3,tomcat(http://tomcat.apache.org)
是一個開源的軟體,運行servlet+jsp web應用軟體,對靜態檔案,高并發的處理能力弱,
4,IBM websphere
它功能完善,開放的Web應用程式服務器,是IBM電子商務計劃的核心部分,它是基于java的應用環境,范圍從簡單到高級到企業級應用,相于對其它web服務器來說應該比較少
5,Microsoft IIS
Microsoft的web服務器產品為Internet information Server (IIS) IIS提供了圖形界面管理工具,IIS是一種web服務器組件,其中有 web服務器,FTP服務器,nntp服務器,smtp服務器,因為有window2008和2012的支持,所以IIS也有一定的市場
2,各web服務器占有率
查詢網站
https://news.netcraft.com/archives/2017/10/26/october-2017-web-server-survey-13.html
03【熟悉】Nginx概述
1、前言
為毛要用nginx服務器代理,不直接用tomcat 7.0,還做多了一次接請求?
這個是我想問的,公司的新專案是要用Nginx+tomcat7+jdk開發的,用戶命名可以直接訪問tomcat,為啥還要用Nginx?這貨是個啥玩意?
2、為什么使用Nginx?
在傳統的Web專案中,并發量小,用戶使用的少,所以在低并發的情況下,用戶可以直接訪問tomcat服務器,然后tomcat服務器回傳訊息給用戶,比如,我們上傳圖片:
當然我們知道,為了解決并發,可以使用負載均衡:也就是我們多增加幾個tomcat服務器,當用戶訪問的時候,請求可以提交到空閑的tomcat服務器上,
但是這種情況下可能會有一種這樣的問題:上傳圖片操作,我們把圖片上傳到了tomcat1上了,當我們要訪問這個圖片的時候,tomcat1正好在作業,所以訪問的請求就交給其他的tomcat操作,而tomcat之間的資料沒有進行同步,所以就發生了我們要請求的圖片找不到,
為了解決這種情況,我們就想出了分布式,我們專門建立一個圖片服務器,用來存盤圖片,這樣當我們都把圖片上傳的時候,不管是哪個服務器接收到圖片,都把圖片上傳到圖片服務器,
圖片服務器上需要安裝一個http服務器,可以使用tomcat、apache、nginx,
看到這里大家可能會問,既然我們要選擇的是http服務器,為什么不繼續使用tomcat,而要使用Nginx?
原因如下:nginx常用做靜態內容服務和代理服務器(不是你FQ那個代理),直面外來請求轉發給后面的應用服務(tomcat,django什么的),tomcat更多用來做做一個應用容器,讓java web app跑在里面的東西,對應同級別的有jboss,jetty等東西,
3、什么是Nginx?
根據前面的對比,我們可以了解到Nginx是一個http服務器,是一個使用c語言開發的高性能的http服務器及反向代理服務器,Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,由俄羅斯的程式設計師Igor Sysoev所開發,官方測驗nginx能夠支支撐5萬并發鏈接,并且cpu、記憶體等資源消耗卻非常低,運行非常穩定,
3.1 Nginx的應用場景
1、 http服務器,Nginx是一個http服務可以獨立提供http服務,可以做網頁靜態服務器,
2、 虛擬主機,可以實作在一臺服務器虛擬出多個網站,例如個人網站使用的虛擬主機,
- 基于埠的,不同的埠
- 基于域名的,不同域名
3、 反向代理,負載均衡,當網站的訪問量達到一定程度后,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用nginx做反向代理,并且多臺服務器可以平均分擔負載,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況,
4、小結
通過了解Nginx也算是多了一門技術,而且還是挺簡單的,使用也比較方便,重點是可以給系統帶來很大的性能提升,
04【掌握】在Centos7系統下安裝Nginx
前往下載
http://nginx.org/en/download.html
我是下載了1.16版本的
2,安裝先安裝nginx依賴的包
- gcc
安裝nginx需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc
yum install gcc-c++
- PCRE
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正則運算式庫,nginx的http模塊使用pcre來決議正則運算式,所以需要在linux上安裝pcre庫,
yum install -y pcre pcre-devel
- zlib
zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫,
yum install -y zlib zlib-devel
- openssl
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程式供測驗或其它目的使用,
nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫,
yum install -y openssl openssl-devel
4,解壓拷貝
把解壓nginx-1.16.1.tar.gz包
tar -zxvf nginx-1.16.1.tar.gz
修改檔案夾的名字
mv nginx-1.16.1 nginx
把nginx拷貝到/usr/local/src里面
cp -r nginx /usr/local/src
5,安裝
進入nginx的目錄
cd /usr/local/src/nginx
創建nginx的安裝目錄
mkdir /usr/nginx
運行configure
./configure --prefix=/usr/nginx (指定安裝目錄編譯)
./configure --prefix=/usr/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
make編譯
cd /usr/local/src/nginx
make
make install編譯安裝
cd /usr/local/src/nginx
make install
6, Nginx的目錄說明
conf 配置目錄
html靜態檔案[cdn加速]
logs日志目錄
sbin執行檔案
7, Nginx的?啟動、停止
啟動
cd /usr/nginx/sbin
./nginx
停止
./nginx -s stop
重繪[當用戶修改了conf/nginx.conf]
./nginx -s reload
05【掌握】反向代理+負載均衡
1.1.正向代理
拿借錢打個比方,A想向C借錢,但是C不認識A所以不借給他,然后A就通過B向C借錢,B借到錢之后再轉交給A,在這個程序中B就扮演了一個正向代理的角色,這個程序中,真正借錢的人是誰,C是不知道的~
我們常說的代理也就是指正向代理,正向代理的程序,它隱藏了真實的請求客戶端,服務端不知道真實的客戶端是誰,客戶端請求的服務都被代理服務器代替來請求,科學上罔 xxxxxx 扮演的就是典型的正向代理角色,
比如我想訪問www.google.com,要想翻越這堵墻,你可以在國外用xxxxxx來搭建一臺代理服務器,代理幫我們請求www.google.com,代理再把請求回應結果再回傳給我,
1.2.反向代理
還用借錢的例子,A想向C借錢,然后C借給他了,但是實際上這個錢可能C向B借的至于錢到底是誰的,A是不知道的
這里的C扮演著一個反向代理的角色,客戶不知道真正提供服務的人是誰,
反向代理隱藏了真實的服務端,當我們訪問www.baidu.com的時候,背后可能有成千上萬臺服務器為我們服務,但具體是哪一臺,你不知道,也不需要知道,你只需要知道反向代理服務器是誰就好了,www.baidu.com就是我們的反向代理服務器,反向代理服務器會幫我們把請求轉發到提供真實服務的服務器那里去,Nginx就是性能非常好的反向代理服務器,它可以用來做負載均衡,
2,負載均衡
網站的訪問量越來越大,服務器的服務模式也得進行相應的升級,比如分離出資料庫服務器、分離出圖片作為單獨服務,這些是簡單的資料的負載均衡,將壓力分散到不同的機器上,有時候來自web前端的壓力,也能讓人十分頭痛,怎樣將同一個域名的訪問分散到兩臺或更多的機器上呢?這其實就是另一種負載均衡了,nginx自身就可以做到,只需要做個簡單的配置就行,
nginx不單可以作為強大的web服務器,也可以作為一個反向代理服務器,而且nginx還可以按照調度規則實作動態、靜態頁面的分離,可以按照輪詢、ip哈希、URL哈希、權重等多種方式對后端服務器做負載均衡,同時還支持后端服務器的健康檢查,
Nginx負載均衡一些基礎知識:
nginx 的 upstream目前支持 4 種方式的分配
1)、輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除,
2)、weight
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況,
2)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題,
3)、fair(第三方)
按后端服務器的回應時間來分配請求,回應時間短的優先分配,
4)、url_hash(第三方)
你的壓力來源于無法自律,只是假裝努力,現狀跟不上內心欲望,所以你焦慮又恐慌,——楊不易轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552918.html
標籤:其他
上一篇:驅動開發:通過應用堆實作多次通信
下一篇:返回列表