複習電商筆記-15-ngni介紹和圖片回顯
第四天:Tomcat叢集+負載均衡+商品描述
思考:
序號 |
知識點 |
型別 |
難度係數 |
掌握程度 |
|
貨描大欄位資料庫表如何設計?垂直分表 |
論述 |
1 |
熟練 |
|
nginx處理過程?輪詢、權重、IP_HASH |
論述 |
1 |
熟練 |
知識點:
序號 |
知識點 |
型別 |
難度係數 |
掌握程度 |
|
新增商品時加入貨描 |
技術 |
2 |
瞭解 |
|
修改商品時加入貨描 |
技術 |
2 |
瞭解 |
|
級聯刪除 |
技術 |
1 |
熟練 |
|
KindEditor元件,實現富文字編輯 |
技術 |
2 |
熟練 |
|
前臺系統搭建 |
技術 |
1 |
熟練 |
|
首頁分類實現json |
設計 |
3 |
熟練 |
拓展作業:
序號 |
知識點 |
型別 |
難度係數 |
掌握程度 |
|
新增商品時加入貨描 |
技術 |
2 |
瞭解 |
思考:
序號 |
知識點 |
型別 |
難度係數 |
掌握程度 |
|
圖片欄位資料庫表如何設計?只記錄連結地址,圖片另存到圖片伺服器上 |
論述 |
1 |
熟練 |
|
富文字編輯器KindEditor如何使用? |
論述 |
1 |
會用 |
|
圖片上傳如何實現? |
論述 |
1 |
熟練 |
知識點:
序號 |
知識點 |
型別 |
難度係數 |
掌握程度 |
|
KindEditor元件,實現圖片上傳 |
技術 |
2 |
熟練 |
|
jsonView工具 |
工具 |
1 |
熟練 |
|
nginx動靜分離,圖片地址對映 |
技術 |
1 |
熟練 |
|
nginx+Tomcat叢集 |
技術 |
3 |
熟練 |
|
VMware的NAT(直接發配置文件) |
工具 |
2 |
會用 |
拓展作業:
序號 |
知識點 |
型別 |
難度係數 |
掌握程度 |
|
實現京淘專案動靜分離 |
技術 |
2 |
熟練 |
|
KindEditor獨立demo |
技術 |
2 |
熟練 |
|
EasyUI獨立demo |
技術 |
2 |
熟練 |
Nginx高負載均衡伺服器
簡介
Nginx ("engine x") 是一個高效能HTTP和反向代理伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。Nginx是由IgorSysoev為俄羅斯訪問量第二的 Rambler.ru站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。
其特點是佔有記憶體少,併發能力強,能夠支援高達50000個併發連線響應。這歸功於它選擇了epoll and kqueue作為開發模型(socket數量不限制)(Apache採用的select開發模型)。它處理請求是非同步非阻塞,在高併發下保持低資源低消耗高效能。非常穩定,bug極少。Apache使用處理每個連線都需要一個程序,其併發效能不是很好。而Nginx使用多路複用的技術,讓一個程序處理多個連線,所以併發效能比較好。可以說構建大型網站無一例外都是使用nginx,如:新浪、網易、騰訊、京東、淘寶等。
- Nginx是一個高效能的HTTP和方向代理伺服器
- 採用C語言編寫
- 支援的作業系統眾多,windows、linux、MacOS X
- 安全性高,外界只能訪問nginx所在伺服器,nginx將請求轉發內部伺服器。呼叫後,返回呼叫的結果
- 可實現負載均衡
- Rewrite功能強大
電商、網際網路架構大部分都採用Nginx+Tomcat的架構。
官網地址:http://nginx.org/en/download.html
Nginx和Apache、IIS等比較
根據W3Techs公佈的資料,Nginx目前已經在Web伺服器領域有了一定的地位。
在排名前1000的網站中,Nginx佔據了將近三分之一的席位(29.1%),已經取代了IIS(僅為12.7%)第二名的位置。當然,Apache還是當之無愧的老大,佔39.1%。這表明,大型網站更願意使用開源的web伺服器。Google伺服器也有8.2%的份額。
在排名前100萬的網站中,主流伺服器仍為Apache,佔據了63.7%的份額,也有很大一部分使用IIS,佔16.7%。Nginx佔據了14.2%。
這得益於Nginx使用了最新的epoll(Linux 2.6核心)和kqueue(freebsd)網路I/O模型,
而Apache則使用的是傳統的select模型。
目前Linux下能夠承受高併發訪問的Squid、Memcached都採用的是epoll網路I/O模型。
處理大量的連線的讀寫,Apache所採用的select網路I/O模型非常低效。下面用一個比喻來解析Apache採用的select模型和Nginx採用的epoll模型進行之間的區別:
假設你在大學讀書,住的宿舍樓有很多間房間,你的朋友要來找你。
select版宿管大媽就會帶著你的朋友挨個房間去找,直到找到你為止。
而epoll版宿管大媽會先記下每位同學的房間號,你的朋友來時,只需告訴你的朋友你住在哪個房間即可,不用親自帶著你的朋友滿大樓找人。
如果來了10000個人,都要找自己住這棟樓的同學時,select版和epoll版宿管大媽,誰的效率更高,不言自明。同理,在高併發伺服器中,輪詢I/O是最耗時間的操作之一,select和epoll的效能誰的效能更高,同樣十分明瞭。
http://www.cnblogs.com/linganxiong/p/5583415.html 參考資料
Nginx目錄結構
Nginx配置檔案
conf/nginx.conf
系統配置:server,可以配置多個server
轉發規則:location路徑、root目錄、index歡迎頁面
反向代理規則:location攔截路徑、proxy_pass轉向地址、index
Nginx優化
- user root; #對應系統哪個使用者,最好專為nginx建立使用者和組,並單獨設定許可權,這樣安全。如:user nginx nginx。
- events I/O模型,Linux推薦使用epoll模型。
- worker_processes 1; #習慣配置和當前伺服器的core數相同,或者2倍
- worker_connections 1024; #開啟數為實際數量的1/4,瀏覽器訪問時會自動發起2個;反向代理tomcat又是兩個。這個數值和作業系統能開啟的檔案數。理論上併發數=worker_processes * worker_connections。跟實體記憶體大小也有關係,因為系統開啟的檔案數和系統的記憶體成正比。一般1GB記憶體可也開啟大約10W左右。
- worker_rlimit_nofile #一個nginx程序開啟最多的檔案數目,配置和Linux下檔案打開個數一致。ulimit –n來檢視。最大設定為65535
- keepalive_timeout 設定65左右
- 儘量開啟Gzip壓縮,gzip_comp_level通常設定為3-5,太高會佔用CPU
- Error日誌優化,執行期間設定crit,可以減少I/O。
Nginx啟動停止
啟動: start nginx.exe (不能雙擊,雙擊後進程無法關掉)
停止: nginx.exe –s stop
重新載入: nginx.exe –s reload
驗證安裝是否成功: nginx.exe –t
注:Windows下有時停止無效,造成開啟太多,手工結束程序。
Linux下部署Nginx
yum安裝
yum install nginx #yum安裝nginx,方便它的依賴包自動安裝
whereis nginx #檢視安裝後的各目錄
啟動停止重啟
nginx #直接執行,配置檔案 /etc/nginx/nginx.conf
nginx -s stop #停止
nginx -s reload #更新
測試
nginx –t #測試nginx是否正常
執行結果:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
檢視程序
[[email protected] nginx]# ps -ef |grep nginx
執行結果:
root 28764 1 0 Mar14 ? 00:00:00 nginx: master process ./nginx
nginx 2071 28764 0 08:44 ? 00:00:00 nginx: worker process
nginx 2072 28764 0 08:44 ? 00:00:00 nginx: worker process
root 2399 2114 0 11:22 pts/0 00:00:00 grep nginx
常見問題
目前後臺系統檔案上傳會有兩個問題,一個圖片上傳儲存到伺服器,一個圖片的回顯,需要把nginx和tomcat和圖片伺服器執行http://image/jt.com指向同一臺伺服器。
nginx作用
反向代理
和日常我們上網不同,在公司我們上網時,不是所有電腦直接訪問外網,而是訪問一個代理伺服器,由代理伺服器再訪問我們要訪問的網站,代理伺服器獲得訪問網站的返回資訊後,再返回給我們。這種代理我們的電腦的方式叫做正向代理。
而nginx不同,它實現也是代理,但是代理的後臺伺服器,我們訪問nginx,而nginx代理後面的伺服器,由它去決定具體訪問哪臺伺服器。這種方式和正向代理剛好反過來,所以把這種方式稱作反向代理。
反向代理的好處,它遮蔽了後臺具體的伺服器,我們訪問者根本不知道訪問的哪臺伺服器,這樣使訪問更加安全。
通過前置機(也叫踏板機)將內網和外網隔離,使用者只能訪問前置機,其他的機器是無法直接訪問內網中其他伺服器資源,必須通過前置機中轉,請求重定向才可以。這樣保證了網路的安全。
流行的nginx部署結構
先通過一個nginx進行轉發到2個nginx上,然後再通過nginx進行負載到多個tomcat叢集上。這樣的結構優點是,防止單個節點壓力過重。也可以實現keepalive(是在TCP中一個可以檢測死連線的機制)和HAProxy+nginx叢集,實現nginx高可用。
請求轉發
當用戶訪問http://localhost:80,nginx將這個請求什麼也不做,只負責轉發到tomcat的訪問地址http://localhost:8080
server {
listen 80;
server_name localhost;
location / { #攔截所有的資源
proxy_pass http://127.0.0.1:8080; #轉向tomcat的地址
}
}
動靜分離(指向一個目錄)
靜態資源:圖片、css、js、html(靜態資源處理時併發非常高)
動態資源:asp/aspx、php、jsp
nginx預設配置
location / {
root html; #相對路徑,配置了一個html目錄,我們可以將網站所用到的所有的靜態資源從war中移除,放到這個目錄下。
index index.html index.htm; #配置的歡迎頁面
}
傳統將專案是把資源一起放到war中,而動靜分離是把靜態資源從war中剝離出來,單獨放在一個目錄中。這樣當訪問靜態資源時,就由nginx直接重定向檔案資源。當訪問動態資源就由tomcat解析。
nginx解析靜態比tomcat快很多。
圖片伺服器(指向一個目錄)
C:\Windows\System32\drivers\etc\hosts
127.0.0.1 www.jt.com
127.0.0.1 manage.jt.com
127.0.0.1 image.jt.com
127.0.0.1 sso.jt.com
127.0.0.1 order.jt.com
127.0.0.1 solr.jt.com
127.0.0.1 search.jt.com
127.0.0.1 cart.jt.com
圖片伺服器
server {
listen 80;
server_name image.jt.com; #域名地址,修改hosts檔案做一個配置 image.jt.com 127.0.0.1
location / {
root c:\\jt-upload; #圖片檔案所在目錄,按日期來分目錄:yyyy/mm/dd/uuid.jpg或者當前時間的毫秒數+隨機值.jpg
}
}
目錄:C:\jt-upload\images\2016\03\07\607.jpg
訪問:http://image.jt.com/images/2016/03/07/607.jpg