成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

切圖崽的自我修養(yǎng)—[HTTP] 常見B/S架構(gòu)簡單梳理

546669204 / 1718人閱讀

摘要:前言客戶端服務(wù)器的通信會經(jīng)歷如下幾個階段客戶端輸入服務(wù)器解析階段服務(wù)器解析請求階段應(yīng)用服務(wù)器邏輯處理階段數(shù)據(jù)庫操作階段服務(wù)器模版渲染階段服務(wù)器將返回給客戶端解析階段當(dāng)客戶在瀏覽器輸入某個首先會經(jīng)歷域名解析階段,即向服務(wù)器解析目標(biāo)返回對應(yīng)目標(biāo)

前言

客戶端-服務(wù)器的通信會經(jīng)歷如下幾個階段:

客戶端輸入URL

DNS服務(wù)器解析URL階段

Web服務(wù)器解析Http請求階段

應(yīng)用服務(wù)器邏輯處理階段

數(shù)據(jù)庫操作階段

Web服務(wù)器模版渲染階段

Web服務(wù)器將Html返回給客戶端

解析URL階段

當(dāng)客戶在瀏覽器輸入某個URL, 首先會經(jīng)歷域名解析階段,即向DNS服務(wù)器解析目標(biāo)URL返回對應(yīng)目標(biāo)URL的Ip地址,再根據(jù)這個目標(biāo)Ip地址請起對應(yīng)的服務(wù)器.比如在瀏覽器中輸入www.xx.yy.com后,

瀏覽器在本地緩存查找www.xx.yy.com對應(yīng)的IP,如果沒找到

向DNS服務(wù)器請求www.xx.yy.com對應(yīng)的IP,如果DNS服務(wù)器解析不出來

向更上一級DNS服務(wù)器請求www.xx.yy.com對應(yīng)的IP,如果DNS服務(wù)器解析不出來

向更上一級DNS服務(wù)器請求www.xx.yy.com對應(yīng)的IP,直到給客戶端返回對應(yīng)的IP(192.0.0.1)

用戶向www.xx.yy.com對應(yīng)的IP地址發(fā)送Http請求(192.0.0.1)

客戶端得到對應(yīng)的IP之后,就可以和web服務(wù)器進(jìn)行正式的交互了

模型1

客戶端-(web+應(yīng)用)服務(wù)器-數(shù)據(jù)庫

客戶端向服務(wù)器發(fā)起Http請求

服務(wù)器中的web服務(wù)層能夠處理Http請求

服務(wù)器中的應(yīng)用層部分能夠調(diào)用業(yè)務(wù)邏輯,調(diào)用業(yè)務(wù)邏輯上的方法

如果有必要,服務(wù)器會和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換. 然后將模版+數(shù)據(jù)渲染成最終的Html, 返送給客戶端

模型2

客戶端-web服務(wù)器-應(yīng)用服務(wù)器-數(shù)據(jù)庫

類似模型1,只是將web服務(wù)和應(yīng)用服務(wù)解耦

客戶端向web服務(wù)器發(fā)起Http請求

web服務(wù)能夠處理Http請求,并且調(diào)用應(yīng)用服務(wù)器暴露在外的RESTFUL接口

應(yīng)用服務(wù)器的RESTFUL接口被調(diào)用,會執(zhí)行對應(yīng)的暴露方法.如果有必要和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互,應(yīng)用服務(wù)器會和數(shù)據(jù)庫進(jìn)行交互后,將json數(shù)據(jù)返回給web服務(wù)器

web服務(wù)器將模版+數(shù)據(jù)組合渲染成html返回給客戶端

模型3

客戶端-負(fù)載均衡器(Nginx)-中間服務(wù)器(Node)-應(yīng)用服務(wù)器-數(shù)據(jù)庫

整正暴露在外的不是真正web服務(wù)器的地址,而是負(fù)載均衡器器的地址

客戶向負(fù)載均衡器發(fā)起Http請求

負(fù)載均衡器能夠?qū)⒖蛻舳说腍ttp請求均勻的轉(zhuǎn)發(fā)給Node服務(wù)器集群

Node服務(wù)器接收到Http請求之后,能夠?qū)ζ溥M(jìn)行解析,并且能夠調(diào)用應(yīng)用服務(wù)器暴露在外的RESTFUL接口

應(yīng)用服務(wù)器的RESTFUL接口被調(diào)用,會執(zhí)行對應(yīng)的暴露方法.如果有必要和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互,應(yīng)用服務(wù)器會和數(shù)據(jù)庫進(jìn)行交互后,將json數(shù)據(jù)返回給Node

Node層將模版+數(shù)據(jù)組合渲染成html返回反向代理服務(wù)器

反向代理服務(wù)器將對應(yīng)html返回給客戶端

注意

