1、浏览器

浏览器是什么东东,想必人人都知道,所以就不再详细介绍了。

2、服务器

同上,服务器是什么东东,想必人人都知道,所以就不再详细介绍了。但是,服务器的发展历史久远,它的发展史需要明白:从HTTP服务器到CGI应用程序再到Web服务器。

3、HTTP服务器

早期的服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。

HTTP服务器只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合使用。

4、CGI应用程序

随着网络技术的发展,逐渐出现了动态技术,但是HTTP服务器并不能够直接运行动态脚本,这个时候需要有外部的应用程序来负责执行动态脚本,然后生成HTTP文档,最后返回给HTTP服务器。

外部应用程序与HTTP服务器之间的数据互通,是通过CGI规范(Common Gateway Interface中文:通用网关接口)来实现的。简单理解,可以认为CGI是HTTP服务器和外部应用程序进行“交流”的一种约定。所以,这些外部应用程序又叫:CGI应用程序。

CGI只是一个接口规范或协议,它的实现则与具体的编程语言相关。在2000年以前,CGI通用网关接口盛行,那个时候,Perl是编写CGI的主流语言,以至于一般的CGI程序都是Perl程序。

cgi.png

5、FastCGI应用程序

以Nginx接收HTTP请求为例,Nginx接收一个HTTP请求后Fork创建出一个CGI进程,将HTTP请求带来的参数作为输入,执行完CGI程序处理后输出,最终会摧毁这个Fork出来的CGI进程,并将输出返回给客户端。这种方式虽然简单,但是需要不断地Fork出CGI进程和销毁进程。

cgi2.png

由于需要反复加载CGI程序而造成性能低下,如果CGI程序保持在内存则可以提供良好的性能、伸缩性、Fail-Over特性等。

FastCGI就是常驻型的CGI,可以一直运行。在请求到达时不会耗费时间去Fork创建一个进程来处理。FastCGI是语言无关的、可伸缩架构的CGI开放扩展,它将CGI解释器进程保持在内存中,因此获得较高的性能。

6、Web应用服务器(简称:应用服务器)

Web应用服务器既能执行HTTP协议,充当HTTP服务器的角色,也能执行执行动态的脚本,充当CGI应用程序/FastCGI应用程序的角色。

在Web应用服务器内部实现了HTTP服务器,也就不需要使用专门的HTTP服务器,当然Web应用服务器并不是为了取代HTTP服务器,实际上Web应用服务器实现的HTTP的功能非常有限,所以往往需要在Web服务器前面还要运行一个HTTP服务器作为前端的代理服务器。例如:Nginx+Tomcat

提醒:

有人把HTTP服务器和Web服务器视为同一种事物,尚且可以理解。但是,Web服务器和Web应用服务器是不同的,后者重点在于突出“应用”,也就是暗示了上文提到的CGI应用程序/FastCGI应用程序。

7、常见的HTTP服务器和Web应用服务器

常见的HTTP服务器是:Nginx服务器,Apache服务器,只能执行HTTP。

常见的Web应用服务器是:Tomcat,Tornado。Tomcat可以执行Java语言,Tornado可以执行Python语言。

标签: none

添加新评论