快捷搜索:

近观Web服务器-认知篇

在许多用户看来,一个Web网站的成败主要在于它所供给的内容和功能,殊不知支持这些内容和功能的Web办事器才是真正的幕后英雄。据统计,全天下已有500多万个网站。每个网站的后面都运行着一个Web办事器,那么什么是Web办事器?它是如何事情的?......

从C/S到Web

最早的收集系统是简单的主机/终端系统,所有的利用法度榜样都由主机完成,终端只是运行办事器上响应的法度榜样。PC期间的到来,使谋略机收集和谋略机利用获得了很大年夜的成长,因为PC价格的赓续下降和机能的赓续前进,面向终真个大年夜型主机的利用领域越来越少。分外是收集操作系统如NetWare和Windows NT的兴起,以及收集数据库系统的呈现,开辟了收集利用的新模式——C/S(Client/Server-客户/办事器)模式。C/S模式是一种两层布局的系统,第一层是在客户机上处置惩罚表示逻辑与营业逻辑,第二层则是经由过程收集运行的数据库等办事器系统。C/S模式将事务分开进行处置惩罚,实现了收集的散播式谋略,很长光阴里也赞助企业实现下场域网扶植,完善了企业内部营业治理,前进了事情效率。然而C/S模式在系统的集成与掩护、操作界面同等性、系统的扩展性等方面都存在显着的局限性,以是就象主机/终端式收集被C/S模式的收集系统所取代一样,在Internet/Intranet技巧情况里,也会呈现更新的系统模式。

基于Web技巧的Internet/Intranet近年来已经获得了广泛的利用,Intranet因此TCP/IP协议为根基、以Web为核心的企业内部网,用户经由过程低资源、简单易用的客户浏览器就能随时随地到企业的Web站点上查阅自己所需的数据。浏览器客户端操作界面的同等性避免了C/S模式客户端法度榜样的多样性,而办事器真个开放和基于标准的连接规划使企业很方便地经由过程Internet同外界联系;同时,Web信息动态的、交互式的宣布要领从根本上改变了企业的办事质量,增添了企业的商业时机。

图1 Web三层布局

在三层布局的Web技巧中,数据库不是直接向每个客户机供给办事,而是与Web办事器沟通,实现了对客户信息办事的动态性、实时性和交互性。这种功能是经由过程诸如CGI、ISAPI、NSAPI以及Java创建的办事器利用法度榜样实现的。如图1所示。

什么是Web办事器(Web Server)

Web技巧的独特之处是采纳超链接和多媒体信息。Web办事器应用超文本标记说话(HTML-HyperText Marked Language)描述收集的资本,创建网页,以供Web浏览器涉猎。HTML文档的特征是交互性。不管是一样平常文本照样图形,都能经由过程文挡中的链接连接到办事器上的其他文档,从而使客户快速地征采他们想要的资料。HTML网页还可供给表单供用户填写并经由过程办事器利用法度榜样提交给数据库。这种数据库一样平常是支持多媒体数据类型的。

Web浏览器(Web Browser)是一个用于文档检索和显示的客户利用法度榜样,并经由过程超文本传输协议HTTP(HyperText Transfer Protocol)与Web办事器相连。通用的、低资源的浏览器节省了两层布局的C/S模式客户端软件的开拓和掩护用度。今朝,盛行的Internet Explorer和Netscape Navigator除供给基础的文档检索、显示和导航特点外,还支持HTML的高档显示(如表和帧)以及ActiveX、Java、JavaScript等特点。

Web办事器是如何事情的

在许多用户看来,一个Web网站的成败主要在于它所供给的内容和功能,殊不知支持这些内容和功能的Web办事器才是真正的幕后英雄。那么,一个Web办事器是如何事情的呢?

