Web服务

HTTP状态码

不同范围的状态码及其对应的作用
状态码范围 作用描述
100~199 用于指定客户端应相应的某些动作
200~299 用于表示请求成功
300~399 用于已经移动的文件,并且常被包含在定位头信息中指定新的地址信息
400~499 用于指出客户端的错误
500~599 用于指出服务器的错误
生产场景常见的状态码及其对应的作用
200-OK 服务器成功返回网页,这是成功的HTTP请求返回的标准状态码
301-Moved Permanently 永久跳转,所请求的网页将永久跳转到被设定的新位置
403-Forbidden 禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端请求,此类问题一般为服务器或服务权限配置不当所致
404-Not Found 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致
500-Internet Server Error 内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求,这是一个较为笼统的报错,一般为服务器的设置或内部程序问题导致。例如:SELinux开启,而又没有为HTTP设置规则许可,客户端访问就是500
502-Bad Gateway 坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出的问题导致的
503-Service Unavaliable 服务当前不可用,可能是服务器超载或停机维护导致,或者是反向代理服务器后面没有可以提供服务的节点
504-Gateway Timeout 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定时间内返回数据给前端代理服务器

HTTP报文

HTTP请求报文格式说明
报文格式 报文信息
请求行 请求方法URL协议版本
请求头

字段名1:值1

字段名2:值2

......

例如:Accept:image/gif,image/jpeg

         Accept:Language:zh-cn

         ......

空行 空白无内容
请求报文主体 GET方法没有请求报文主体,Post方法才有
请求报文的起始请求行信息
请求方法字段示例 URL字段示例 HTTP协议版本
GET /index.html HTTP/1.1
 常见请求头部信息
Accept:image/gif,image/jpeg 媒体类型
Accept-Language:zh-cn 语言类型
Accept-Encoding:gzip、deflate 支持压缩

User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Window NT;...)

客户端类型
Host: www.etiantian.org 主机名

与请求报文相关的最常用的请求头是Content-Type和Content-Length。

请求报文主体:包括了要发送给web服务器的数据信息。请求报文主体不会应用于HTTP的GET方法,而是应用于POST方法。Post方法适用于需要客户填写表单的场合。

HTTP响应报文的一般格式
报文格式 报文信息
起始行 协议及版本号,数字状态码,状态信息.例:HTTP/1.1 200 OK
响应头部

字段名1:值1

字段名2:值2

......

例如:

Content-Type:text/html;charset=utf-8

Content-Length:78

空行 空白无内容
响应报文主体

<html>