首先來明晰一下Nginx概念. Nginx的優(yōu)點(diǎn)有: 作為反向代理能夠起到負(fù)載均衡的作用, 負(fù)載均衡就是能夠承受、高并發(fā)的大量的請求,然后將這些請求均勻的轉(zhuǎn)發(fā)給內(nèi)部的服務(wù)器,分?jǐn)倝毫? 并且反向代理能夠解決跨域引起的問題,因?yàn)镹ginx,Node,應(yīng)用服務(wù)器,數(shù)據(jù)庫都在內(nèi)網(wǎng)段呀. 并且,Nginx非常擅長處理靜態(tài)資源(img,css,js,video),所以也經(jīng)常作為靜態(tài)資源服務(wù)器,也叫做CDN

特別的,前一個用戶訪問index.html, 經(jīng)過Nginx-Node-應(yīng)用服務(wù)器-數(shù)據(jù)庫鏈路之后,Nginx會把index.html返回給用戶,并且會把index.html緩存在Nginx上

下一個用戶再想請求index.html的時候,請求Nginx服務(wù)器,Nginx發(fā)現(xiàn)有index.html的緩存,于是就不用去請求Node層了,會直接將緩存的頁面(如果沒過期的話)返回給用戶.

模型4

客戶端 - (靜態(tài)資源服務(wù)器CDN,負(fù)載均衡服務(wù)器Nginx)-中間服務(wù)器(Node)-應(yīng)用服務(wù)器-數(shù)據(jù)庫

客戶端的靜態(tài)請求(images,css,js等)全部走CDN

客戶端的動態(tài)請求(html頁面上的數(shù)據(jù)需要從數(shù)據(jù)庫中取,而且需要邏輯處理)就走負(fù)載均衡器Nginx(反向代理)

比如針對頁面www.xx.yy.com/index.html來說,

客戶在瀏覽器中輸入www.xx.yy.com/index.html, 瀏覽器會查找本地DNS緩存試著找到該URL Hostname對應(yīng)的IP

如果本地沒有找到,瀏覽器會發(fā)送請求到最低層的DNS服務(wù)器,期望得到該URL對應(yīng)的IP

最低層DNS服務(wù)器解析該域名,如果解析不了,會再往高一級的DNS服務(wù)器發(fā)送請求,期望得到該URL對應(yīng)的IP,如此遞歸向上查詢,直到找到該URL對應(yīng)的域名,然后逐級向下返回給客戶端

客戶端拿到對應(yīng)的IP, 開始向該地址發(fā)送Http請求.

其實(shí)這個IP就是nginx服務(wù)器的IP地址

Nginx服務(wù)器接收到客戶端的Http請求后,會根據(jù)調(diào)度算法轉(zhuǎn)發(fā)給合適的空閑的Node服務(wù)器

Node服務(wù)器接收到Http請求之后,能夠?qū)ζ溥M(jìn)行解析,并且能夠調(diào)用應(yīng)用服務(wù)器暴露在外的RESTFUL接口

應(yīng)用服務(wù)器的RESTFUL接口被調(diào)用,會執(zhí)行對應(yīng)的暴露方法.如果有必要和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互,應(yīng)用服務(wù)器會和數(shù)據(jù)庫進(jìn)行交互后,將json數(shù)據(jù)返回給Node

Node層將模版+數(shù)據(jù)組合渲染成html返回反向代理服務(wù)器

Nginx服務(wù)器將對應(yīng)html返回給客戶端

客戶端拿到的index.html如下


...
...
21
...

客戶端開始解析index.html, 發(fā)現(xiàn)了img標(biāo)簽,于是得向cdn.xx.xx請求1.png

客戶端想得到cdn.xx.xx這個域名的IP, 于是查找本地DNS緩存

如果沒有緩存,于是向最低層DNS服務(wù)器發(fā)起域名解析,期望得到cdn.xx.xx對應(yīng)的IP

DNS服務(wù)器收到請求,發(fā)現(xiàn)用戶的Http-header里請求的是cdn.xx.xx,請求的是一個CDN服務(wù)器(其實(shí)是一個分散的集群)的IP地址. 于是DNS會動態(tài)計算,這個域名對應(yīng)的CDN服務(wù)器集群,哪一臺服務(wù)器離用戶更近更快更合適

DNS服務(wù)器計算出最合適的CDN服務(wù)器IP之后,將該IP返回給客戶端

客戶端向這個IP請求靜態(tài)資源.

注意:

為什么CDN服務(wù)能夠極大地提高用戶請求靜態(tài)資源的效率?

就是因?yàn)槟阏埱蟮腃DN服務(wù)器URL對應(yīng)的IP是經(jīng)過了DNS服務(wù)器的計算得出的最優(yōu)解. 當(dāng)DNS服務(wù)器收到用戶的域名解析請求的時候,如果發(fā)現(xiàn)用戶請求的是CDN服務(wù)器集群的域名,那么DNS會根據(jù)用戶所在IP地址計算,找到離用戶最近的/網(wǎng)絡(luò)狀況最好的 CDN服務(wù)器對應(yīng)的IP地址,返回給客戶端.

