服务器软件大盘点!
而一直以来,通过和小伙伴们私信交流发现,很多初学者疑惑的主要可能还是服务器软件层面的东西。类似一些诸如:Web服务器、HTTP服务器、应用服务器、Tomcat、Apache、Nginx……等等的概念。
通常来讲,只要运行在服务器系统之上,绑定了服务器IP地址并且在某一个端口监听用户请求并提供服务的软件都可以叫服务器软件。
静态服务 VS 动态服务
在开始下文之前,首先必须搞清楚:静态服务和动态服务这两个基本概念。
还记得在我之前的 「个人博客搭建系列视频」里,我曾演示过多种博客框架的搭建,比如:、、、等等。像这种属于静态博客,而,这种则是动态博客。
- 静态服务一般返回的是静态资源,不同用户无论何时,只要访问同一个服务拿到的内容都是一毛一样的。比如不同用户去访问我的个人博客页面,浏览器上看到的内容都一样,因为我的博客是静态博客,因此提供的也就是静态服务。
- 而动态服务一般返回的是动态资源,比如用户登录一个 站后台,比如就B站吧,肯定会根据不同的用户身份和权限信息返回给用户不同的内容和资源,所以不同人看到的东西也不一样,这种就可以理解为动态服务。
所以,在我之前演示过的 「个人博客搭建系列视频」 里,像、、这种框架搭建的博客全部都属于静态博客,毕竟它们都是生成了固定页面,然后托管起来,不论谁去访问看到的东西都一样;而像,这些有着后台应用服务的博客则属于动态博客,它们需要应用服务器的承载,部署起来也会更加复杂。
几个基本概念
在这里,首先搞懂三个基本概念:
- Web服务器
- HTTP服务器
- 应用服务器
1、Web服务器
我觉得这个概念是最广的!
顾名思义,Web的功能就是提供Web化服务。那什么又叫Web服务呢,简单点理解比如: 站页面服务、邮件服务、 络下载服务等等,都可以称作Web化服务。
总而言之,Web服务器从广义上来说,就是响应用户的需求并提供响应和服务。所以从这个角度来讲,当下几乎所有服务器软件都可以称之为Web服务器。
2、HTTP服务器
由于当今Web服务器应用层通信协议主要就是协议,所以我们 “基本”上可以将HTTP服务器理解为和Web服务器对等,因此在下文的阐述时这两个概念不会作过多的纠结区分。
HTTP服务器只是把服务器上的资源通过HTTP协议传输给了客户端,所以这地方我们 侧重于 它对于静态资源传输的支持。因此一般也理解为静态服务器。
当然它的功能一般不止这些,实际企业里也常做反向代理、负载均衡等用途。
3、应用服务器
应用服务器,则可以理解为一个特定应用的承载容器。一般来说它需要有运行时环境的支持。比如在Java领域比较常用的应用服务器,它就必须要Java运行时环境的支持。
因此,应用服务器也常常被称为:动态服务器、动态容器、应用容器、Web容器等等,这些概念基本都是对等的。
既然属于动态服务器,很明显它就能支持动态响应,比如可以根据不同用户的请求,能够动态的生成资源并返回。这样一来,在客户端,不同用户拿到的返回内容也不一样,不像静态服务器,大家拿到的资源都一样。
当然一般来说,在流量不大的场景下,应用服务器肯定也是可以做HTTP服务器来用,只不过很少有这么去干的。
所以接下来我们就以目前市场上常用的服务器软件为例,逐个对 入座,来审视一遍,大致有十几款软件。
Nginx
当然,Nginx服务器本身也可以在诸如等脚本的辅助下做二次开发,可以变成一个提供动态服务的应用服务器,这也就是大名鼎鼎的!
Tengine其实是基于Nginx服务器做的改造,可以看做是在Nginx的基础上又做了加强和封装,主要就是针对大流量 站的需求,添加了很多高级功能和特性。
当然这个地方的Apache服务器具体指的就是:,它是Apache软件组织旗下的一个HTTP服务器项目。
Apache从功能上来说和Nginx服务器对等,也是做静态HTTP服务器,只不过在并发、负载和资源消耗等方面的性能都比不上Nginx,所以现在选用Nginx的更多。
IIS
IIS是微软阵营的Web服务器,只能运行于Windows系统下,而且并不是开源的。
众所周知,现在大名鼎鼎的框架就将Tomcat作为内嵌的默认应用服务器,或者叫应用容器。
Tomcat本身其实就是一个,也仅仅是一个,支持Servlet标准的Java EE应用容器,所以主要用途也就是做Java EE应用服务器。
虽说Tomcat是一个动态应用服务器,但是在流量不大的场景里,当然也可以直接提供HTTP服务,但一般不会这么去用,不会让Tomcat去直面客户,而是像上文所述,Tomcat一般是和诸如Nginx这种高性能静态服务器打配合,Nginx负责接收请求,然后转发到后面真正的Tomcat容器里去处理。
Jetty
Jetty也是大名鼎鼎的Spring Boot框架所支持的内嵌应用容器之一,只不过不是默认的而已,所以Jetty是和Tomcat是一个性质的东西。
Undertow是Red Hat红帽子公司开源的一款基于Java语言编写的应用服务器,也是下面即将要阐述的一款名为应用服务器的默认Web容器。
Undertow也符合Servlet标准规范,支持,支持,是一款灵活的,高性能Web应用服务器。
在并发量不高的情况下 , Undertow与Tomcat、Jetty的性能区别不大 , 但是在并发量高的情况下, Undertow的性能其实是要优于Jetty与Tomcat的。
小结一下,上面介绍的不管是、、,其实都还是属于那种蛮轻量的应用服务器,不重,也是开源免费的,实际用得也是非常非常多的。
然后下面再介绍几款重量级的服务器软件,当然很多也都是商用软件,他们的功能会更加综合、体量更大,虽然主要功能也是做应用服务器(应用容器),但它们更多算是一种平台级别的软件。
JBoss/WildFly
JBoss也是一个Java EE应用服务器,可以部署动态应用,但它不仅仅是应用容器,而且还是应用容器。
它可谓是一个“全能型”的重量级应用服务器软件,因为支持Java EE的几乎所有应用规范,包括、、… 等等,当然,它毕竟是一个商业软件,有着强大的商业化和周边组件的支持,和Tomcat这种开源免费的应用容器的体量当然不一样。
WebSphere
WebSphere是IBM公司出品的Java EE应用服务器软件,功能很强大,而且有IBM的开发工具相配套,当然它也是一个价格不菲的商业服务器软件。

和WebLogic一样,WebSphere也是一个支持更多Java EE标准和规范的综合性应用服务器环境,可靠性高,体量更大,性能更好,功能也更全,当然使用的成本也会高很多。
每天进步一点点,Peace!
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树服务 格(istio)ServiceMesh介绍8665 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!