日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
圖解Nginx,系統(tǒng)架構(gòu)演變+Nginx反向代理與負(fù)載均衡

大家好,我是哪吒。

華容ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

本系列為SpringCloud微服務(wù)系列,先從微服務(wù)的入口Nginx開(kāi)始學(xué)習(xí),讀哪吒編程,品技術(shù)人生。

一、系統(tǒng)架構(gòu)演變

最開(kāi)始接觸Java語(yǔ)言的時(shí)候,我寫(xiě)的第一個(gè)項(xiàng)目是圖書(shū)管理系統(tǒng),當(dāng)時(shí)是用JSP+servlet寫(xiě)的,感覺(jué)很吊的樣子,全班領(lǐng)先水平。

慢慢的變成了JSP+SSM架構(gòu)。

到現(xiàn)在單體架構(gòu)最流行的SpringBoot+Vue。

但是,隨著業(yè)務(wù)量的不斷增大,你會(huì)發(fā)現(xiàn),這些單體架構(gòu),已經(jīng)無(wú)法滿足數(shù)據(jù)日益膨脹的今天,動(dòng)不動(dòng)就幾萬(wàn)、幾十萬(wàn)的QPS,我記得當(dāng)初200QPS,我就覺(jué)得挺嚇人了。

為了解決性能問(wèn)題,慢慢的微服務(wù)SpringCloud架構(gòu)浮出水面,微服務(wù)的核心理念是將應(yīng)用細(xì)粒化,將單一應(yīng)用拆分成若干個(gè)小應(yīng)用,每個(gè)小應(yīng)用提供單一的業(yè)務(wù)功能,獨(dú)立部署,服務(wù)之間相互調(diào)用,降低程序耦合度,解決單臺(tái)服務(wù)器宕機(jī)的問(wèn)題。

微服務(wù)提供了:

  1. 高可用:當(dāng)某個(gè)節(jié)點(diǎn)服務(wù)器宕機(jī)后,可以迅速將流量轉(zhuǎn)移到其它節(jié)點(diǎn);
  2. 高性能:多臺(tái)服務(wù)器對(duì)外提供相同的服務(wù),提升程序的吞吐量;
  3. 高擴(kuò)展:當(dāng)業(yè)務(wù)發(fā)生激增時(shí),可以通過(guò)增加節(jié)點(diǎn)的方式,解決性能問(wèn)題;

微服務(wù)

注:本章的重點(diǎn)是Nginx,微服務(wù)其它組件就不畫(huà)了。

二、什么是Nginx?

Nginx是俄羅斯人Igor Sysoev編寫(xiě)的一款高性能 HTTP 和反向代理服務(wù)器。Nginx選擇了epoll和kqueue作為網(wǎng)絡(luò)I/O 模型,在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品,它能夠支持高達(dá)50000個(gè)并發(fā)連接數(shù)的響應(yīng),運(yùn)行穩(wěn)定,且內(nèi)存、CPU等系統(tǒng)資源消耗非常低。

三、servername匹配規(guī)則

  1. 完整匹配
  2. 通配符匹配
  3. 正則匹配

正則匹配格式,必須以~開(kāi)頭,比如server_name ~^www\d+\.nzbc\.com$;。如果沒(méi)有~開(kāi)頭,則Nginx會(huì)判定為完整匹配,在邏輯上,需要添加^和$錨定符號(hào)。正則匹配格式中.為正則元字符,需要通過(guò)反斜線進(jìn)行轉(zhuǎn)義,如果正在表達(dá)式中包含{},需要用雙引號(hào)引用起來(lái),避免報(bào)錯(cuò)。

四、正向代理與反向代理

1、正向代理

正向代理服務(wù)器一般位于用戶和服務(wù)器之間,用戶通過(guò)正向代理服務(wù)器訪問(wèn)應(yīng)用服務(wù)器獲取資源。

