关于服务器的分类,项目部署,以及请求在服务器之间的流程

本文详细介绍了服务器的种类,包括Web服务器、应用服务器、数据库服务器等,并列举了如Apache、IIS、Nginx等典型服务器软件。同时,阐述了请求在不同服务器之间的处理流程,以及Web服务器和应用服务器的区别。项目部署中,大型网站常采用服务器集群和负载均衡,而小型应用可能直接在Tomcat等服务器上部署。最后,文章简要提及HTTP协议的基本原理。
摘要由CSDN通过智能技术生成

1. 服务器

1.1 服务器定义

通俗理解: 服务器就是比我们一般电脑更高级的电脑,在各个硬件上拥有更高标准的做工,服务器内部硬件和一般电脑一样,均是由CPU、内存、主板、显卡、硬盘等组成,不过需要注意的是,服务器由于偏向处理器处理器数据能力,因此很多服务器主板均可以安装多个处理器、多条内存以及更多硬盘,因此看起主板、机箱等均比较庞大,最后服务器由于对于显示性能不是很重要,很多服务器都不需要显示器,远程管理即可,因此一般服务器均使用的是集成显卡。
定义: 服务器是一种高性能计算机,作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为网络的灵魂。通常分为文件服务器、数据库服务器和应用程序服务器。

1.1 服务器梳理

1.1.1 服务器分类

分类: 常用的有web服务器、应用服务器,数据库服务器。以及其它文件服务器,接口服务器,邮件服务器,DNS服务器,署理服务器等等。

  • web服务器:web服务器也是网络服务器,web服务器专门处理HTTP请求。注意,Web服务器只负责处理HTTP协议,只能发送静态页面的内容。
  • 应用服务器:应用程序服务器是为应用程序提供业务逻辑的。JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给应用服务器处理。
  • 数据库服务器:设备了不同的数据库软件,供应不同的数据库效力的服务器被称为数据库服务器,如Oracle数据库服务器、MySQL数据库服务器、Microsoft
    SQL Server数据库服务器等。
  • 文件服务器:文件服务器是以文件数据同享为政策。它的特点是将供多台计算机同享的文件存放于一台计算机中,这台计算机被称为文件服务器,如Windows Server 2003文件服务器。
    通俗理解,文件服务器就是专门用来上传文件和下载文件的单独独立出来,比如视频网站,他们的网站页面与视频文件所在服务器绝不是同一个 因为视频服务器的负载会很高。
  • 接口服务器:接口服务器是提供给第三方调用的服务,主要是为了我们自己的应用得安全性,所以我们只把能供给第三方调用的东西封装在接口服务器
  • 邮件服务器:邮件服务器是用户所需求的重要的网络效力之一。没有邮件服务器的网络是不完整的网络。供应邮件功用的服务器被称为邮件服务器。它们一般设备的软件包括WebEasyMail、Sendmail、Postfix、Qmail、Microsoft, Exchange等。
  • DNS服务器:供应域名效力的服务器称之为DNS服务器。通过DNS服务器,可以完结域名效力的查询、应答。
  • 署理服务器:署理服务器的功用比如网络的中转站,主要功用如下。打破本身IP访问约束,访问受限游服务器。可以通过署理IP,将自己的IP变成国外IP,然后可以访问游服务器。访问一些组织内部资源,如运用教育网IP地址段内的免费署理服务器,可以登录教育网内部的各类FTP下载学材料。
1.1.2 各个服务器都有哪些?

概述:只讲web服务器、应用服务器,数据库服务器,其余的不常用。
web服务器:

  • ①Apache
    Apache是世界使用排名的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

  • ②IIS IIS(Internet信息服务)英文Internet Information Server的缩写。它是微软公司主推的服务器。IIS的特点具有:安全性,强大,灵活。

  • ③Nginx
    Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

  • ④Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta
    项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。Tomcat技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

    注意,早期的Tomcat是一个嵌入Apache内的JSP/Servlet解释引擎Apache+Tomcat就相当于IIS+ASP。后来的Tomcat已不再嵌入Apache内,Tomcat进程独立于Apache进程运行。而且,Tomcat已经是一个独立的Servlet和JSP容器,业务逻辑层代码和界面交互层代码可以分离了。因此,有人把Tomcat叫做轻量级应用服务器
    通俗解释:tomcat既是web服务器又是应用服务器。

  • ⑤Lighttpd Lighttpd是由德国人 Jan Kneschke领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。支持FastCGI, CGI, Auth,输出压缩(output compress), URL重写, Alias等重要功能。

  • ⑥Zeus Zeus是一个运行于Unix下的非常的Web 服务器,据说性能超过Apache,是效率的Web 服务器之一。

