服务器的硬件好理解,其实就是一台性能、稳定性、扩展性等等比咱们普通我的PC强的一台机器而已,它也须要搭载操做系统,好比有专门的Windows Server
或者各类Linux
发行版系统。只不过咱这里不少小伙伴可能仍是处于学习阶段,没见过企业里面真实的服务器机房,以为好奇而已。浏览器
而一直以来,经过和小伙伴们私信交流发现,不少初学者疑惑的主要可能仍是服务器软件层面的东西。相似一些诸如:Web服务器、HTTP服务器、应用服务器、Tomcat、Apache、Nginx……等等的概念。安全
一般来说,只要运行在服务器系统之上,绑定了服务器IP地址而且在某一个端口监听用户请求并提供服务的软件均可以叫服务器软件。服务器
在开始下文以前,首先必须搞清楚:静态服务和动态服务这两个基本概念。网络
还记得在我以前的 「我的博客搭建系列视频」里,我曾演示过多种博客框架的搭建,好比:Hexo
、Hugo
、WordPress
、Halo
等等。像Hexo
这种属于静态博客,而Halo
,WordPress
这种则是动态博客。并发
因此,在我以前演示过的 「我的博客搭建系列视频」 里,像Hexo
、Hugo
、VuePress
这种框架搭建的博客所有都属于静态博客,毕竟它们都是生成了固定HTML
页面,而后托管起来,不论谁去访问看到的东西都同样;而像WordPress
,Halo
这些有着后台应用服务的博客则属于动态博客,它们须要应用服务器的承载,部署起来也会更加复杂。负载均衡
在这里,首先搞懂三个基本概念:框架
一、Web服务器工具
我以为这个概念是最广的!性能
顾名思义,Web的功能就是提供Web化服务。那什么又叫Web服务呢,简单点理解好比:网站页面服务、邮件服务、网络下载服务等等,均可以称做Web化服务。学习
总而言之,Web服务器从广义上来讲,就是响应用户的需求并提供响应和服务。因此从这个角度来说,当下几乎全部服务器软件均可以称之为Web服务器。
二、HTTP服务器
因为当今Web服务器应用层通讯协议主要就是HTTP
协议,因此咱们 “基本”上能够将HTTP服务器理解为和Web服务器对等,所以在下文的阐述时这两个概念不会做过多的纠结区分。
HTTP服务器只是把服务器上的资源经过HTTP协议传输给了客户端,因此这地方咱们 侧重于 它对于静态资源传输的支持。所以通常也理解为静态服务器。
固然它的功能通常不止这些,实际企业里也常作反向代理、负载均衡等用途。
三、应用服务器
应用服务器,则能够理解为一个特定应用的承载容器。通常来讲它须要有运行时环境的支持。好比在Java领域比较经常使用的应用服务器Tomcat
,它就必需要Java运行时环境的支持。
所以,应用服务器也经常被称为:动态服务器、动态容器、应用容器、Web容器等等,这些概念基本都是对等的。
既然属于动态服务器,很明显它就能支持动态响应,好比能够根据不一样用户的请求,可以动态的生成资源并返回。这样一来,在客户端,不一样用户拿到的返回内容也不同,不像静态服务器,你们拿到的资源都同样。
固然通常来讲,在流量不大的场景下,应用服务器确定也是能够作HTTP服务器来用,只不过不多有这么去干的。
因此接下来咱们就以目前市场上经常使用的服务器软件为例,逐个对号入座,来审视一遍,大体有十几款软件。
Nginx是一个典型的HTTP服务器。它本来的本职工做就是将服务端的某一个静态内容或资源经过HTTP协议传到客户端,因此也就是典型的静态服务器。
固然Nginx服务器的功能远不止这些,如今经常使用的功能还包括作反向代理、负载均衡。
现实应用部署场景中,Nginx通常是与后面真正的动态应用服务器打配合,好比Tomcat
,把用户请求转发给后面的应用服务器,从而提供灵活稳定的Web服务。由于Nginx服务器性能好,稳定性也高,能扛得住冲击,把它放在前面去直面用户。
固然,Nginx服务器自己也能够在诸如Lua
等脚本的辅助下作二次开发,能够变成一个提供动态服务的应用服务器,这也就是大名鼎鼎的OpenResty
!
Nginx这玩意是纯C
语言写的,代码也是开源的,官网就可以下载获得。性能贼高,并且内存消耗贼少,稳定性也是一等的好,因此你看市面上大量的互联网公司在重度使用它。
Tengine实际上是基于Nginx服务器作的改造,能够看作是在Nginx的基础上又作了增强和封装,主要就是针对大流量网站的需求,添加了不少高级功能和特性。
Tengine它是淘宝发起的Web服务器项目。它的性能和稳定性已经在大型的网站如淘宝网,天猫商城等获得了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
因此Tengine它和Nginx哥俩是一个性质的东西。
固然这个地方的Apache服务器具体指的就是:Apache HTTP Server
,它是Apache软件组织旗下的一个HTTP服务器项目。
Apache从功能上来讲和Nginx服务器对等,也是作静态HTTP服务器,只不过在并发、负载和资源消耗等方面的性能都比不上Nginx,因此如今选用Nginx的更多。
IIS是微软阵营的Web服务器,只能运行于Windows系统下,并且并非开源的。
[图片上传失败...(image-c78832-1585711220439)]
IIS的主要身份仍是一个HTTP服务器,但因为它也支持好比ASP.NET
这种相似环境(毕竟都是微软自家的东西),所以也能够兼作应用服务器,因此它能够定位为一个具备应用服务器能力的HTTP服务器。
Tomcat
和上面所述的Apache HTTP Server
同样,虽然都是隶属于Apache软件组织旗下的子项目。
但Tomcat它倒是一个典型的应用服务器软件,或者说是Web容器、动态容器、应用容器,提供的是动态服务,并且它须要Java运行环境的支持。因此它和像上面讲过的Nginx
、Tengine
、Apache
不是一个性质的服务器软件。
众所周知,如今大名鼎鼎的Spring Boot
框架就将Tomcat做为内嵌的默认应用服务器,或者叫应用容器。
Tomcat自己其实就是一个,也仅仅是一个,支持Servlet标准的Java EE应用容器,因此主要用途也就是作Java EE应用服务器。
虽然说Tomcat是一个动态应用服务器,可是在流量不大的场景里,固然也能够直接提供HTTP服务,但通常不会这么去用,不会让Tomcat去直面客户,而是像上文所述,Tomcat通常是和诸如Nginx这种高性能静态服务器打配合,Nginx负责接收请求,而后转发到后面真正的Tomcat容器里去处理。
Jetty也是大名鼎鼎的Spring Boot框架所支持的内嵌应用容器之一,只不过不是默认的而已,因此Jetty是和Tomcat是一个性质的东西。
按照Jetty官网来讲,Jetty是一个开源的HTTP服务器 + 应用容器,所以能够提供静态或者动态服务,并且提供了对:HTTP/2
,WebSocket
,JMX
等等许多其余集成的支持。
若是拿Jetty和Tomcat对比,二者在功能上几乎是一致的,都是作动态应用容器居多,也都符合Servlet标准。只是Jetty比Tomcat要轻量一些,配置也更简单一些而已,因此你们在用Spring Boot框架时,也别光可着Tomcat一种用,也能够切换到Jetty容器用用看。
Undertow和上面阐述过的Tomcat、Jetty同样,也是大名鼎鼎的Spring Boot框架所支持的内嵌应用容器之一。
Undertow是Red Hat红帽子公司开源的一款基于Java语言编写的应用服务器,也是下面即将要阐述的一款名为Wildfly
应用服务器的默认Web容器。
Undertow也符合Servlet标准规范,支持HTTP/2
,支持WebSocket
,是一款灵活的,高性能Web应用服务器。
在并发量不高的状况下 , Undertow与Tomcat、Jetty的性能区别不大 , 可是在并发量高的状况下, Undertow的性能实际上是要优于Jetty与Tomcat的。
小结一下,上面介绍的无论是Tomcat
、Jetty
、Undertow
,其实都仍是属于那种蛮轻量的应用服务器,不重,也是开源免费的,实际用得也是很是很是多的。
而后下面再介绍几款重量级的服务器软件,固然不少也都是商用软件,他们的功能会更加综合、体量更大,虽然主要功能也是作应用服务器(应用容器),但它们更多算是一种平台级别的软件。
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是Oracle公司出品的用于部署企业级Java EE应用程序的应用服务器。
它可谓是一个“全能型”的重量级应用服务器软件,由于支持Java EE的几乎全部应用规范,包括EJB
、Servlet
、JMS
... 等等,固然,它毕竟是一个商业软件,有着强大的商业化和周边组件的支持,和Tomcat这种开源免费的应用容器的体量固然不同。
WebSphere是IBM公司出品的Java EE应用服务器软件,功能很强大,并且有IBM的开发工具相配套,固然它也是一个价格不菲的商业服务器软件。
和WebLogic同样,WebSphere也是一个支持更多Java EE标准和规范的综合性应用服务器环境,可靠性高,体量更大,性能更好,功能也更全,固然使用的成本也会高不少。