<head><title>oldboy`s blog</title></head>

<body>

I am oldboy,mysql blog is http://oldboy.blog.51cto.om

</body>

</html>

HTTP协议请求的工作流程

1 终端客户在Web浏览器地址栏输入访问地址http://www.etiantian.org/index.html。

2 Web浏览器请求DNS服务器把域名www.etiantian.org转换成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浏览器显示访问网站的内容到屏幕上。

重要知识汇总:

1 HTTP协议位于OSI模型中的第7层应用层

2 HTTP协议重要应用是WWW服务

3 用户的上网流程、DNS解析流程

4 DNS解析获取到IP后,建立TCP连接,然后发送HTTP请求的细节和服务器响应细节

5 HTTP请求报文与HTTP响应报文

6 到达HTTP服务后,请求后端集群节点的流程为Nginx-FastCGI-PHP-(数据库、存储)

HTTP资源

互联网上的数据有很多不同的类型,Web服务器会把通过Web传输的每个对象都打上MIME类型(即MIME type)的数据格式标签。MIME(多用途因特网邮件扩展)解决在不同邮件系统之间搬移报文时存在的问题,后来HTTP也支持这个功能。

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

可通过查看Nginx的conf目录下的mime.type查看其支持的类型

URL介绍

URL(uniform resource location )资源定位符,主要有三部分:

1 协议

2 主机资源服务器IP地址或域名(端口号)

3 主机资源的具体地址,如目录,文件名

URI

URI(uniform resource identifier)统一资源标识符,URL是URI的子集。

静态网页资源

没有后台数据库、不含程序(PHP,JSP,ASP)、不可交互的网页。

特点:

1 每个页面都有一个固定的URL地址

2 静态网页保存在服务器上的文件实体,每个网页都有一个独立的文件

3 网页内容固定不变,因此容易被搜索引擎收录(有点)

4 网页没有数据库,维护成本大

5 网页交互差,在程序的功能实现方面有较大的限制

6 网页程序在用户浏览器端解析,解析率高,服务器端可以接受更多的并发访问,当客户端向服务器请求数据时,服务器直接从磁盘文件系统返回数据(不做任何解析),待客户拿到数据后,在浏览器端解析出来并展现出来;

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

动态网页资源

特点:

1 网页扩展名后缀常见:.asp/.aspx/.php/.jsp/.do/.cgi

2 网页一般以数据库技术为基础,大大降低 网站维护的工作量

3 更多功能:注册、登录、在线调查、用户管理、订单管理等等

4 动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能通过读取数据库来返回一个完整的网页内容

5 动态网页中的?在搜索引擎的收录方面存在一定的问题,搜索引擎一般不会从一个网站的数据库中访问全部的网页,或者出于技术方面的考虑,搜索引擎一般不会去抓取网址中的?后面的内容,因此在企业通过搜索引擎推广时,需要针对采用动态网页的网站做一定的技术处理(伪静态技术),以便适应搜索引擎的抓取要求。(服务端解析动态程序有PHP引擎、java容器(tomat、resin、jboss、weblogic))

动态网页架构思想:静态网页效率是动态网页效率的10-30倍,动态网页效率差、并发能力低。在高并发场景中尽可能转换成静态网页提供服务。动态转静态几乎是所有高并发网站必备的架构方案思路,也是高级架构师的职责所在。

此外,动态转静态也要根据业务需求设计,例如,对于更新频繁的网站,如果设计不好可能会产生数据不一致的情况,及用户看到的数据不是网站的最新内容,而是静态的内容。

伪静态网页

伪静态是通过某些技术(如rewrite)把动态网页的URL地址伪装成静态网页URL地址,但实质上用户访问的还是动态网页,只不过看起来是符合静态网页地址特征的,因此用户及某些搜索引擎会误认为是静态网页。

特点:

从URL地址看伪静态表面上看起来是静态内容(地址结尾待html)但这其实是通过rewrite规则实现的URL地址重写。改写后的URL地址规范、美观、有利于搜索引擎抓取、以及提升用户访问体验。因为伪静态网页还是动态网页,所以从性能上考虑,伪静态功能不但没有提升网站的性能,反而会降低网站的性能。

伪静态网页小结:

1 利用rewrite技术将动态网页伪装成静态网页(URL地址重写)

2 便于搜索引擎收录,提升用户访问量和体验

3 访问性能并没有提升,并且转换成伪静态会消耗资源,因此性能反而会下降

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

5 并发量不是很大或动态更新过于频繁时,用rewirite实现伪静态也是很不错的

6 伪静态网页的实现过程,一般由产品运营提出需求,开发和运维共同实现

后期熟悉web服务时可对以下文档进行查看

网站流量度量术语

IP

分析所有Web服务器的访问日志信息,对IP地址段去重后计数,这是IT人员的基本计算手段

在网站的每一个页面结尾,嵌入JS等统计程序代码,待用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计公司或在企业内部开发日志分析程序时使用

用第三方信任的统计工具,例如谷歌的GA

PV:

一般为了防止用户快速刷PV,很多网站会把PV的统计程序放在页面的最下面

统计:

分析Web服务器的访问日志(需要排除JS/CSS及各种图片的日志信息),只计算HTML、PHP等页面数量

在网站的每一个页面结尾,嵌入JS等统计程序代码,待用户加载网页后,访问数量即传给统计PV的服务器,这种方法一般被第三方统计公司或企业内部开发日志分析程序时使用

第三方信任的统计共计,谷歌的GA

UV: 

一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差

统计;

通过客户端HTTP请求报文分析

通过Cookie 的唯一码鉴别:存在的问题:有的客户端为保证更高级别的安全、关闭ookie功能;或者客户端设置在退出页面时自动删除Cookie,抑或经常手动删除Cookie,这样统计的话就不是很准确。

并发连接

并发的理解:

1 网站服务器每秒能接收的最大用户请求数

2 网站服务器每秒能响应的最大用户请求数

3 网站服务器在单位时间内能够处理的最大连接数

并发并不应该只是用户访问的请求数,而应是服务器同时处理的并发数,并且单位时间不一定是1秒,可能是一个连接处理周期内的连接数;

国外学者对网站并发数的计算公式说明:

Request Per Second + Simultaneous Brower connection + Thinking Time=Concurrent User

Concurrent User          网站并发用户总数

Request Per Second(RPS)    每秒请求数(吞吐量)

Simulaneous Browser connections(SBC)  并发浏览连接数

Thinking Time            平均用户思考时间

其他服务并发连接:

1 QPS(Query Per Second,每秒查询率):运维工作中DNS系统、数据库系统的查询性能通常用每秒查询率来衡量

2 IOPS:每秒进行读写操作的次数,多用于数据库场合,衡量随机访问的性能。存储端的IOPS性能和主机端的I/O是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成

WWW服务软件

静态Web服务软件:Apache、Nginx、Lighttpd

动态Web服务软件:PHP(在配合Apache解析动态程序时,用的是mod_php

5.so(module)模块;在配合Nginx解析动态程序时,常用FastCGI守护进程模式提供服务)、Tomcat、Resin、IIS

原文地址:https://www.cnblogs.com/cf532088799/p/7701905.html