几年前,当Web办事器刚刚呈现的时刻,它所支持的利用只是简单的HTML文件和图像的浏览,当Web办事器接到一个对Web页面的哀求,如http://www.ccidnet.com.index.html,就会经由过程URL(Uniform Resource Locator-统一资本定位器)定位到响应的宿主文件办事器上,并找到响应的文件index.html,然后从宿主文件办事器高低载该文件并经由过程HTTP协议把它传输给Web浏览器(Web Browser)。当然,这只是一个根基功能,Web办事器同Web浏览器之间的关系远非这样简单。Web利用的最紧张的一个扩展是动态内容的引入。例如,Web办事器可以根据用户输入的哀求,去直接或间接地创建Web网页,然后返回给Web浏览器。最早实现动态内容利用的措施是经由过程CGI(Comman Gateway Interface公共网关接口),它对Web办事器上法度榜样的运行及Web办事器同Web浏览器之间动态内容的传输有一个基础的定义。如图2 所示。

Web利用的另一个进展是HTTPS(HyperText Transmission Protocol, Secure安然超文本传输协议)的呈现,这种协议包管了Web办事器和Web浏览器之间的通信安然,从而使得电子买卖营业成为可能。

Web办事器同Web浏览器之间的通信是经由过程HTTP协议进行的,那么,什么是HTTP协议?简单说,HTTP协议是Web浏览器和Web办事器之间的利用层协议,它基于TCP/IP协议,是通用的、无状态的、面向工具的协议。它的感化道理包括四个步骤:

图2 CGI定义图

连接:Web浏览器与Web办事器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接成功。

哀求:Web浏览器经由过程socket向Web办事器提交哀求。

应答:Web浏览器提交哀求后,经由过程HTTP协议传送给Web办事器。Web办事器接到后,进行事务处置惩罚,处置惩罚结果又经由过程HTTP传回给Web浏览器,从而在Web浏览器上显示出所哀求的页面。

关闭连接:当应答停止后,Web浏览器与Web办事器必须断开,以包管其它Web浏览器能够与Web办事器建立连接。

这样,Web办事器的处置惩罚历程包括了一个完备的逻辑阶段:吸收连接——孕育发生静态或动态内容并把它们传回浏览器——关闭连接——吸收下一个连接,如斯进行下去。可以想象,在造访者多的环境下,办事器一定会应接不暇。办理这个问题可以借助两种技巧:多线程和多进程。Web办事器支持Unix系统的端口监视模块(一种多进程的模式)、多线程、多进程或两种技巧的混杂。

有了连接,Web办事器如何向Web浏览器供给内容呢?这里的关键是内容必须能为浏览器识别并且体现出来。这此中抉择若何显示内容的主要机制是MIME(Multiple Purpose Internet Mail Extension-多用途因特网邮件扩展)类型,MIME会奉告Web浏览器什么样的文档将被发送,而且,这种类型的鉴别并不局限于简单的图象文档和HTML文档。例如,Apache WebServer 的mine.type设置设置设备摆设摆设文件中有370种缺省的MIME类型,而且这还不是MIME类型的整个。MIME类型经由过程与文件后缀相关的类型/子类型语法来区分,例如,包孕MPEG视频内容的文件会有mpeg、mpg或mpe的后缀。

Web办事器的感化终极体现在对内容分外是动态内容的供给上,这也是Web办事器同利用办事器的根本不合,Web办事器主要认真同Web浏览器交互时供给动态孕育发生的HTML文档(除了供给HTML文档办事外,Web办事器还供给诸如XML款式的利用数据,也便是说,Web办事器不仅仅供给HTML文档,还可以在更大年夜的范围内与各类数据源建立连接,为Web浏览器供给更富厚的内容。)

实现Web动态内容的技巧有很多,第一种是CGI,它根据用户输入的哀求动态地传送HTML数据。CGI并不是开拓说话,它只是能够使用为它编写的法度榜样来实现Web办事器的一种协议。因为每一次对付动态内容的哀求都必要启动一个新的CGI法度榜样,因而会增添Web办事器的包袱,以是CGI的一个很大年夜的缺陷是轻易影响Web办事器的速率。

