服務器軟件大盤點!


服務器到底是什麼?

服務器的硬件好理解,其實就是一臺性能穩定性擴展性等等比我們普通個人PC強的一臺機器而已,它也需要搭載操作系統,比如有專門的Windows Server或者各種Linux發行版系統。只不過咱這裏很多小夥伴可能還是處於學習階段,沒見過企業裏面真實的服務器機房,覺得好奇而已。

而一直以來,通過和小夥伴們私信交流發現,很多初學者疑惑的主要可能還是服務器軟件層面的東西。類似一些諸如:Web服務器HTTP服務器應用服務器TomcatApacheNginx……等等的概念。

通常來講,只要運行在服務器系統之上,綁定了服務器IP地址並且在某一個端口監聽用戶請求並提供服務的軟件都可以叫服務器軟件。


靜態服務 VS 動態服務

在開始下文之前,首先必須搞清楚:靜態服務動態服務這兩個基本概念。

還記得在我之前的 「個人博客搭建系列視頻」裏,我曾演示過多種博客框架的搭建,比如:HexoHugoWordPressHalo等等。像Hexo這種屬於靜態博客,而HaloWordPress這種則是動態博客。

  • 靜態服務一般返回的是靜態資源,不同用戶無論何時,只要訪問同一個服務拿到的內容都是一毛一樣的。比如不同用戶去訪問我的個人博客頁面,瀏覽器上看到的內容都一樣,因爲我的博客是靜態博客,因此提供的也就是靜態服務。

  • 而動態服務一般返回的是動態資源,比如用戶登錄一個網站後臺,比如就B站吧,肯定會根據不同的用戶身份權限信息返回給用戶不同的內容和資源,所以不同人看到的東西也不一樣,這種就可以理解爲動態服務。

所以,在我之前演示過的 「個人博客搭建系列視頻」 裏,像HexoHugoVuePress這種框架搭建的博客全部都屬於靜態博客,畢竟它們都是生成了固定HTML頁面,然後託管起來,不論誰去訪問看到的東西都一樣;而像WordPressHugo這些有着後臺應用服務的博客則屬於動態博客,它們需要應用服務器的承載,部署起來也會更加複雜。


幾個基本概念

在這裏,首先搞懂三個基本概念:

  • Web服務器

  • HTTP服務器

  • 應用服務器

1、Web服務器

我覺得這個概念是最廣的!

顧名思義,Web的功能就是提供Web化服務。那什麼又叫Web服務呢,簡單點理解比如:網站頁面服務、郵件服務、網絡下載服務等等,都可以稱作Web化服務。

總而言之,Web服務器從廣義上來說,就是響應用戶的需求並提供響應和服務。所以從這個角度來講,當下幾乎所有服務器軟件都可以稱之爲Web服務器。

2、HTTP服務器

由於當今Web服務器應用層通信協議主要就是HTTP協議,所以我們 “基本”上可以將HTTP服務器理解爲和Web服務器對等,因此在下文的闡述時這兩個概念不會作過多的糾結區分。

HTTP服務器只是把服務器上的資源通過HTTP協議傳輸給了客戶端,所以這地方我們 側重於 它對於靜態資源傳輸的支持。因此一般也理解爲靜態服務器

當然它的功能一般不止這些,實際企業裏也常做反向代理負載均衡等用途。

3、應用服務器

應用服務器,則可以理解爲一個特定應用的承載容器。一般來說它需要有運行時環境的支持。比如在Java領域比較常用的應用服務器Tomcat,它就必須要Java運行時環境的支持。

因此,應用服務器也常常被稱爲:動態服務器動態容器應用容器Web容器等等,這些概念基本都是對等的。

既然屬於動態服務器,很明顯它就能支持動態響應,比如可以根據不同用戶的請求,能夠動態的生成資源並返回。這樣一來,在客戶端,不同用戶拿到的返回內容也不一樣,不像靜態服務器,大家拿到的資源都一樣。

當然一般來說,在流量不大的場景下,應用服務器肯定也是可以做HTTP服務器來用,只不過很少有這麼去幹的。

所以接下來我們就以目前市場上常用的服務器軟件爲例,逐個對號入座,來審視一遍,大致有十幾款軟件。


Nginx

Nginx是一個典型的HTTP服務器。它原本的本職工作就是將服務端的某一個靜態內容或資源通過HTTP協議傳到客戶端,所以也就是典型的靜態服務器。

當然Nginx服務器的功能遠不止這些,現在常用的功能還包括做反向代理、負載均衡。

現實應用部署場景中,Nginx一般是與後面真正的動態應用服務器打配合,比如Tomcat,把用戶請求轉發給後面的應用服務器,從而提供靈活穩定的Web服務。因爲Nginx服務器性能好穩定性也高,能扛得住衝擊,把它放在前面去直面用戶。

當然,Nginx服務器本身也可以在諸如Lua等腳本的輔助下做二次開發,可以變成一個提供動態服務的應用服務器,這也就是大名鼎鼎的OpenResty

Nginx這玩意是純C語言寫的,代碼也是開源的,官網就能夠下載得到。性能賊高,而且內存消耗賊少,穩定性也是一等的好,所以你看市面上大量的互聯網公司在重度使用它。


Tengine

Tengine其實是基於Nginx服務器做的改造,可以看做是在Nginx的基礎上又做了加強封裝,主要就是針對大流量網站的需求,添加了很多高級功能和特性。

