數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級、企業(yè)上云解決方案服務(wù)商
工單提交 實(shí)名認(rèn)證 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

Web服務(wù)器,應(yīng)用服務(wù)器,Web容器和反向代理服務(wù)器的區(qū)別

發(fā)布時間:2022-07-15 作者:admin

簡述:我們知道,不同膚色的人外貌差別很大,而雙胞胎的辨識很難。有意思的是Web服務(wù)器/Web容器/Web應(yīng)用程序服務(wù)器/反向代理有點(diǎn)像四胞胎,在網(wǎng)絡(luò)上經(jīng)常一起出現(xiàn)。本文將帶讀者對這四個相似概念如何區(qū)分。1.1.Web服務(wù)器概念與基本原理1.1.1

眾所周知,不同膚色的人外貌差異很大,雙胞胎很難識別。有趣的是,Web服務(wù)器/Web容器/Web應(yīng)用程序服務(wù)器/反向代理有點(diǎn)像四胞胎,經(jīng)常出現(xiàn)在互聯(lián)網(wǎng)上。本文將帶讀者如何區(qū)分這四個相似的概念。

1.1.Web服務(wù)器概念及基本原理1.1.1.Web服務(wù)器的歷史

1989年,互聯(lián)網(wǎng)之父Berners-Lee向其雇主CERN通過使用超文本系統(tǒng)來緩解科學(xué)家之間的信息交流,提出了一個新項(xiàng)目。這個項(xiàng)目導(dǎo)致Berners-Lee1990年編制了兩個計劃:

一個名為WorldWideWeb的瀏覽器。

后來被稱為世界上第一個網(wǎng)絡(luò)服務(wù)器CERNhttpd,它運(yùn)行在NeXTSTEP上面。從1991年到1994年,通過萬維網(wǎng)沖浪和數(shù)據(jù)交換的早期技術(shù)的簡單性和有效性有助于將其移植到許多不同的操作系統(tǒng)中,并將其用于科學(xué)組織和大學(xué),然后傳播到行業(yè)。

1994年,Berners-Lee決定建立萬維網(wǎng)聯(lián)盟(W3C),許多技術(shù)涉及通過標(biāo)準(zhǔn)化過程進(jìn)行管理(HTTP,HTML等)進(jìn)一步發(fā)展。

就是這臺服務(wù)器:

Web服務(wù)器的主要功能是存儲、處理和將網(wǎng)頁傳輸給客戶。超文本傳輸協(xié)議用于客戶端與服務(wù)器之間的通信(HTTP)進(jìn)行。最常見的交付頁面是HTML除文本內(nèi)容外,文檔還可包括圖像、樣式表和腳本。

用戶代理通常是web瀏覽器或web通過發(fā)起一個爬蟲HTTP請求獲取服務(wù)器資源,服務(wù)器返回資源或因某種原因響應(yīng)錯誤信息。該資源通常是服務(wù)器輔助存儲上的真實(shí)文件,但不一定是這樣,這取決于Web實(shí)現(xiàn)服務(wù)器。

雖然主要功能是提供內(nèi)容,但是HTTP的完整實(shí)現(xiàn)還包括從客戶端接收內(nèi)容的方式。該功能用于提交Web包括上傳文件傳文件。許多通用Web還支持使用服務(wù)器ActiveServerPages(ASP),PHP或服務(wù)器端腳本的其他腳本語言。這意味著Web單獨(dú)的文件中可以腳本化服務(wù)器的行為,而實(shí)際的服務(wù)器軟件則保持不變。通常,該函數(shù)用于動態(tài)生成HTML文檔(“即時”),而不是返回靜態(tài)文檔。前者主要用于從數(shù)據(jù)庫中檢索或修改信息。后者通常更快,更容易緩存,但不能提供動態(tài)內(nèi)容。

