服务器运行容器工具大盘点!
服務(wù)器到底是什么?
服務(wù)器的硬件好理解,其實(shí)就是一臺(tái)性能、穩(wěn)定性、擴(kuò)展性等等比我們普通個(gè)人PC強(qiáng)的一臺(tái)機(jī)器而已,它也需要搭載操作系統(tǒng),比如有專門的Windows Server或者各種Linux發(fā)行版系統(tǒng)。只不過咱這里很多小伙伴可能還是處于學(xué)習(xí)階段,沒見過企業(yè)里面真實(shí)的服務(wù)器機(jī)房,覺得好奇而已。
而一直以來,通過和小伙伴們私信交流發(fā)現(xiàn),很多初學(xué)者疑惑的主要可能還是服務(wù)器軟件層面的東西。類似一些諸如:Web服務(wù)器、HTTP服務(wù)器、應(yīng)用服務(wù)器、Tomcat、Apache、Nginx……等等的概念。
通常來講,只要運(yùn)行在服務(wù)器系統(tǒng)之上,綁定了服務(wù)器IP地址并且在某一個(gè)端口監(jiān)聽用戶請求并提供服務(wù)的軟件都可以叫服務(wù)器軟件。
靜態(tài)服務(wù) VS 動(dòng)態(tài)服務(wù)
在開始下文之前,首先必須搞清楚:靜態(tài)服務(wù)和動(dòng)態(tài)服務(wù)這兩個(gè)基本概念。
還記得在我之前的?「個(gè)人博客搭建系列視頻」里,我曾演示過多種博客框架的搭建,比如:Hexo、Hugo、WordPress、Halo等等。像Hexo這種屬于靜態(tài)博客,而Halo,WordPress這種則是動(dòng)態(tài)博客。
靜態(tài)服務(wù)一般返回的是靜態(tài)資源,不同用戶無論何時(shí),只要訪問同一個(gè)服務(wù)拿到的內(nèi)容都是一毛一樣的。比如不同用戶去訪問我的個(gè)人博客頁面,瀏覽器上看到的內(nèi)容都一樣,因?yàn)槲业牟┛褪庆o態(tài)博客,因此提供的也就是靜態(tài)服務(wù)。
而動(dòng)態(tài)服務(wù)一般返回的是動(dòng)態(tài)資源,比如用戶登錄一個(gè)網(wǎng)站后臺(tái),比如就B站吧,肯定會(huì)根據(jù)不同的用戶身份和權(quán)限信息返回給用戶不同的內(nèi)容和資源,所以不同人看到的東西也不一樣,這種就可以理解為動(dòng)態(tài)服務(wù)。
所以,在我之前演示過的?「個(gè)人博客搭建系列視頻」?里,像Hexo、Hugo、VuePress這種框架搭建的博客全部都屬于靜態(tài)博客,畢竟它們都是生成了固定HTML頁面,然后托管起來,不論誰去訪問看到的東西都一樣;而像WordPress,Hugo這些有著后臺(tái)應(yīng)用服務(wù)的博客則屬于動(dòng)態(tài)博客,它們需要應(yīng)用服務(wù)器的承載,部署起來也會(huì)更加復(fù)雜。
幾個(gè)基本概念
在這里,首先搞懂三個(gè)基本概念:
Web服務(wù)器
HTTP服務(wù)器
應(yīng)用服務(wù)器
1、Web服務(wù)器
我覺得這個(gè)概念是最廣的!
顧名思義,Web的功能就是提供Web化服務(wù)。那什么又叫Web服務(wù)呢,簡單點(diǎn)理解比如:網(wǎng)站頁面服務(wù)、郵件服務(wù)、網(wǎng)絡(luò)下載服務(wù)等等,都可以稱作Web化服務(wù)。
總而言之,Web服務(wù)器從廣義上來說,就是響應(yīng)用戶的需求并提供響應(yīng)和服務(wù)。所以從這個(gè)角度來講,當(dāng)下幾乎所有服務(wù)器軟件都可以稱之為Web服務(wù)器。
2、HTTP服務(wù)器
由于當(dāng)今Web服務(wù)器應(yīng)用層通信協(xié)議主要就是HTTP協(xié)議,所以我們?“基本”上可以將HTTP服務(wù)器理解為和Web服務(wù)器對等,因此在下文的闡述時(shí)這兩個(gè)概念不會(huì)作過多的糾結(jié)區(qū)分。
HTTP服務(wù)器只是把服務(wù)器上的資源通過HTTP協(xié)議傳輸給了客戶端,所以這地方我們?側(cè)重于?它對于靜態(tài)資源傳輸?shù)闹С帧R虼艘话阋怖斫鉃?strong>靜態(tài)服務(wù)器。
當(dāng)然它的功能一般不止這些,實(shí)際企業(yè)里也常做反向代理、負(fù)載均衡等用途。
3、應(yīng)用服務(wù)器
應(yīng)用服務(wù)器,則可以理解為一個(gè)特定應(yīng)用的承載容器。一般來說它需要有運(yùn)行時(shí)環(huán)境的支持。比如在Java領(lǐng)域比較常用的應(yīng)用服務(wù)器Tomcat,它就必須要Java運(yùn)行時(shí)環(huán)境的支持。
因此,應(yīng)用服務(wù)器也常常被稱為:動(dòng)態(tài)服務(wù)器、動(dòng)態(tài)容器、應(yīng)用容器、Web容器等等,這些概念基本都是對等的。
既然屬于動(dòng)態(tài)服務(wù)器,很明顯它就能支持動(dòng)態(tài)響應(yīng),比如可以根據(jù)不同用戶的請求,能夠動(dòng)態(tài)的生成資源并返回。這樣一來,在客戶端,不同用戶拿到的返回內(nèi)容也不一樣,不像靜態(tài)服務(wù)器,大家拿到的資源都一樣。
當(dāng)然一般來說,在流量不大的場景下,應(yīng)用服務(wù)器肯定也是可以做HTTP服務(wù)器來用,只不過很少有這么去干的。
所以接下來我們就以目前市場上常用的服務(wù)器軟件為例,逐個(gè)對號入座,來審視一遍,大致有十幾款軟件。
Nginx
Nginx是一個(gè)典型的HTTP服務(wù)器。它原本的本職工作就是將服務(wù)端的某一個(gè)靜態(tài)內(nèi)容或資源通過HTTP協(xié)議傳到客戶端,所以也就是典型的靜態(tài)服務(wù)器。
當(dāng)然Nginx服務(wù)器的功能遠(yuǎn)不止這些,現(xiàn)在常用的功能還包括做反向代理、負(fù)載均衡。
現(xiàn)實(shí)應(yīng)用部署場景中,Nginx一般是與后面真正的動(dòng)態(tài)應(yīng)用服務(wù)器打配合,比如Tomcat,把用戶請求轉(zhuǎn)發(fā)給后面的應(yīng)用服務(wù)器,從而提供靈活穩(wěn)定的Web服務(wù)。因?yàn)镹ginx服務(wù)器性能好,穩(wěn)定性也高,能扛得住沖擊,把它放在前面去直面用戶。
當(dāng)然,Nginx服務(wù)器本身也可以在諸如Lua等腳本的輔助下做二次開發(fā),可以變成一個(gè)提供動(dòng)態(tài)服務(wù)的應(yīng)用服務(wù)器,這也就是大名鼎鼎的OpenResty!
Nginx這玩意是純C語言寫的,代碼也是開源的,官網(wǎng)就能夠下載得到。性能賊高,而且內(nèi)存消耗賊少,穩(wěn)定性也是一等的好,所以你看市面上大量的互聯(lián)網(wǎng)公司在重度使用它。
Tengine
Tengine其實(shí)是基于Nginx服務(wù)器做的改造,可以看做是在Nginx的基礎(chǔ)上又做了加強(qiáng)和封裝,主要就是針對大流量網(wǎng)站的需求,添加了很多高級功能和特性。
Tengine它是淘寶發(fā)起的Web服務(wù)器項(xiàng)目。它的性能和穩(wěn)定性已經(jīng)在大型的網(wǎng)站如淘寶網(wǎng),天貓商城等得到了很好的檢驗(yàn)。它的最終目標(biāo)是打造一個(gè)高效、穩(wěn)定、安全、易用的Web平臺(tái)。
所以Tengine它和Nginx哥倆是一個(gè)性質(zhì)的東西。
Apache
當(dāng)然這個(gè)地方的Apache服務(wù)器具體指的就是:Apache HTTP Server,它是Apache軟件組織旗下的一個(gè)HTTP服務(wù)器項(xiàng)目。
Apache從功能上來說和Nginx服務(wù)器對等,也是做靜態(tài)HTTP服務(wù)器,只不過在并發(fā)、負(fù)載和資源消耗等方面的性能都比不上Nginx,所以現(xiàn)在選用Nginx的更多。
IIS
IIS是微軟陣營的Web服務(wù)器,只能運(yùn)行于Windows系統(tǒng)下,而且并不是開源的。
IIS的主要身份還是一個(gè)HTTP服務(wù)器,但由于它也支持比如ASP.NET這種類似環(huán)境(畢竟都是微軟自家的東西),因此也可以兼做應(yīng)用服務(wù)器,所以它可以定位為一個(gè)具有應(yīng)用服務(wù)器能力的HTTP服務(wù)器。
Tomcat
Tomcat和上面所述的Apache HTTP Server一樣,雖然都是隸屬于Apache軟件組織旗下的子項(xiàng)目。
但Tomcat它卻是一個(gè)典型的應(yīng)用服務(wù)器軟件,或者說是Web容器、動(dòng)態(tài)容器、應(yīng)用容器,提供的是動(dòng)態(tài)服務(wù),而且它需要Java運(yùn)行環(huán)境的支持。所以它和像上面講過的Nginx、Tengine、Apache?不是一個(gè)性質(zhì)的服務(wù)器軟件。
眾所周知,現(xiàn)在大名鼎鼎的Spring Boot框架就將Tomcat作為內(nèi)嵌的默認(rèn)應(yīng)用服務(wù)器,或者叫應(yīng)用容器。
Tomcat本身其實(shí)就是一個(gè),也僅僅是一個(gè),支持Servlet標(biāo)準(zhǔn)的Java EE應(yīng)用容器,所以主要用途也就是做Java EE應(yīng)用服務(wù)器。
雖說Tomcat是一個(gè)動(dòng)態(tài)應(yīng)用服務(wù)器,但是在流量不大的場景里,當(dāng)然也可以直接提供HTTP服務(wù),但一般不會(huì)這么去用,不會(huì)讓Tomcat去直面客戶,而是像上文所述,Tomcat一般是和諸如Nginx這種高性能靜態(tài)服務(wù)器打配合,Nginx負(fù)責(zé)接收請求,然后轉(zhuǎn)發(fā)到后面真正的Tomcat容器里去處理。
Jetty
Jetty也是大名鼎鼎的Spring Boot框架所支持的內(nèi)嵌應(yīng)用容器之一,只不過不是默認(rèn)的而已,所以Jetty是和Tomcat是一個(gè)性質(zhì)的東西。
按照J(rèn)etty官網(wǎng)來說,Jetty是一個(gè)開源的HTTP服務(wù)器 + 應(yīng)用容器,因此可以提供靜態(tài)或者動(dòng)態(tài)服務(wù),而且提供了對:HTTP/2,WebSocket,JMX等等許多其他集成的支持。
如果拿Jetty和Tomcat對比,兩者在功能上幾乎是一致的,都是做動(dòng)態(tài)應(yīng)用容器居多,也都符合Servlet標(biāo)準(zhǔn)。只是Jetty比Tomcat要輕量一些,配置也更簡單一些而已,所以大家在用Spring Boot框架時(shí),也別光可著Tomcat一種用,也可以切換到Jetty容器用用看。
Undertow
Undertow和上面闡述過的Tomcat、Jetty一樣,也是大名鼎鼎的Spring Boot框架所支持的內(nèi)嵌應(yīng)用容器之一。
Undertow是Red Hat紅帽子公司開源的一款基于Java語言編寫的應(yīng)用服務(wù)器,也是下面即將要闡述的一款名為Wildfly應(yīng)用服務(wù)器的默認(rèn)Web容器。
Undertow也符合Servlet標(biāo)準(zhǔn)規(guī)范,支持HTTP/2,支持WebSocket,是一款靈活的,高性能Web應(yīng)用服務(wù)器。
在并發(fā)量不高的情況下 , Undertow與Tomcat、Jetty的性能區(qū)別不大 , 但是在并發(fā)量高的情況下, Undertow的性能其實(shí)是要優(yōu)于Jetty與Tomcat的。
小結(jié)一下,上面介紹的不管是Tomcat、Jetty、Undertow,其實(shí)都還是屬于那種蠻輕量的應(yīng)用服務(wù)器,不重,也是開源免費(fèi)的,實(shí)際用得也是非常非常多的。
然后下面再介紹幾款重量級的服務(wù)器軟件,當(dāng)然很多也都是商用軟件,他們的功能會(huì)更加綜合、體量更大,雖然主要功能也是做應(yīng)用服務(wù)器(應(yīng)用容器),但它們更多算是一種平臺(tái)級別的軟件。
JBoss/WildFly
JBoss也是一個(gè)Java EE應(yīng)用服務(wù)器,可以部署動(dòng)態(tài)應(yīng)用,但它不僅僅是Servlet應(yīng)用容器,而且還是EJB應(yīng)用容器。
JBoss在早年的確是非常火的一款動(dòng)態(tài)應(yīng)用服務(wù)器軟件,尤其是在EJB應(yīng)用時(shí)代發(fā)揮著巨大的作用。而且更廣泛意義上的JBoss已經(jīng)不僅僅是一個(gè)Java應(yīng)用服務(wù)器了,而是一套基于Java EE框架的全套解決方案,所以也算是一個(gè)比較重量級的應(yīng)用服務(wù)平臺(tái)。
JBoss AS從版本8開始更名為WildFly了,因此現(xiàn)在你如果試圖去訪問JBoss官網(wǎng)的話,JBoss官網(wǎng)已經(jīng)提示遷移到wildfly.org了。
所以WildFly也是一款企業(yè)級的應(yīng)用服務(wù)器,由Red Hat紅帽子公司開發(fā)維護(hù),而且Wildfly應(yīng)用服務(wù)器中的默認(rèn)的Web容器就是上文闡述過的Undertow。
WebLogic
WebLogic是Oracle公司出品的用于部署企業(yè)級Java EE應(yīng)用程序的應(yīng)用服務(wù)器。
它可謂是一個(gè)“全能型”的重量級應(yīng)用服務(wù)器軟件,因?yàn)橹С諮ava EE的幾乎所有應(yīng)用規(guī)范,包括EJB、Servlet、JMS... 等等,當(dāng)然,它畢竟是一個(gè)商業(yè)軟件,有著強(qiáng)大的商業(yè)化和周邊組件的支持,和Tomcat這種開源免費(fèi)的應(yīng)用容器的體量當(dāng)然不一樣。
WebSphere
WebSphere是IBM公司出品的Java EE應(yīng)用服務(wù)器軟件,功能很強(qiáng)大,而且有IBM的開發(fā)工具相配套,當(dāng)然它也是一個(gè)價(jià)格不菲的商業(yè)服務(wù)器軟件。
和WebLogic一樣,WebSphere也是一個(gè)支持更多Java EE標(biāo)準(zhǔn)和規(guī)范的綜合性應(yīng)用服務(wù)器環(huán)境,可靠性高,體量更大,性能更好,功能也更全,當(dāng)然使用的成本也會(huì)高很多。
每天進(jìn)步一點(diǎn)點(diǎn),Peace!
除了負(fù)載均衡,Nginx 還能干啥?
想快速擁有個(gè)人網(wǎng)站?來試試這個(gè)...
沒用過這些IDEA插件?怪不得寫代碼頭疼
總結(jié)
以上是生活随笔為你收集整理的服务器运行容器工具大盘点!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文带你轻松搞懂事务隔离级别(图文详解)
- 下一篇: 史上最详细nodejs版本管理器nvm的