Microsoft ASP(Active Server Pages-动态办事器页面)技巧由嵌入在IIS里的VBScript说冥器构成,同时它还支持多种脚本说话,包括JavaScript、PerlScript以及VBScript,以COM为根基,它可以很轻易地造访其他办事器的软件组件。

PHP象JSP和ASP技巧一样是由一套放在HTML文档里的附加的代码标记组成。不合之处是它专为开拓Web网页而用,以是用它开拓的利用会比用VBScript或JSP等开拓的响应的利用更为简洁。

本日所有的Web办事器都支持Perl的加速办理规划。Apache的mod_perl免费办理规划就把Perl嵌入了Apache办事器。这样不仅前进了Perl代码的解释速率,而且因为mod_perl缓存感化,代码的履行效率也会有很大年夜的前进。Mod_perl还同Apache慎密相连,是以Perl开拓职员可以象C说话开拓职员编写底层的Apache API法度榜样一样节制Web办事器的事情。

在系统运行时,Web办事器每每要支撑大年夜量而又密集的用户点击和对动态内容的需求,以是纵然再高级的办事器设备,面对赓续增添的用户,单位光阴内所支持的造访量也是会有一个限度,尤其是对付动态内容较多的环境,由于动态内容的利用必要频繁地调用数据库的数据和利用法度榜样,会占用大年夜量的办事器资本。这时就必要在多个办事器设备之间或多个站点之间分散办事器的负载。

负载均衡的措施有很多,最简单的措施是在不合的办事器之间分配网站的内容。例如,在一个办事器上寄放静态HTML页面,另一个上面寄放图象文件,而在第三台上运行所有的CGI法度榜样。不过很显着,这种措施效率不会很高,由于它无法在主机之间实现自动的内容分配,假云云中某一方面的内容过多,仍旧会形成负载瓶颈。

DNS负载均衡(Domain Name Server-域名办事器)的基础措施是把同一站点的不合的拷贝放在相同的物理办事器上,然后,DNS办事器可以返回多个IP地址,措施是DNS办事器既可以返回域名的多个IP地址,也可以对同一个DNS哀求返回不合的IP地址。因为难以确定一个客户端对应的是哪一个IP地址,以是DNS只能供给基础的负载均衡办事。而且,因为DNS哀求留在了客户端和其它的办事器的缓存里,同一个客户端会继承造访同一个Web办事器。以是就有可能造成一大年夜批频繁上网的用户用一个IP地址,而别的较少上网的用户却造访另一个IP地址,从而造因素配不均。还有一个问题是DNS的缓存并不是持续激活的,这就可能造成当一个客户正直在应用一个Web站点时,会停止对该站点其它IP地址的造访。这会给动态网站带来问题,分外是对付必要吸收并存储客户真个数据的环境。

软、硬件的负载均衡措施与DNS负载均衡相似,但网站只宣布一个IP地址,专门设置一台机械吸收针对这个IP地址的HTTP哀求并把这些哀求分发给网站的各个办事器。这种分发平日发生在TCP/IP路由的层次上,可以透明地把这个单一的源/目标IP地址映射到一个特定的办事器上。这种技巧可以经由过程软件或硬件的要领实现。硬件要领的规划效率较高,资源也较高。由于其负载均衡功能可以在Web办事器之间均衡地分配造访哀求,以是这种要领比DNS要领要好。而且,这种要领可以赓续地监测Web办事器,假如某一个办事器呈现故障或问题,则可以把哀求动态地从新定向到功能相同的办事器上。

反向代理Reverse Proxying也是一种简便易行的法子,代理截获客户真个哀求,把哀求转发给Web办事器,再把办事器的回覆传给客户端并把内容放入自己的缓存里。这样,同样内容的造访就不必直接由办事器处置惩罚,可以在很大年夜程度上减轻办事器的包袱。