Web服務(wù)器不僅用于萬維網(wǎng)絡(luò)服務(wù)。它們還可以嵌入到打印機(jī)、路由器、網(wǎng)絡(luò)攝像頭等設(shè)備中,只服務(wù)于本地網(wǎng)絡(luò)。web服務(wù)器可用于監(jiān)控或管理所討論的設(shè)備系統(tǒng)的一部分。這通常意味著客戶計算機(jī)不需要安裝其他軟件,因?yàn)樗恍枰粋€網(wǎng)絡(luò)瀏覽器(包括大多數(shù)操作系統(tǒng))。

1.1.2.Web服務(wù)器工作原理

HTTP協(xié)議基于TCP用戶代理和協(xié)議中使用的應(yīng)用層協(xié)議Web通信服務(wù)器。Web服務(wù)器通常一問一答地工作:

1.用戶在用戶代理上發(fā)起資源請求,包括但不限于指定資源的唯一標(biāo)識IRI,指明動作類型(GET/POST/DELETE/PUT...)

2.用戶代理分析用戶輸入IRI并中獲取目標(biāo)域名并移交DNS如果IRI中指定某IP這一步不需要地址。

3.如果與服務(wù)器的對話尚未建立,則應(yīng)首先建立TCP連接,完成HTTP協(xié)商(確定雙方可接受的處理方式,包括協(xié)議版本、是否加密、內(nèi)容格式等。

4.用戶代理將裝請求內(nèi)容HTTP將數(shù)據(jù)包發(fā)送到服務(wù)器。

5.服務(wù)器收到資源請求,以前協(xié)商的方式解包處理。

6.包裝服務(wù)器要求的資源HTTP數(shù)據(jù)包并返回給用戶代理。

接下來,重點(diǎn)介紹服務(wù)器端的工作原理

TCP監(jiān)聽模塊

服務(wù)器監(jiān)控一個端口(默認(rèn)為8080端口,用戶可以設(shè)置其他端口),以建立與用戶代理的連接。一旦建立了連接,用戶代理的后續(xù)工作HTTP不需要進(jìn)入監(jiān)控模塊。

預(yù)處理

這里主要做三件事:1.從TCP報文中獲取HTTP請求報告。2.解密、解壓、安全處理等。根據(jù)與用戶代理的協(xié)商。3.根據(jù)服務(wù)器本身的配置進(jìn)行安全處理,建立會話狀態(tài)等。

UR路由

解析URL根據(jù)匹配規(guī)則確定用戶代理請求的資源(通常是正則表達(dá)式) 路由到靜態(tài)資源處理模塊或動態(tài)資源處理模塊。

靜態(tài)資源處理模塊

找到靜態(tài)資源,如HTML/Java/CSS文件/圖片/圖像,確定字符流或字節(jié)流,并確定相應(yīng)的內(nèi)容MIME,比如HTML生成MIME為text/html的字符流,mpeg生成視頻文件MIME為video/mpeg的字節(jié)流。

動態(tài)資源處理模塊

操作業(yè)務(wù)邏輯處理,動態(tài)決定返回的資源內(nèi)容和類型,原則上內(nèi)容和類型處理相同。

后處理

加密、壓縮、安全處理等。根據(jù)與用戶協(xié)商的協(xié)議。

資源輸出模塊

包裝處理好的內(nèi)容和類型HTTP報文,往TCP發(fā)送連接另一端的用戶代理TCP報文(內(nèi)容是HTTP報文)。

主流Web服務(wù)器

包括Apache、IIS、Nginx,還有更多的用途Tomcat,Jetty,WebSphere,WebLogic,Kerstrel等等。

1.2.Web應(yīng)用程序容器概念與基本原理

1.2.1.Web應(yīng)用程序容器的起源

Web服務(wù)器的出現(xiàn)標(biāo)志著WWW隨著時代的推移,世界變得更加平面。當(dāng)初嘗到甜頭的創(chuàng)作者開始不滿意,在互聯(lián)網(wǎng)上獲取靜態(tài)資源,于是出現(xiàn)了CGI腳本動態(tài)獲取資源。后來,網(wǎng)絡(luò)的發(fā)展方向也在增強(qiáng)Web動態(tài)獲取服務(wù)器資源的能力。

以下是具有代表性的動態(tài)技術(shù):技術(shù)術(shù)語特征CGI(CommonGatewayInterface,公共網(wǎng)關(guān)接口)可以獨(dú)立運(yùn)行,可以用多種語言開發(fā),如C,C ,VB,Perl,靈活但效率低,維護(hù)復(fù)雜PHP嵌入服務(wù)器端HTML腳本,開源,功能強(qiáng)大,擴(kuò)展性差JSP嵌入服務(wù)器端HTML腳本,跨平臺,部署前需要編譯,主要缺點(diǎn)是編寫JSP比較復(fù)雜,需要熟悉JAVA及相關(guān)技術(shù)ASP嵌入服務(wù)器端HTML腳本,開發(fā)簡單,功能強(qiáng)大,只能在windows下運(yùn)行。

隨后Web服務(wù)器向企業(yè)級應(yīng)用方向發(fā)展,業(yè)務(wù)變化迅速,迫使Web開發(fā)人員面臨著新的挑戰(zhàn):如何快速寫魯棒,可靠,滿足業(yè)務(wù)需求,順利部署?解決這一挑戰(zhàn)的有效方法之一是創(chuàng)造一個Web程序開發(fā)框架(包括操作環(huán)境,如解釋執(zhí)行JSP,WebAPI),該框架解決了魯棒性和可靠性問題,并提供了快速開發(fā)界面。換句話說,開發(fā)人員只需要專注于業(yè)務(wù)本身的實(shí)現(xiàn),如果需求更高,框架可以定制和擴(kuò)展。這個框架的另一個名字是Web應(yīng)用程序容器。

1.2.2.Web應(yīng)用程序容器的基本工作原理

一般情況下Web應(yīng)用程序容器是以下組成系統(tǒng):

注:淺藍(lán)色模塊是實(shí)現(xiàn)業(yè)務(wù)程序的主要使用模塊。

相對于Web該容器新增或強(qiáng)化了以下模塊:

分配線程池資源

容器為每個請求分配一個線程進(jìn)行處理,通常采用線程池的有效理由CPU算資源。

封裝Request上下文

一個請求對應(yīng)一個Request上下文,它主要封裝了用戶請求的主要構(gòu)成:URL,HTTP請求頭,以及基于請求頭構(gòu)建的Session,Cookie方便編程等對象。

封裝Response上下文

一個請求對應(yīng)一個Response上下文主要用于將資源返還給用戶代理。輸出流可以寫入其中,或重定向,或返回錯誤代碼等。

URL路由

在容器中,操作開發(fā)人員設(shè)置不同的路由匹配規(guī)則,如允許.HTM返回.HTML,也可自定義.xyz返回.HTML資源。更加靈活的配置可以參考JAVAMVC或者ASP.NETMVC配置方案。

動態(tài)資源處理模塊

通常這里的具體容器和開發(fā)語言都有自己的高效開發(fā)模型,比如JAVA的Servlet,ASP.NET的WebForm,MVC。

回收資源

這里將回收剛才的線程資源,除非服務(wù)器有空,否則線程通常會返回到線程池。

可以看出,Web容器本身就有作為一個Web事實(shí)上,服務(wù)器的功能通常是實(shí)現(xiàn)的Web容器功能服務(wù)器是一種Web服務(wù)器.比如Tomcat,IIS,Jetty。

主流Web容器

包括Tomcat,IIS,Jetty。

還有更多的用途W(wǎng)ebSphere,WebLogic等等。

1.3.Web應(yīng)用程序服務(wù)器概念及基本原理

在Web在服務(wù)器發(fā)展的同一時期,應(yīng)用服務(wù)器已經(jīng)存在并發(fā)展了很長一段時間。一些公司為Unix開發(fā)了Tuxedo(面向事務(wù)的中間件),TopEnd、Encina這些產(chǎn)品都是類似的IMS和CICS來源于主機(jī)應(yīng)用管理和監(jiān)控環(huán)境。這些產(chǎn)品大多是指定的“封閉的”產(chǎn)品專用通信協(xié)議連接胖客戶機(jī)(“fat”client)和服務(wù)器。這些傳統(tǒng)的應(yīng)用服務(wù)器產(chǎn)品在90年代開始嵌入HTTP一開始要用網(wǎng)關(guān)來實(shí)現(xiàn)通信功能。不久之后,它們之間的界限開始變得模糊。

同時,web服務(wù)器越來越成熟,可以處理更高的負(fù)載,更多的并發(fā)性和更好的特性;基于越來越多的應(yīng)用服務(wù)器HTTP通信功能。所有這些都導(dǎo)致了web服務(wù)器與應(yīng)用服務(wù)器的界限變窄了。

目前,“應(yīng)用服務(wù)器”和“web服務(wù)器”兩者之間的界限已經(jīng)變得模糊不清。但人們也把這兩個術(shù)語區(qū)分開來,強(qiáng)調(diào)使用。

當(dāng)有人說到“web服務(wù)器”當(dāng)你通常認(rèn)為它是HTTP為核心、webUI向?qū)?yīng)用。當(dāng)有人說到“應(yīng)用服務(wù)器”你可能會想到“高負(fù)荷、企業(yè)級特征、事務(wù)和隊列、多通道通信(HTTP與更多協(xié)議)”。但現(xiàn)在提供這些需求的產(chǎn)品基本都是一樣的。