最常見(jiàn)的例子就是,我們?cè)L問(wèn)一個(gè)外國(guó)網(wǎng)站,該網(wǎng)站無(wú)法在國(guó)內(nèi)直接訪問(wèn),但是可以通過(guò)代理服務(wù)器訪問(wèn),也就是說(shuō),用戶向正向代理服務(wù)器發(fā)送一個(gè)請(qǐng)求并指定目標(biāo),然后正向代理服務(wù)器向目標(biāo)服務(wù)器(外國(guó)網(wǎng)站)轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給用戶。

正向代理服務(wù)器,代理的是客戶端,去和服務(wù)端交互。?

2、反向代理

反向代理服務(wù)器一般位于用戶和服務(wù)器之間,用戶訪問(wèn)反向代理服務(wù)器獲取應(yīng)用服務(wù)器資源,用戶不知道應(yīng)用服務(wù)器的地址,是由代理服務(wù)器轉(zhuǎn)發(fā)的,有降低網(wǎng)絡(luò)和服務(wù)器的負(fù)載,提高訪問(wèn)效率的作用。

反向代理服務(wù)器,代理的是服務(wù)端,去和客戶端交互。

Nginx就是一款高性能的反向代理服務(wù)器。

3、LVS

先說(shuō)結(jié)論,LVS解決了Nginx單機(jī)性能瓶頸的問(wèn)題。

LVS主要用于多服務(wù)器負(fù)載均衡,工作在網(wǎng)絡(luò)的第四層,可以實(shí)現(xiàn)高性能、高可用的服務(wù)器集群技術(shù),采用同步請(qǐng)求轉(zhuǎn)發(fā)的策略。

LVS支持的并發(fā)量要比Nginx高,可以配合keepalived使用,將Nginx作為L(zhǎng)VS的節(jié)點(diǎn)機(jī)器,因?yàn)镹ginx在網(wǎng)絡(luò)的第七層,功能上肯定強(qiáng)于LVS。

用戶通過(guò)Nginx訪問(wèn)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器直接將數(shù)據(jù)返回給機(jī)房路由,返回時(shí)不走Nginx了,降低了Nginx的性能消耗。

Nginx+LVS

五、負(fù)載均衡策略

1、輪詢

默認(rèn)使用輪詢方式,逐一轉(zhuǎn)發(fā)訪問(wèn),這種情況適合無(wú)狀態(tài)請(qǐng)求,會(huì)話無(wú)法保持,可以通過(guò)基于客戶端實(shí)現(xiàn)會(huì)話保持。

會(huì)話保持方式:

(1)基于session實(shí)現(xiàn):

session用于存儲(chǔ)客戶端用戶信息,一般不在服務(wù)器存儲(chǔ)session,可以通過(guò)SpringSession將session存儲(chǔ)到一個(gè)Redis服務(wù)器中,再次訪問(wèn)時(shí),可以到Redis服務(wù)器中獲取session,實(shí)現(xiàn)session共享。

(2)基于cookie實(shí)現(xiàn),無(wú)狀態(tài)的會(huì)話保持方式:

客戶端訪問(wèn)時(shí),先到權(quán)限校驗(yàn)服務(wù)器校驗(yàn)權(quán)限,生成一個(gè)cookie,并進(jìn)行加密,只有服務(wù)器能解密,客戶端沒(méi)密碼無(wú)法解密,客戶端攜帶此cookie再次訪問(wèn)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器進(jìn)行解密校驗(yàn),完成無(wú)狀態(tài)的會(huì)話保持。

2、權(quán)重

通過(guò)upstream進(jìn)行權(quán)重的定義。

  1. weight:權(quán)重
  2. down:下線不用了
  3. backup:備用服務(wù)器

修改配置文件后,需要通過(guò)systemctl reload nginx命令重啟Nginx。

nginx.conf配置如下:

