web服务

2016-09-02  本文已影响57人  逗比punk

1.http协议简介

http协议,中文称超文本传输协议,是互联网中最常用的一种网络协议。http的重要应用就是WWW服务。设计http协议的最初目的就是提供一种发布和接受HTML页面的方法。

http协议是互联网上的通信协议方案之一。它有很多应用,但最流行的就是用于WEB浏览器和Web服务器之间的通信应用,即WWW应用或Web应用。

WWW,简称Web,中文译为“万维网”。它是目前互联网最受用户欢迎的信息服务形式。HTTP协议的WWW服务应用的默认服务端口为80,另外的一个加密的WWW服务应用(https)的默认服务端口为443,用于网银,支付等和钱相关的业务。当今,http服务,www服务,Web服务,三者的概念已经混淆了,在本书中也视为相同,都是指当下最常见的网站服务应用。

2.http1.0介绍

http/1.0是第一个得到广泛使用的HTTP版本。HTTP/1.0在HTTP0.9的基础上增加了HTTP请求头、支持更多的请求方法,以及对多媒体对象的处理。HTTP/1.0使得包含生动图片的Web页面和交互式表格成为可能,而这些页面和表格出事互联网为人们广泛地接受。HTTP1.0规定浏览器和服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

3.http1.1介绍

http1.1重点是修复HTTP设计中的缺陷,从可扩展性,缓存处理,带宽优化,持久连接,HOST头、错误通知、消息传递、内容协商几个方面做了相关改进。

在连接方案,http1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

在请求头方面,HTTP1.1增加更过的请求头和响应头信息,来增强HTTP功能。这使得WEB浏览器可以使用主机头名来明企鹅表示要访问服务器上的那个WEN站点,这样就可以使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。

HTTP1.1的连续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP1.1还提供了与身份认证、状态管理和Cache缓存机制等相关的请求头和响应头。

4.HTTP请求方法

在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉Web服务器端需要执行什么具体的动作,这些动作包括:获取指定Web页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文中包含的方法被称为HTTP方法。其中,常用的HTTP方法见下表:

http方法                                作用描述

GET          客户端请求指定资源信息,服务器返回指定资源

HEAD        只请求响应报文中的HTTP首部

POST        将客户端的数据提交到服务器

PUT          从客户端向服务器传送的数据取代指定的文档内容

DELETE      请求服务器删除指定的资源

MOVE        请求服务器将指定的页面移至另一个网络地址

5.http状态码

HTTP状态码是用来表示WEB服务器响应Http请求状态的数字代码。每当Web客户端向Web服务器发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。这个状态码是一个三位数字代码,作用是告知Web客户端此次的请求是否成功,活着是采取其他的动作方式。

状态代码                                                   详细描述说明

200-OK                                         服务器成功返回网页,这是成功的http请求

301-Moved Permanently             永久跳转,所有请求的网页将永久跳转到被设定的新的位置

403-forbidden                             禁止访问,这个请求时合法的,但是服务器端因为匹配了预  先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器权限配置不当所致

404-Not Found                            服务器找不到客户端请求的指定页面,可能是客户端请求可服务器不存在的资源导致

500-Internal Server Error             内部服务错误,服务器遇到了意料不到的情况,不能完成客户端的请求,这是一个较为笼统的报错,一般为服务器的设置和内部程序问题导致

502-Bad Gateway                          坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或者没有完成响应网关服务器。一般为代理服务器下面的节点出问题导致。

503-Server unavailable                服务当前不可用,可能应为服务器超载或停机维护导致,或者是代理服务器后面没有可以提供服务的节点

504-gateway timeout                   网关超时 ,一般是代理服务器请求后端服务时,后端服务没有在特定的时间内处理请求,一般是代理服务器过来导致没有在指定的时间内返回数据给代理服务器。

6.HTTP协议原理

HTTP协议属于OSI模型中的第七层应用层协议,HTTP协议的重要应用就是WWW服务应用,下面就以WWW服务应用为例介绍HTTP协议的通信原理,HTTP协议进行通信时,需要有客户端即终端用户,和服务端即Web服务器,当Web客户端向Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器之间建立一个Tcp/IP连接。整个http协议请求的工作流程原理步骤如下:

(1)终端客户在web浏览器地址栏输入访问地址www.baidu.com

(2)web浏览器请求DNS服务器把域名www.baidu.com转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程。

(3)Web浏览器将端口号(默认是80)从访问地址(URL)中解析出来

(4)Web浏览器通过解析后的IP地址及端口号与Web服务器之间建立一条TCP连接。

(5)建立TCP连接后,Web浏览器向Web服务器发送一条HTTP请求报文,请求报文内容格式及信息细节。

(6)Web服务器响应并读取浏览器的请求信息,并返回一条HTTP响应报文。

(7)Web服务器关闭http连接,关闭tcp连接,Web浏览器显示访问的内容到屏幕

7.HTTP资源

(1)媒体(MIME)类型

互联网上的数据有很多不同的数据类型,Web服务器会把通过Web传输的每个对象都打上名为MIME类型的数据格式标签。最初设计MIME是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,后来,HTTP也支持了这个功能,用它来吧数据描述并标记不能的数据内容类型。

当Web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型。当Web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,进行相应处理。

MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的字类型,中间由一条斜杠来分隔。

生产场景最常见的MIME类型


8.URL介绍

URL,统一资源定位符,也被称为网页地址,如同在网络上的门派,是因特网上标准的资源的唯一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户端和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件。服务器的地址和目录等。严格讲,每个URL都是一个URL,它标示一个互联网资源,并制定对其进行操作或取得该资源的方法。

9.URI介绍

统一资源标识符,是一个用于标识某一互联网资源名称的字符串,这个字符串在世界范围内唯一标识并定位某一个信息资源。互联网上每个可用的数据资源HTML、图片、视频等皆通过统一资源标识符进行定位。

注:URL是URI的子集。

10.静态网页资源

有关静态网页架构思想

高并发高访问量的场景,做架构优化,关键的环节:就是把动态网页转成静态网页,不直接请求数据库和动态服务器,并且可以吧静态内容推送到前端缓存中提供服务,可以提升用户体验,节约服务器和维护成本。

11.动态网页资源核心特点

a.程序在服务端解析,加上后端需要数据库支持,因此访问效率较差

b.URL地址后缀一般为asp,aspx,jsp,do,cgi,并且常伴有?,&等。

有关动态网页架构思想:

1.一般俩说,静态网页的效率是动态网页的10-30倍。

2.动态网站效率很差,并发能力也很低,高并发场景中,应尽可能转换成静态网页提供服务

3.动态转静态页要根据业务需求设计,例如,对于更新频繁的网站会产生数据不一致的情况,即用户看到的数据不会最新的内容。

4.动态转静态,高并发网站必备的架构方案,是高级架构师的职责所在。

12.伪静态网页小结

(1)利用rewrite技术将动态网页伪装成静态网页。

(2)便于搜索引擎搜录提升用户访问量以及用户体验。

(3)访问性能没有提升,转换伪静态还会消耗资源,因此性能反而会下降。

(4)尽可能将动态网页转换成真正的静态页面

(5)并发量不是很大活着动态更新过于频繁的时候,用rewrite实现伪静态也是不错的。

13.生产Web架构优化实战方案

由于静态网页程序在客户端解析,大大降低了服务端的访问压力,因此解析效率更高,在实际高并发网站架构中,我们可以考虑把用户请求的数据解析后存成静态文件放于磁盘中或放于内存中,来降低动态服务器的压力,节约企业成本,提升用户体验。

高并发网站架构从东热爱转静态不用业务产品实现的例子:

(1)门户新闻业务

新闻网站的特点是一旦发布完成,几乎不会在改动网页内容。因此,对于新闻的业务内容静态化相对比较简单

1.程序支持发布内容直接转静态。

2.运营编辑人员发布新闻网页后,后台程序立刻将动态网页生成静态文件。

3.运维人员通过发布触发生成的静态网页发布到事先搭建好的公司缓存集群服务器上,或者把静态内容同步到购买的全国所有的CDN服务器节点上,然后,再提供给用户访问浏览。

(2)视频网站业务(一旦发布成功,几乎不会改动)

优酷视频网,用户上传视频,需要经历审核-转码的过程,大概1-2个小时,审核-转码=推送(同步到全国所有CDN服务器节点)

(3)blog/bbs/sns/微博社区业务/电商(用户发布完成,可能会随时更新)

异步方式,消息中间件、消息队列

上一篇 下一篇

猜你喜欢

热点阅读