下圖描述了一個典型的例子Web應(yīng)用服務(wù)器結(jié)構(gòu)圖:

從上圖可以看出Web包括應(yīng)用服務(wù)器Web集裝箱內(nèi)置事務(wù)、安全、集成、通信、高可用性等功能,支持企業(yè)的應(yīng)用,大大降低了重復(fù)開發(fā)量,確保了業(yè)務(wù)系統(tǒng)的快速開發(fā)和部署,也是一個Web服務(wù)器。Web可選擇使用大廠的應(yīng)用服務(wù)器WebLogic和WebSphere這種重量級產(chǎn)品也可以使用類似的和Tomcat、jetty這樣的webcontainner再加上第三方框架(spring,hibernate等等)建立自己的ApplicationServer;.NETCore可在平臺下選擇IIS,Apache,Nginx與ASP.NETCore構(gòu)建。

1.4.反向代理概念和基本原理1.4.1.反向代理的基本概念概念

反向代理是一種代理服務(wù)器。根據(jù)客戶端的要求,從后端服務(wù)器(如Web在服務(wù)器上獲取資源,然后將資源返回客戶端。與前向代理不同,前向代理將互聯(lián)網(wǎng)上獲得的資源作為媒介返回到相關(guān)客戶端,而反向代理是在服務(wù)器端(如Web服務(wù)器)用作代理,而不是客戶端。客戶端可以通過前向代理訪問許多不同的資源,而反向代理是許多客戶端可以訪問不同后端服務(wù)器上的資源,而不知道這些后端服務(wù)器的存在,并認(rèn)為所有的資源都來自反向代理服務(wù)器。

互聯(lián)網(wǎng)上的請求發(fā)送給反向代理,反向代理將請求轉(zhuǎn)發(fā)給內(nèi)網(wǎng)服務(wù)器。

反向代理的主要作用是:

加密和SSL加速

負(fù)載均衡

緩存p>

壓縮

減速上傳

安全防火墻

外網(wǎng)發(fā)布

突破互聯(lián)網(wǎng)封鎖

解決跨境問題

1.4.2.反向代理的基本工作原理

如下圖所示:

左側(cè)淺黃色功能模塊處理外網(wǎng)報文,右側(cè)灰色功能模塊處理內(nèi)網(wǎng)報文

TCP監(jiān)聽模塊

監(jiān)聽TCP請求,這里的請求是指應(yīng)用層協(xié)議的內(nèi)容(例如HTTP,FTP,EMAIL等待應(yīng)用程序?qū)訁f(xié)議)的請求。至于是否會產(chǎn)生一個單獨(dú)的線程來開始處理,這是由服務(wù)器本身決定的,最受歡迎的是先進(jìn)入消息隊列,然后異步處理,這可以大大提高代理的吞吐量和穩(wěn)定性。

