web服务器、Web中间件和Web容器的区别

web服务器、Web中间件和Web容器的区别

根据服务器的分类,大致有独立服务器(即所谓的物理服务器)、虚拟主机、虚拟专用服务器VPS、云服务器这几种。

1、物理服务器。这个就是真实看得见的,是一台独立而完整的电脑,有CPU、内存、硬盘等,就好比你自己的家,有客厅、卧室、卫生间等,你拥有独立的自主权,别人是无法使用的。

2、虚拟主机。这本身也是一台独立的服务器,不同的是用虚拟软件虚拟出多个看似独立的空间供你使用,但CPU、内存这些核心还是共用的,每一个虚拟用户的行为会影响整个服务器的性能,你也无法控制服务器。这就好比集体寝室,虽然你有自己的床位,但是卫生间是公用的,门锁由寝室管理员控制,他一锁门你就无法进寝室。这样的集体宿舍一来你没有隐私权,二来容易造成拥挤和互相干扰,三来你的控制权限很低。

3、虚拟专用服务器(VPS)。这个也是一台独立 的服务器,它是对虚拟主机的一种改进,虽然CPU、内存这些核心的东西表面上来看还是独立的,但应用更先进的虚拟技术把这些东西分成独立的小部分供你使用。这就好比集体宿舍的床位,现在给每个床位都用墙围起来分成一个个小的单位,大卫生间也进行造成,把原来数量众多的蹲位分成一个个独立的蹲位分派给每个人,供独立使用,别人无法使用。这样改造后你自己独立的空间可以随你的想法布置,你的门锁也由你自己控制,卫生间也不允许别人使用,人与人之间也不互相干扰。——虽然集体宿舍的整体空间并未发生变化,但你的自主权增强了,干你自己想干的事,比如安装操作系统(个性布置)等。

4、云服务器。这个是一个个独立服务器的集群,不是单个的物理服务器,它们之间通过网络技术连起来形成一台超级计算机,但这时候这些独立的服务器就有了具体的分工,比如有的是存储服务器,有的是计算服务器,有的是网络管理服务器,有的是内容分发服务器等等,也就是把一台物理服务器要完成的计算、处理、分发按照功能分成不同的物理器,你搞计算的只负责计算,我搞存储的只负责存储,我们之间是连通的,你处理需要数据从我这里来拿。还有,云服务器的备份功能相当强大,因为是集群。再打个比喻:把连片的所有大楼连通起来,但每栋大楼的功能不同,比如可以建一个只有宿舍的宿舍楼,再建一个只有卫生间的卫生楼,你从享有独立自主权的宿舍通过大楼之间的通道去上你自己的卫生间。但假如你的卫生间出现问题怎么办,很简单,把所有楼层都搞成活动的,通道还是那些通道,但是这个通道的尽头已经移动到另一个卫生间了,里面还保持着你原来的物品,你自己感觉不到变化。(这个比喻不太恰当,如果比成上飞机时的登机口和廊桥以及相同型号的飞机可能更容易理)综上所述,可以看出它们是递进关系,技术先进程度也是递进的。

web服务器、Web中间件和Web容器的区别

我们经常会被Web服务器、Web容器和Web中间件这三个概念搞混。因为我们常见的很多网站要么是由IIS搭建,要么是由Apache、Tomcat、Ngnix搭建。所以,我们会把他们都叫成是Web服务器,因为他们都提供了Web服务,可以让我们通过http协议访问到。但是又有很多地方会说Tomcat是Servlet容器,而又有很多地方会说Tomcat是Web中间件!那么,他们到底是Web服务器还是容器,还是Web中间件呢???

怀着这个问题,我查遍了网上所有的资料,终于把这几个概念好好的整理了一下。

Web服务器

广义的web服务器(Web Server):提供web服务的软件或主机,即Web服务器软件或装有Web服务器软件的计算机。例如:IIS、apache、nginx等。Web服务器可以处理 HTTP 协议,响应针对静态页面或图片的请求,进行页面跳转,或者把动态请求委托其它程序(它的扩展、某种语言的解释引擎(php)、Web容器)。

所以,我们可以把 IIS、Apache、Nginx、Tomcat等都称为Web服务器,因为他们都提供了web服务。

中间件(Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。

web服务器、Web中间件和Web容器的区别

而Web中间件就是提供web应用软件和系统软件连接的软件的一个总称。

我们来看看J2EE提出的背景:

1、企业级应用框架的需求:在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列统称为中间件。

2、 为了通用必须要提出规范,不然无法达到通用:在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实J2EE就是基于JAVA技术的一系列标准。

并且中间件技术已经不局限于应用服务器、数据库服务器。围绕中间件,在商业中间件及信息化市场主要存在微软阵营、Java阵营、开源阵营。