Tengine它是淘寶發起的Web服務器項目。它的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。

所以Tengine它和Nginx哥倆是一個性質的東西。


Apache

當然這個地方的Apache服務器具體指的就是:Apache HTTP Server,它是Apache軟件組織旗下的一個HTTP服務器項目。

Apache從功能上來說和Nginx服務器對等,也是做靜態HTTP服務器,只不過在併發、負載和資源消耗等方面的性能都比不上Nginx,所以現在選用Nginx的更多。


IIS

IIS是微軟陣營的Web服務器,只能運行於Windows系統下,而且並不是開源的。

IIS的主要身份還是一個HTTP服務器,但由於它也支持比如ASP.NET這種類似環境(畢竟都是微軟自家的東西),因此也可以兼做應用服務器,所以它可以定位爲一個具有應用服務器能力的HTTP服務器。


Tomcat

Tomcat和上面所述的Apache HTTP Server一樣,雖然都是隸屬於Apache軟件組織旗下的子項目。

但Tomcat它卻是一個典型的應用服務器軟件,或者說是Web容器動態容器應用容器,提供的是動態服務,而且它需要Java運行環境的支持。所以它和像上面講過的NginxTengineApache 不是一個性質的服務器軟件。

衆所周知,現在大名鼎鼎的Spring Boot框架就將Tomcat作爲內嵌的默認應用服務器,或者叫應用容器。

Tomcat本身其實就是一個,也僅僅是一個,支持Servlet標準的Java EE應用容器,所以主要用途也就是做Java EE應用服務器。

雖說Tomcat是一個動態應用服務器,但是在流量不大的場景裏,當然也可以直接提供HTTP服務,但一般不會這麼去用,不會讓Tomcat去直面客戶,而是像上文所述,Tomcat一般是和諸如Nginx這種高性能靜態服務器打配合,Nginx負責接收請求,然後轉發到後面真正的Tomcat容器裏去處理。


Jetty

Jetty也是大名鼎鼎的Spring Boot框架所支持的內嵌應用容器之一,只不過不是默認的而已,所以Jetty是和Tomcat是一個性質的東西。

按照Jetty官網來說,Jetty是一個開源的HTTP服務器 + 應用容器,因此可以提供靜態或者動態服務,而且提供了對:HTTP/2WebSocketJMX等等許多其他集成的支持。

如果拿Jetty和Tomcat對比,兩者在功能上幾乎是一致的,都是做動態應用容器居多,也都符合Servlet標準。只是Jetty比Tomcat要輕量一些,配置也更簡單一些而已,所以大家在用Spring Boot框架時,也別光看着Tomcat一種用,也可以切換到Jetty容器用用看。


Undertow

Undertow和上面闡述過的Tomcat、Jetty一樣,也是大名鼎鼎的Spring Boot框架所支持的內嵌應用容器之一。

Undertow是Red Hat紅帽子公司開源的一款基於Java語言編寫的應用服務器,也是下面即將要闡述的一款名爲Wildfly應用服務器的默認Web容器。

Undertow也符合Servlet標準規範,支持HTTP/2,支持WebSocket,是一款靈活的,高性能Web應用服務器。

在併發量不高的情況下 , Undertow與Tomcat、Jetty的性能區別不大 , 但是在併發量高的情況下, Undertow的性能其實是要優於Jetty與Tomcat的。


小結一下,上面介紹的不管是TomcatJettyUndertow,其實都還是屬於那種蠻輕量的應用服務器,不重,也是開源免費的,實際用得也是非常非常多的。

然後下面再介紹幾款重量級的服務器軟件,當然很多也都是商用軟件,他們的功能會更加綜合、體量更大,雖然主要功能也是做應用服務器(應用容器),但它們更多算是一種平臺級別的軟件。


JBoss/WildFly

JBoss也是一個Java EE應用服務器,可以部署動態應用,但它不僅僅是Servlet應用容器,而且還是EJB應用容器。

JBoss在早年的確是非常火的一款動態應用服務器軟件,尤其是在EJB應用時代發揮着巨大的作用。而且更廣泛意義上的JBoss已經不僅僅是一個Java應用服務器了,而是一套基於Java EE框架的全套解決方案,所以也算是一個比較重量級的應用服務平臺。

JBoss AS從版本8開始更名爲WildFly了,因此現在你如果試圖去訪問JBoss官網的話,JBoss官網已經提示遷移到wildfly.org了。

所以WildFly也是一款企業級的應用服務器,由Red Hat紅帽子公司開發維護,而且Wildfly應用服務器中的默認的Web容器就是上文闡述過的Undertow。


WebLogic

WebLogic是Oracle公司出品的用於部署企業級Java EE應用程序的應用服務器

它可謂是一個“全能型”的重量級應用服務器軟件,因爲支持Java EE的幾乎所有應用規範,包括EJBServletJMS... 等等,當然,它畢竟是一個商業軟件,有着強大的商業化和周邊組件的支持,和Tomcat這種開源免費的應用容器的體量當然不一樣。


WebSphere

WebSphere是IBM公司出品的Java EE應用服務器軟件,功能很強大,而且有IBM的開發工具相配套,當然它也是一個價格不菲的商業服務器軟件。

和WebLogic一樣,WebSphere也是一個支持更多Java EE標準和規範的綜合性應用服務器環境,可靠性高,體量更大,性能更好,功能也更全,當然使用的成本也會高很多。

喜歡就點個"在看"唄,留言、轉發朋友圈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章