與代理服務(wù)器相匹配

代理服務(wù)器根據(jù)一個表(存儲外網(wǎng))url與內(nèi)網(wǎng)服務(wù)器的對應(yīng)關(guān)系通常需要手動設(shè)置)。如果匹配,則繼續(xù)處理,否則根據(jù)外網(wǎng)協(xié)議返回錯誤信息,如HTTP協(xié)議返回404。

應(yīng)用負(fù)載均衡策略

如果相對較大的互聯(lián)網(wǎng)應(yīng)用程序需要根據(jù)自定義策略向代理服務(wù)器合理轉(zhuǎn)發(fā)報紙,以解決整體系統(tǒng)穩(wěn)定性和單點(diǎn)問題。簡單的策略是哈希分發(fā)或隨機(jī)分發(fā),通??梢杂捎脩襞渲煤瓦x擇。

預(yù)處理

這里根據(jù)協(xié)商的外網(wǎng)應(yīng)用協(xié)議進(jìn)行解密、安全、會話、解壓等處理。

新生成網(wǎng)絡(luò)報文

根據(jù)協(xié)商根據(jù)協(xié)商的內(nèi)網(wǎng)應(yīng)用協(xié)議生成網(wǎng)絡(luò)報紙,可以加密、安全、會話、壓縮等。