应用服务器:

  • IBM WebSphere WebSphere Application Server 是一种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理Internet 和 Intranet Web 应用程序。 这一整套产品进行了扩展,以适应 Web应用程序服务器的需要,范围从简单到高级直到企业级。
    WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP服务器和CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。

  • BEA WebLogic BEA WebLogic Server
    是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨Internet 协作,起始点都是 BEA WebLogic Server。由于它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。
    BEA WebLogic Server 在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic Server为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。BEA WebLogic Server 的遵从 J2EE、面向服务的架构,以及丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。现在已经归于Oracle所有。

  • IPlanet Application IPlanet Application
    Server作为Sun与Netscape联盟产物的iPlanet公司生产的iPlanet Application Server
    满足最新J2EE规范的要求。它是一种完整的WEB服务器应用解决方案,它允许企业以便捷的方式,开发、部署和管理关键任务Internet应用。该解决方案集高性能、高度可伸缩和高度可用性于一体,可以支持大量的具有多种客户机类型与数据源的事务。
    iPlanetApplication Server的基本核心服务包括事务监控器、多负载平衡选项、对集群和故障转移全面的支持、集成的XML解析器和可扩展格式语言转换(XLST)引擎以及对国际化的全面支持。iPlanet ApplicationServer企业版所提供的全部特性和功能,并得益于J2EE系统构架,拥有更好的商业工作流程管理工具和应用集成功能。

  • Oracle IAS   
    Oracle iAS的英文全称是Oracle Internet ApplicationServer,即Internet应用服务器,Oracle iAS是基于Java的应用服务器,通过与Oracle数据库等产品的结合,OracleiAS能够满足Internet应用对可靠性、可用性和可伸缩性的要求。
    Oracle iAS最大的优势是其集成性和通用性,它是一个集成的、通用的中间件产品。在集成性方面,Oracle iAS将业界最流行的HTTP服务器Apache集成到系统中,集成了Apache的OracleiAS通信服务层可以处理多种客户请求,包括来自Web浏览器、胖客户端和手持设备的请求,并且根据请求的具体内容,将它们分发给不同的应用服务进行处 理。在通用性方面,Oracle iAS支持各种业界标准,包括JavaBeans、CORBA、Servlets以及XML标准等,这种对标准的全面支持使得用户很容易将在其他系统平台上开发的应用移植Oracle平台上。

  • Tomcat   
    Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可TomcatServer也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。
    Tomcat是JavaServlet2.2和JavaServerPages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。

数据库服务器:

  • 数据库服务器一般都装有数据库如oracle,mssql,mysql等,如:oracle的linux服务器

2. 请求在服务器之间的流程

简单的说:

  1. 客户发送请求,请求到你的web服务器
  2. Web服务器专门处理HTTP请求(比如IIS)
  3. Web服务器把HTTP请求交给应用服务器(例如tomcat,项目部署在tomcat上),这个项目里有你的逻辑关系然后处理完之后, 应用服务器返回一个响应给web服务器
  4. web服务器交给客户

请求在服务器流程
项目部署:
       项目部署在应用服务器上。
       举例——访问量大的网站需要做服务器负载均衡,这时候就是服务器集群, 一个应用服务器 可能就不够用了 需要部署到2个应用服务器上,但是web服务器还是只有一台 web服务器会根据这两台应用服务器负载的压力,把用户请求合理的发送到相对空闲的应用服务器上
       一般情况下,非大型企业级的应用,web服务器和应用服务器不需要分开,使用tomcat部署即可,tomcat里面既可做应用服务器,也内置了web服务器实现用户请求转发。

3. web服务器和应用服务器的区别

