成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解Nginx,系統架構演變 + Nginx反向代理與負載均衡

開發 架構
隨著業務量的不斷增大,你會發現,這些單體架構,已經無法滿足數據日益膨脹的今天,動不動就幾萬、幾十萬的QPS,我記得當初200QPS,我就覺得挺嚇人了。

大家好,我是哪吒。

本系列為SpringCloud微服務系列,先從微服務的入口Nginx開始學習,讀哪吒編程,品技術人生。

一、系統架構演變

最開始接觸Java語言的時候,我寫的第一個項目是圖書管理系統,當時是用JSP+servlet寫的,感覺很吊的樣子,全班領先水平。

圖片

慢慢的變成了JSP+SSM架構。

圖片

到現在單體架構最流行的SpringBoot+Vue。

圖片

但是,隨著業務量的不斷增大,你會發現,這些單體架構,已經無法滿足數據日益膨脹的今天,動不動就幾萬、幾十萬的QPS,我記得當初200QPS,我就覺得挺嚇人了。

為了解決性能問題,慢慢的微服務SpringCloud架構浮出水面,微服務的核心理念是將應用細粒化,將單一應用拆分成若干個小應用,每個小應用提供單一的業務功能,獨立部署,服務之間相互調用,降低程序耦合度,解決單臺服務器宕機的問題。

微服務提供了:

  1. 高可用:當某個節點服務器宕機后,可以迅速將流量轉移到其它節點;
  2. 高性能:多臺服務器對外提供相同的服務,提升程序的吞吐量;
  3. 高擴展:當業務發生激增時,可以通過增加節點的方式,解決性能問題;

圖片

微服務

注:本章的重點是Nginx,微服務其它組件就不畫了。

二、什么是Nginx?

Nginx是俄羅斯人Igor Sysoev編寫的一款高性能 HTTP 和反向代理服務器。Nginx選擇了epoll和kqueue作為網絡I/O 模型,在高連接并發的情況下,Nginx是Apache服務器不錯的替代品,它能夠支持高達50000個并發連接數的響應,運行穩定,且內存、CPU等系統資源消耗非常低。

三、servername匹配規則

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

正則匹配格式,必須以~開頭,比如server_name ~^www\d+\.nzbc\.com$;。如果沒有~開頭,則Nginx會判定為完整匹配,在邏輯上,需要添加^和$錨定符號。正則匹配格式中.為正則元字符,需要通過反斜線進行轉義,如果正在表達式中包含{},需要用雙引號引用起來,避免報錯。

四、正向代理與反向代理

1、正向代理

圖片

正向代理服務器一般位于用戶和服務器之間,用戶通過正向代理服務器訪問應用服務器獲取資源。

最常見的例子就是,我們訪問一個外國網站,該網站無法在國內直接訪問,但是可以通過代理服務器訪問,也就是說,用戶向正向代理服務器發送一個請求并指定目標,然后正向代理服務器向目標服務器(外國網站)轉交請求并將獲得的內容返回給用戶。

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

2、反向代理

圖片

反向代理服務器一般位于用戶和服務器之間,用戶訪問反向代理服務器獲取應用服務器資源,用戶不知道應用服務器的地址,是由代理服務器轉發的,有降低網絡和服務器的負載,提高訪問效率的作用。

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

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

3、LVS

先說結論,LVS解決了Nginx單機性能瓶頸的問題

LVS主要用于多服務器負載均衡,工作在網絡的第四層,可以實現高性能、高可用的服務器集群技術,采用同步請求轉發的策略。

LVS支持的并發量要比Nginx高,可以配合keepalived使用,將Nginx作為LVS的節點機器,因為Nginx在網絡的第七層,功能上肯定強于LVS。

用戶通過Nginx訪問應用服務器,應用服務器直接將數據返回給機房路由,返回時不走Nginx了,降低了Nginx的性能消耗。

圖片

Nginx+LVS

五、負載均衡策略

1、輪詢

默認使用輪詢方式,逐一轉發訪問,這種情況適合無狀態請求,會話無法保持,可以通過基于客戶端實現會話保持。

會話保持方式:

(1)基于session實現:

session用于存儲客戶端用戶信息,一般不在服務器存儲session,可以通過SpringSession將session存儲到一個Redis服務器中,再次訪問時,可以到Redis服務器中獲取session,實現session共享。

