国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

切圖崽的自我修養—[HTTP] 常見B/S架構簡單梳理

546669204 / 1711人閱讀

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

前言

客戶端-服務器的通信會經歷如下幾個階段:

客戶端輸入URL

DNS服務器解析URL階段

Web服務器解析Http請求階段

應用服務器邏輯處理階段

數據庫操作階段

Web服務器模版渲染階段

Web服務器將Html返回給客戶端

解析URL階段

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

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

向DNS服務器請求www.xx.yy.com對應的IP,如果DNS服務器解析不出來

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

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

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

客戶端得到對應的IP之后,就可以和web服務器進行正式的交互了

模型1

客戶端-(web+應用)服務器-數據庫

客戶端向服務器發起Http請求

服務器中的web服務層能夠處理Http請求

服務器中的應用層部分能夠調用業務邏輯,調用業務邏輯上的方法

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

模型2

客戶端-web服務器-應用服務器-數據庫

類似模型1,只是將web服務和應用服務解耦

客戶端向web服務器發起Http請求

web服務能夠處理Http請求,并且調用應用服務器暴露在外的RESTFUL接口

應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.如果有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互后,將json數據返回給web服務器

web服務器將模版+數據組合渲染成html返回給客戶端

模型3

客戶端-負載均衡器(Nginx)-中間服務器(Node)-應用服務器-數據庫

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

客戶向負載均衡器發起Http請求

負載均衡器能夠將客戶端的Http請求均勻的轉發給Node服務器集群

Node服務器接收到Http請求之后,能夠對其進行解析,并且能夠調用應用服務器暴露在外的RESTFUL接口

應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.如果有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互后,將json數據返回給Node

Node層將模版+數據組合渲染成html返回反向代理服務器

反向代理服務器將對應html返回給客戶端

注意

首先來明晰一下Nginx概念. Nginx的優點有: 作為反向代理能夠起到負載均衡的作用, 負載均衡就是能夠承受、高并發的大量的請求,然后將這些請求均勻的轉發給內部的服務器,分攤壓力. 并且反向代理能夠解決跨域引起的問題,因為Nginx,Node,應用服務器,數據庫都在內網段呀. 并且,Nginx非常擅長處理靜態資源(img,css,js,video),所以也經常作為靜態資源服務器,也叫做CDN

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

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

模型4

客戶端 - (靜態資源服務器CDN,負載均衡服務器Nginx)-中間服務器(Node)-應用服務器-數據庫

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

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

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

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

如果本地沒有找到,瀏覽器會發送請求到最低層的DNS服務器,期望得到該URL對應的IP

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

客戶端拿到對應的IP, 開始向該地址發送Http請求.

其實這個IP就是nginx服務器的IP地址

Nginx服務器接收到客戶端的Http請求后,會根據調度算法轉發給合適的空閑的Node服務器

Node服務器接收到Http請求之后,能夠對其進行解析,并且能夠調用應用服務器暴露在外的RESTFUL接口

應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.如果有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互后,將json數據返回給Node

Node層將模版+數據組合渲染成html返回反向代理服務器

Nginx服務器將對應html返回給客戶端

客戶端拿到的index.html如下


...
...
21
...

客戶端開始解析index.html, 發現了img標簽,于是得向cdn.xx.xx請求1.png

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

如果沒有緩存,于是向最低層DNS服務器發起域名解析,期望得到cdn.xx.xx對應的IP

DNS服務器收到請求,發現用戶的Http-header里請求的是cdn.xx.xx,請求的是一個CDN服務器(其實是一個分散的集群)的IP地址. 于是DNS會動態計算,這個域名對應的CDN服務器集群,哪一臺服務器離用戶更近更快更合適

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

客戶端向這個IP請求靜態資源.

注意:

為什么CDN服務能夠極大地提高用戶請求靜態資源的效率?

就是因為你請求的CDN服務器URL對應的IP是經過了DNS服務器的計算得出的最優解. 當DNS服務器收到用戶的域名解析請求的時候,如果發現用戶請求的是CDN服務器集群的域名,那么DNS會根據用戶所在IP地址計算,找到離用戶最近的/網絡狀況最好的 CDN服務器對應的IP地址,返回給客戶端.

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

結語

懶得更新了.最后上一張稍微復雜點的架構圖醒醒腦吧

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90917.html

相關文章

  • 切圖崽的自我修養—[HTTP] 常見B/S架構簡單梳理

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

    Simon 評論0 收藏0
  • 切圖崽的自我修養--[BUILD]構建工具思路梳理

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

    wfc_666 評論0 收藏0
  • 切圖崽的自我修養--[BUILD]構建工具思路梳理

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

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

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

    Barry_Ng 評論0 收藏0

發表評論

0條評論

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