3.1 Web服务器(Web Server)

       Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应 (response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

       要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求 (request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。

       虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。

3.2 应用程序服务器(The Application Server)

       根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法 (或过程语言中的一个函数)一样。

       应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。

       在大多数情形下,应用程序服务器是通过组件 (component) 的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling),和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。

4. 关于web server以及HTTP原理

4.1 web server

4.1.1 什么是 Web Server?

       顾名思义,Web Server 就是提供 Web 服务的 Server。

       比如我们访问 http:// http://baidu.com,其实就是在使用百度的 Server 提供的服务。

       一般来说, Web Server 对外提供的是 HTTP 服务(也可以是其他服务),这就是为什么我们的网址都以「http://」开头。

4.1.2 如何提供 HTTP 服务?

下面是有 Node.js 写的一个最简单的 HTTP server

// 文件名 index.js
// 使用 node index.js 可运行本程序
 
var http = require('http')
 
var server = http.createServer( function (request, response){
    response.end('这是页面内容,你请求的路径是:' + request.url)
})
 
server.listen(8080, function(){
    console.log("正在监听 %s 端口", 8080);
});

你不用看懂这段程序,你只需要知道两件事情:

  1. 这段程序监听了当前机器的 8080 端口。
  2. 一旦外部访问当前机器的 8080 端口,这段程序就会返回一段文字。

这就是一个最简单的 HTTP server。

4.1.3 分类

提供 HTTP 服务的 server 分为两类。

  1. 静态文件服务器

这种服务器简单地根据访问路径,返回对应的文件。

比如用户访问 http:// 123.123.123.123:8080/a/b/c/d.html,那么这种服务器就会在网站根目录找到 a/b/c/d.html 文件,原样返回给用户。

  1. 动态内容服务器

这种服务器返回的内容一般不是文件,而是动态生成的字符串(比如从数据库中获取的字符串)。

比如用户访问 http:// http://weibo.com/home,那么这种 http://weibo.com 的服务器则会返回当前用户最新的微博消息。显然每个用户得到的内容是不一样的

4.1.4 app server和web server的区别

app服务器和web服务器的区别是什么呢?
简单来说,web服务器提供页面给浏览器,而app服务器提供客户端可以调用的接口。具体而言,我们可以说:
Web服务器处理HTTP请求,而app服务器基于多种不同的协议,处理应用程序的逻辑问题。

4.2 HTTP原理

       web程序都运行在 TCP/IP 协议上,程序之间使用 socket(套接字) 进行通信,它能够让计算机之间的通信就像写文件和读文件一样简单。 一个 tcp socket 由一个IP地址和端口号组成。

       IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”,写成10进制的形式就是我们常见的 174.136.14.108。我们通过IP地址来标识所连接的主机。

       端口号是一个范围在0-65535之间的数字,一台主机上可能同时有多个sockets,因此需要端口号进行标识。端口号0-1023 是保留给操作系统使用的,我们可以使用剩下的端口号。

       超文本传输协议(HTTP)描述了一种程序之间交换数据的方法,它非常简单易用,在一个socket连接上,客户端首先发送请求说明它需要什么,然后服务器发送响应,并在响应中包含客户端的数据。响应数据也许是从本地磁盘上复制来的,也许是程序动态生成的。传输过程如图:
请求流程

       HTTP请求就是一段文本,任何程序都能生成一个http请求,就像生成文本一样简单。这段文本需要包含以下这些部分:
在这里插入图片描述

  • HTTP method:HTTP请求方法。最常用的就是 GET(抓取数据)与POST(更新数据或者上传文件)
  • URL:通常是客户端请求的文件的路径,比如 /research/experiments.html, 但是是否响应文件都是由服务器决定的。
  • HTTP version:HTTP版本。通常是 HTTP/1.0 或 HTTP/1.1
  • header field:HTTP头的键值对,做一些基本设置,就像下面这样:
#客户端接受的数据类型
Accept: text/html
#客户端接受的语言
Accept-Language: en, fr         
If-Modified-Since: 16-May-2005
  • body: 一些与请求有关的负载数据。比如在一个网站登陆的时候提交登陆表单,那负载数据就是你的账号与密码信息。

       HTTP响应的结构类似于请求:
响应

  • status code:状态码。请求成功响应200,请求的文件找不到则响应404。

  • status phrase:对状态码的描述。

相关链接:一位关于服务器写的比较好的博主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值