(2)基于cookie實現,無狀態的會話保持方式:

客戶端訪問時,先到權限校驗服務器校驗權限,生成一個cookie,并進行加密,只有服務器能解密,客戶端沒密碼無法解密,客戶端攜帶此cookie再次訪問應用服務器,應用服務器進行解密校驗,完成無狀態的會話保持。

圖片

2、權重

通過upstream進行權重的定義。

  1. weight:權重
  2. down:下線不用了
  3. backup:備用服務器

修改配置文件后,需要通過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

每個請求按訪問ip的hash結果分配,映射到固定某一臺的服務器,會導致負載均衡不平衡。

當此應用服務器宕機后,session會丟失,再次發起請求時,會重新固定訪問另一臺正常的應用服務器,并實現會話保持。

4、least_conn

最少連接訪問。

5、url_hash

根據訪問的url轉發請求,定向流量轉發。

每個請求按訪問url的hash結果分配,映射到固定的某一臺服務器,會話無法保持。

一般在獲取本地資源時使用(且本地資源不在同一臺服務器上),比如通過地址1獲取圖片資源、通過地址2獲取pdf協議資源。

6、fair

根據服務器響應時間轉發請求。

7、小結

最常用的負載均衡策略是配置權重,其它的形式,不是很常用。

ip_hash、least_conn、url_hash、fair,這幾種形式無法實現動態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;
}

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是實現URL重寫的關鍵指令,根據regex (正則表達式)部分內容,進行重定向。

flag標記說明:

  1. break,本條匹配完成后即終止。
  2. last,本條匹配完成后,繼續向下匹配。
  3. redirect,返回302臨時重定向。
  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;
}
}
}

本文轉載自微信公眾號「哪吒編程」,可以通過以下二維碼關注。轉載本文請聯系哪吒編程公眾號。

責任編輯:姜華 來源: 哪吒編程
相關推薦

2019-06-19 15:34:39

Nginx反向代理負載均衡

2017-12-18 12:04:02

Nginx代理均衡

2019-11-04 15:35:53

Nginx反向代理負載均衡

2019-09-18 10:39:08

負載均衡反向代理TCP

2020-07-28 15:10:34

Nginx反向代理負載均衡

2012-12-07 10:14:48

Nginx負載均衡

2015-06-05 11:26:58

nginx運維

2019-07-09 15:10:02

Nginx反向代理負載均衡

2019-10-10 15:59:14

Nginx反向代理負載均衡

2020-10-22 08:05:46

Nginx

2018-10-14 08:39:52

NginxTomcat服務器

2018-11-05 09:34:43

2023-02-24 15:28:07

2011-09-01 10:23:47

Nginx負載均衡器負載均衡

2015-09-06 09:53:41

DockerWeave

2012-07-31 09:25:42

nginx負載均衡反向代理

2013-04-22 11:29:14

Nginx

2019-05-20 14:55:05

Nginx反向代理負載均衡

2022-07-01 07:33:24

nginx反向代理測試

2023-12-05 09:14:54

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国内自拍视频在线观看 | 久久综合九色综合欧美狠狠 | 91久久久久久 | 久久综合伊人一区二区三 | 水蜜桃久久夜色精品一区 | 国精久久| www.一区二区 | 国产精品视频久久 | 国产玖玖 | 免费久草| 91色在线| 亚洲图片视频一区 | 免费观看黄a一级视频 | 精品久久中文字幕 | 天堂中文av | 91精品国产91久久综合桃花 | 欧美亚洲国语精品一区二区 | 国产一区二区精 | 欧美一区二区小视频 | 亚洲精品中文字幕在线 | 伊人导航| 国产精品欧美一区二区三区不卡 | 9191av| 91精品国产综合久久久久久漫画 | 欧美福利视频 | 人人玩人人干 | 一区二区三区在线播放 | 久久久高清 | 免费午夜视频在线观看 | 国产一区二区三区在线 | 日韩毛片在线观看 | 成人性视频免费网站 | 成人在线观看免费 | 欧美精品乱码久久久久久按摩 | 久久999 | 亚洲精品久久久久久下一站 | 91佛爷在线观看 | 欧美性一区二区三区 | 最新黄色在线观看 | 久久91精品国产一区二区三区 | 亚洲日韩中文字幕一区 |