轉(zhuǎn)發(fā)給代理服務(wù)器

向內(nèi)網(wǎng)服務(wù)器發(fā)送新生成的網(wǎng)絡(luò)報紙(可能嗎?Web服務(wù)器,F(xiàn)tp服務(wù)器,郵件服務(wù)器)。

接受網(wǎng)絡(luò)報文

網(wǎng)絡(luò)報文接受內(nèi)網(wǎng)服務(wù)器反饋。

預(yù)處理

加密、安全、會話、壓縮等密、安全、會話、壓縮等。

資源輸出模塊

此時,生成符合外網(wǎng)應(yīng)用協(xié)議要求的報紙,并發(fā)送到外網(wǎng)連接的另一端(用戶代理)。

常用的反向代理服務(wù)器

你必須記住他們的名字:Ngnix,IIS,Apache。

1.5.總結(jié)

概念:Web服務(wù)器是提供WWW服務(wù)程序;Web容器是為開發(fā)者提供的框架;Web應(yīng)用程序服務(wù)器內(nèi)容豐富,不僅可以使用制造商通常遵循一定的工業(yè)標(biāo)準(zhǔn)和定制擴(kuò)展功能,還可以使用開源組件輕組裝;反向代理服務(wù)器在企業(yè)應(yīng)用中表現(xiàn)突出,具有解決集中安全、負(fù)載平衡等優(yōu)點(diǎn)。

關(guān)于Kerstrel是否web容器有兩種觀點(diǎn):

1.由于Kerstrel不提供編寫應(yīng)用程序的框架,因此不是容器;asp.netcore它是一個容器,因?yàn)樗峁┝碎_發(fā)和應(yīng)用的框架web應(yīng)用(MVC,WebAPI)運(yùn)行環(huán)境。

2.Kerstrel提供運(yùn)行環(huán)境。

歡迎大家提出自己的有力觀點(diǎn),幫助我們明確這一點(diǎn)asp.netcore容器概念。

點(diǎn)擊展開全文

騰佑科技(m.mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個國家版權(quán)局認(rèn)證。公司自成立以來,一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門活動

百度云服務(wù)中心
  • 熱門資訊
  • 隨便看看