其實(shí),這和異地多機(jī)房部署是一個原理
很多大公司服務(wù)器一般會分南北兩個集群. 比如一個集群在廣州,一個集群在北京. 那么當(dāng)用戶訪問該公司的URL的時候,首先肯定會向DNS服務(wù)器請求該URL Hostname對應(yīng)的IP地址. DNS服務(wù)器會根據(jù)該用戶的IP,來判斷到底是返回廣州地區(qū)服務(wù)器的IP,還是北京地區(qū)服務(wù)器的IP
如果用戶當(dāng)前的IP段是在天津,DNS就會將北京服務(wù)器的IP地址返回給客戶. 如果用戶當(dāng)前IP段在深圳,DNS服務(wù)器就會返回深圳服務(wù)器的IP給用戶. 這樣極大的提高了服務(wù)器的響應(yīng)速度(試想一下如果你在北京,你家對面就是該公司北京服務(wù)器的機(jī)房.但你發(fā)現(xiàn)自己的請求卻最終被發(fā)到了廣州機(jī)房,這是多么蛋疼的一件事情)
并且,不僅僅是提高服務(wù)器的響應(yīng)效率,多機(jī)房部署對于容災(zāi)等等也是必要的(萬一廣州的機(jī)房失火了斷電了,公司可以去配置DNS服務(wù)器,不管用戶在那個IP段,都返回北京機(jī)房的IP地址,這樣就整個南方片區(qū)的請求只是變慢了而已,不至于全部癱瘓)

結(jié)語

懶得更新了.最后上一張稍微復(fù)雜點(diǎn)的架構(gòu)圖醒醒腦吧

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90917.html

相關(guān)文章

  • 切圖崽的自我修養(yǎng)—[HTTP] 常見B/S架構(gòu)簡單梳理

    摘要:前言客戶端服務(wù)器的通信會經(jīng)歷如下幾個階段客戶端輸入服務(wù)器解析階段服務(wù)器解析請求階段應(yīng)用服務(wù)器邏輯處理階段數(shù)據(jù)庫操作階段服務(wù)器模版渲染階段服務(wù)器將返回給客戶端解析階段當(dāng)客戶在瀏覽器輸入某個首先會經(jīng)歷域名解析階段,即向服務(wù)器解析目標(biāo)返回對應(yīng)目標(biāo) 前言 客戶端-服務(wù)器的通信會經(jīng)歷如下幾個階段: 客戶端輸入URL DNS服務(wù)器解析URL階段 Web服務(wù)器解析Http請求階段 應(yīng)用服務(wù)器邏輯處...

    Simon 評論0 收藏0
  • 切圖崽的自我修養(yǎng)--[BUILD]構(gòu)建工具思路梳理

    摘要:前言之前也是從過來的,到現(xiàn)在的中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個服務(wù)之類的,現(xiàn)在就來簡單梳理下思路最原始的構(gòu)建工具無非是這樣改動了某個資源文件,要手動運(yùn)行構(gòu)建命令才能重新構(gòu)建,重新構(gòu)建的時候構(gòu)建工具將所有資源 前言 之前也是從grunt/gulp/fis/過來的,到現(xiàn)在的webpack,中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個h...

    wfc_666 評論0 收藏0
  • 切圖崽的自我修養(yǎng)--[BUILD]構(gòu)建工具思路梳理

    摘要:前言之前也是從過來的,到現(xiàn)在的中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個服務(wù)之類的,現(xiàn)在就來簡單梳理下思路最原始的構(gòu)建工具無非是這樣改動了某個資源文件,要手動運(yùn)行構(gòu)建命令才能重新構(gòu)建,重新構(gòu)建的時候構(gòu)建工具將所有資源 前言 之前也是從grunt/gulp/fis/過來的,到現(xiàn)在的webpack,中間有些問題沒怎么細(xì)想,比如明明是構(gòu)建工具為什么調(diào)試總是要開啟一個h...

    elina 評論0 收藏0
  • 切圖崽的自我修養(yǎng)-[HTTP] 部署WEB服務(wù)流程梳理

    摘要:前言關(guān)鍵字域名,備案服務(wù)器解析記錄配置流程你想在云端部署兩個服務(wù),一個新聞?wù)军c(diǎn),一個游戲門戶站點(diǎn)域名也已經(jīng)想好了,是和用戶通過訪問能訪問到新聞?wù)军c(diǎn),通過訪問能訪問游戲門戶站點(diǎn)首先,你需要上阿里云上買一個一級域名按照中國的相關(guān)法律規(guī)定,域名如 前言: 關(guān)鍵字: 域名,備案, ip, 服務(wù)器, dns解析記錄 配置流程: 你想在云端部署兩個web服務(wù),一個新聞?wù)军c(diǎn),一個游戲門戶站點(diǎn). 域名...

    Barry_Ng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<