负载均衡是一种横向扩展办事器机能的措施,我们还可以经由过程前进Web办事器本身机能,即纵向的措施来前进办事器的机能。最显着的一种要领是增添办事器的资本,包括硬盘速率、内存和CPU的处置惩罚能力。CPU的处置惩罚能力对付内容办事很紧张,但主如果对动态网站起感化,由于动态网站必要运行响应的法度榜样,必要花费大年夜量的系统资本。纯真前进硬盘的存取速率或增添内存也是简单易行的措施。代理的措施前面已先容过,有一点必要弥补的是Web办事器上的数据同数据库办事器或文件办事器的数据的存储布局是不合的,数据库等的数据布局的设置是为了内容检索的方便,而Web办事器的目录布局则为了便于用户查看进行优化组织,那么代理的功能之一便是供给这种数据布局的转化。

着末一方面,很多网站的信息传输都必要SSL加密,然而建立SSL连接必要占用大年夜量的系统资本,以是还必要采纳SSL加速的技巧。有很多第三方厂商开拓的SSL加速卡产品是不错的选择,这些产品价格不贵,而且因为Web办事器的SSL密钥平日存在卡上,可以避免不法入侵者从网站上偷取SSL密钥。

因为Internet/Intranet利用的特征,Web办事器的安然性同样是一个关键的问题。Web办事器的安然性有两个层次,一是数据流的安然,防止被第三方看到或恶意改动;二是内容的安然,即只有颠末授权和经由过程认证的用户才能看和改动信息。

我们前面提到过,由“https”打头的URL使用SSL(现在所说的Tranport Level Security——TLS)算法,这种算法的基滥觞基本理是在Web办事器和Web浏览器之间建立安然的、加密的连接。这种环境下,SSL保护的是两种数据,一是发向Web办事器的数据,例如用户的姓名和信用卡密码;二是从Web办事器检索的秘密的数据,例如拍卖网站上向用户传送的价格信息等。授权和认证是也是Web办事器常用的安然技巧,实际事情时,Web办事器会向Web浏览器发送一个信息扣问用户的名字和密码并让用户填写,以此确认用户的精确身份。

经由过程前面的先容,我们已经掌握了很多关于Web办事器的常识。但我们都知道,一个Web利用只有Web办事器是不敷的,它必要同利用办事器协同事情,才能完成一个Web站点的功能,那么Web办事器同利用办事器有什么不合?简单说,Web办事器专门用来向浏览器供给HTML文档和图象数据,Web办事器上的利用法度榜样也是用来孕育发生HTML文档和图象数据的,这一点不合于利用办事器的利用法度榜样,利用办事器则只包孕利用的营业逻辑,认真处置惩罚营业利用,而不包括数据库和用户界面法度榜样。

多半环境下,利用办事器作为三层布局的中心层存在。平日,在三层布局中,其它两层分手是用户界面和数据库/数据存储。必要阐明的是,上述区分只是功能上的,跟着数据标准技巧的成长,分外是因为XML的呈现,突破了Internet上各类数据采集协讲和开拓说话之间的边界,Web办事器和利用办事器也都可以处置惩罚对方的数据,具有对方的功能。这种环境下,我们在选用办事器时可能会碰着艰苦,是选择Web办事器照样利用办事器?是不是用一个办事器办理两方面问题就可以了?实际利用中,照样应该把二者区分开来,使它们专注于自己的功能。例如,虽然利用办事器很轻易具有供给Web网页的功能,然则却很难给利用办事器设置设置设备摆设摆设所有的Web功能。把两种办事分开还可以前进两种办事器的机能,低落掩护的繁杂性,例如因为Web办事器要频繁而又大年夜量地传送HTML和图象数据,以是它们一样平常都必要较高的I/O速率,而利用办事器要对数据做大年夜量的处置惩罚,是以必要较大年夜的CPU的处置惩罚能力。别的,把二者区分开来有助于系统的稳定性,由于二者的机能指标不一样,以是在调试和设置设置设备摆设摆设的时刻要求也不一样,把它们混在一路会增添掩护难度。

您可能还会对下面的文章感兴趣: