1. 程式人生 > >複習電商筆記-15-ngni介紹和圖片回顯

複習電商筆記-15-ngni介紹和圖片回顯

第四天:Tomcat叢集+負載均衡+商品描述

思考:

序號

知識點

型別

難度係數

掌握程度

  1.  

貨描大欄位資料庫表如何設計?垂直分表

論述

1

熟練

  1.  

nginx處理過程?輪詢、權重、IP_HASH

論述

1

熟練

知識點:

序號

知識點

型別

難度係數

掌握程度

  1.  

新增商品時加入貨描

技術

2

瞭解

  1.  

修改商品時加入貨描

技術

2

瞭解

  1.  

級聯刪除

技術

1

熟練

  1.  

KindEditor元件,實現富文字編輯

技術

2

熟練

  1.  

前臺系統搭建

技術

1

熟練

  1.  

首頁分類實現json

設計

3

熟練

拓展作業:

序號

知識點

型別

難度係數

掌握程度

  1.  

新增商品時加入貨描

技術

2

瞭解

思考:

序號

知識點

型別

難度係數

掌握程度

  1.  

圖片欄位資料庫表如何設計?只記錄連結地址,圖片另存到圖片伺服器上

論述

1

熟練

  1.  

富文字編輯器KindEditor如何使用?

論述

1

會用

  1.  

圖片上傳如何實現?

論述

1

熟練

知識點:

序號

知識點

型別

難度係數

掌握程度

  1.  

KindEditor元件,實現圖片上傳

技術

2

熟練

  1.  

jsonView工具

工具

1

熟練

  1.  

nginx動靜分離,圖片地址對映

技術

1

熟練

  1.  

nginx+Tomcat叢集

技術

3

熟練

  1.  

VMware的NAT(直接發配置文件)

工具

2

會用

拓展作業:

序號

知識點

型別

難度係數

掌握程度

  1.  

實現京淘專案動靜分離

技術

2

熟練

  1.  

KindEditor獨立demo

技術

2

熟練

  1.  

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,如:新浪、網易、騰訊、京東、淘寶等。

  1. Nginx是一個高效能的HTTP和方向代理伺服器
  2. 採用C語言編寫
  3. 支援的作業系統眾多,windows、linux、MacOS X
  4. 安全性高,外界只能訪問nginx所在伺服器,nginx將請求轉發內部伺服器。呼叫後,返回呼叫的結果
  5. 可實現負載均衡
  6. 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優化

  1. user root; #對應系統哪個使用者,最好專為nginx建立使用者和組,並單獨設定許可權,這樣安全。如:user nginx nginx。
  2. events I/O模型,Linux推薦使用epoll模型。
  3. worker_processes 1;  #習慣配置和當前伺服器的core數相同,或者2倍
  4. worker_connections 1024; #開啟數為實際數量的1/4,瀏覽器訪問時會自動發起2個;反向代理tomcat又是兩個。這個數值和作業系統能開啟的檔案數。理論上併發數=worker_processes * worker_connections。跟實體記憶體大小也有關係,因為系統開啟的檔案數和系統的記憶體成正比。一般1GB記憶體可也開啟大約10W左右。
  5. worker_rlimit_nofile #一個nginx程序開啟最多的檔案數目,配置和Linux下檔案打開個數一致。ulimit –n來檢視。最大設定為65535
  6. keepalive_timeout 設定65左右
  7. 儘量開啟Gzip壓縮,gzip_comp_level通常設定為3-5,太高會佔用CPU
  8. 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