http{
upstream httpnz {
server 192.168.66.1 weight=1 down;
server 192.168.66.2 weight=5 backup;
server 192.168.66.3 weight=10;
}
server{
listen 80;
server_name nzbc;

location / {
proxy_pass http://httpnz;
}

error_page 500.html;
location = /500.html{
root html;
}
}
}

3、ip_hash

每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配,映射到固定某一臺(tái)的服務(wù)器,會(huì)導(dǎo)致負(fù)載均衡不平衡。

當(dāng)此應(yīng)用服務(wù)器宕機(jī)后,session會(huì)丟失,再次發(fā)起請(qǐng)求時(shí),會(huì)重新固定訪問(wèn)另一臺(tái)正常的應(yīng)用服務(wù)器,并實(shí)現(xiàn)會(huì)話保持。

4、least_conn

最少連接訪問(wèn)。

5、url_hash

根據(jù)訪問(wèn)的url轉(zhuǎn)發(fā)請(qǐng)求,定向流量轉(zhuǎn)發(fā)。

每個(gè)請(qǐng)求按訪問(wèn)url的hash結(jié)果分配,映射到固定的某一臺(tái)服務(wù)器,會(huì)話無(wú)法保持。

一般在獲取本地資源時(shí)使用(且本地資源不在同一臺(tái)服務(wù)器上),比如通過(guò)地址1獲取圖片資源、通過(guò)地址2獲取pdf協(xié)議資源。

6、fair

根據(jù)服務(wù)器響應(yīng)時(shí)間轉(zhuǎn)發(fā)請(qǐng)求。

7、小結(jié)

最常用的負(fù)載均衡策略是配置權(quán)重,其它的形式,不是很常用。

ip_hash、least_conn、url_hash、fair,這幾種形式無(wú)法實(shí)現(xiàn)動(dòng)態(tài)Nginx上下線(新增或減少Nginx服務(wù)器),而且還會(huì)造成流量?jī)A斜的問(wèn)題,如果瞬時(shí)流量比較爆炸的時(shí)候,會(huì)將某個(gè)服務(wù)器直接干蹦。

六、動(dòng)靜分離

動(dòng)靜分離的最終目的是將獲取靜態(tài)資源和動(dòng)態(tài)資源分離開(kāi),提升服務(wù)器性能和高可用性。

配置靜態(tài)資源,nginx.conf配置如下:

http{
upstream httpnz {
server 192.168.66.1 weight=1 down;
server 192.168.66.2 weight=5 backup;
server 192.168.66.3 weight=10;
}
server{
listen 80;
server_name nzbc;

location / {
proxy_pass http://httpnz;
}

location ~*/(js/img/css) {
root html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html{
root html;
}
}
}

七、URLRewrite

URLRewrite是實(shí)現(xiàn)URL重寫(xiě)的關(guān)鍵指令,根據(jù)regex (正則表達(dá)式)部分內(nèi)容,進(jìn)行重定向。

flag標(biāo)記說(shuō)明:

  1. break,本條匹配完成后即終止。
  2. last,本條匹配完成后,繼續(xù)向下匹配。
  3. redirect,返回302臨時(shí)重定向。
  4. permanent,返回301永久重定向。

配置URLRewrite,nginx.conf配置如下:

http{
upstream httpnz {
server 192.168.66.1 weight=1 down;
server 192.168.66.2 weight=5 backup;
server 192.168.66.3 weight=10;
}
server{
listen 80;
server_name nzbc;

location / {
rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;
proxy_pass http://httpnz;
}

location ~*/(js/img/css) {
root html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html{
root html;
}
}
}

本文轉(zhuǎn)載自微信公眾號(hào)「哪吒編程」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系哪吒編程公眾號(hào)。


網(wǎng)站欄目:圖解Nginx,系統(tǒng)架構(gòu)演變+Nginx反向代理與負(fù)載均衡
當(dāng)前路徑:http://m.5511xx.com/article/cohossp.html