<服务>关于http和企业提供web服务的一些简单架构

时间:Nov. 14, 2016 分类:

目录:

什么是http?

HTTP协议,全称为Hyper Text Transfer Protocol,中文名称为超文本传输协议。

HTTP协议简单来讲就是请求-响应。

http端口

服务 端口
http 80
https 443

通过wget看一次http请求

[root@why-1 ~]# wget www.baidu.com
--2016-11-11 23:36:26--  http://www.baidu.com/
Resolving www.baidu.com... 115.239.211.112, 115.239.210.27      #域名解析为IP地址
Connecting to www.baidu.com|115.239.211.112|:80... connected.       #连接目标80端口
HTTP request sent, awaiting response... 200 OK                  #返回一个200 ok
Length: 2381 (2.3K) [text/html]                             #长度,类型      
Saving to: “index.html”

100%[=====================================================================================================================================================>] 2,381       --.-K/s   in 0s      

2016-11-11 23:36:26 (279 MB/s) - “index.html” saved [2381/2381]

http协议的header

返回除内容之外的所有内容

[root@why-1 ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Server: bfe/1.0.8.18
Date: Fri, 11 Nov 2016 15:37:33 GMT
Content-Type: text/html
Content-Length: 277
Last-Modified: Mon, 13 Jun 2016 02:50:43 GMT
Connection: Keep-Alive
ETag: "575e1f83-115"
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache
Accept-Ranges: bytes

火狐浏览器F12可以看到网页的一些http请求

http处于应用层

1.0版本每次建立请求都要单独建立一次连接。

1.1版本一次连接可以处理多个请求,并且多个请求可以重叠执行。

服务器请求过程

  1. 先查找hosts文件
  2. 查找本地DNS缓存
  3. 查找本地DNS服务器,如果Local DNS中有地址,返回给主机IP地址
  4. 查找DNS服务器,返回给本地DNS服务器IP地址
  5. 本地DNS服务器进行缓存然后返回给主机IP地址
  6. 主机获得IP地址然后进行目标IP访问
  7. 目标IP给返回内容,一般会有一个http的200代码
  8. 浏览器获取返回内容并进行解析。

http的请求方式GET和POST

请求报文:

  1. 请求起始行:GET / HTTP/1.1
  2. 请求首部:包括客户端一些信息,请求域名等
  3. 请求实体:无

响应报文:

  1. 响应起始行:HTTP/1.1 200 OK
  2. 响应首部:包括Data,Server,Last-modified,Content-length和Content-type
  3. 响应主体:文件

静态网页和动态网页

静态网页

纯粹的html,也可以包含图片,CSS和JS(前端功能实现),没有后台数据库,不含程序(php,jsp和.net) 特点:

  1. 每个页面有一个固定的url地址
  2. 内容存在于网站服务器的文件系统上
  3. 内容稳定,容易被搜索引擎收录
  4. 没有数据库支持,制作和维护方面工作量大
  5. 交互性差,功能限制较多
  6. 在客户端解析效率高,可接受更多的并发访问

动态网页

不是纯粹的html文件,有后台数据库和一些程序。 特点:

  1. url地址多数带有?和&符等解析
  2. 文件不存在独立的网页文件,根据用户请求返回不同的网页
  3. 不容易被搜索引擎收录
  4. 以数据库为基础
  5. 可以实现各种功能 6 .会消耗大量的cpu和内存资源,在服务器端解析效率低

动态和静态并发量可能为10:1以上

伪静态

伪静态分两种,一种是动态网页伪装成静态网页,但是这样并没有提高网页的性能,反而会降低性能,消除网页中的参数,使搜索引擎收录更多的内容,达到优化网站的效果。 解决方式大致是用过rewrite规则进行url重写,不生产网页,只改变url地址

web架构优化方案

在实际高并发网站架构中,把用户请求的数据解析后存成静态文件,放于磁盘或者内存中,减轻服务器的压力,来降低动态服务器压力。

高并发网站架构从动态转静态的例子:

  1. 新闻网站业务,发布的新闻可以生成静态文件,然后把请求内容同步到全国各地的CDN服务器上,提供用户的访问
  2. 视频网站业务,用户上传视频,需要经历审核-转码-推送的过程(热点视频推送到全国CDN服务器上)
  3. 博客,论坛,电商,异步,消息中间件,消息队列

以博客为例,首先你需要发布一个博客,通过负载均衡服务器,web服务器存储到数据库中,web服务器直接返回给你你的博文,然后web服务器传递数据给消息队列,消息队列这时进行消费,存放到静态的服务器中,然后其他人对这些进行访问的时候就是通过负载均衡服务器,web服务器直接从存储服务器上获取资源,然后进行获取,如果消息队列挂掉,就需要通过web服务器去访问动态服务器。热门内容可以通过消费推送到CDN服务器上,以双十一为例,就可以北京地区的CDN达到上限后,转到河北,或者天津的CDN服务器上。

一般动态服务器并发为300 淘宝可以做到1500

web服务演变过程

web1.0是静态网页为主,主要是通过管理者进行维护和提供内容。 web2.0是动态页面为主,例如bbs,微博,blog等,以用户为中心,内容由用户来提供,相对于1.0丰富了网站的内容,不过需要更多的监管。 web3.0则是web2.0的替代物,拥有2.0的特性,增加了微内容(widget)的自由整合与有效整合,适用于多种终端平台,良好的人性化用户体验和个性化设置三大特点。

访问模式

B/S模式:浏览器/服务器(一般会由webApp构成三层架构)

优点:

  1. 无需安装服务器
  2. 可直接放在广域网上,通过一定的权限控制实现多用户访问,交互性强
  3. 无需升级客户端,只需要升级服务器

    缺点:

  4. 需要兼容各种浏览器,需要大量测试

  5. 速度和安全性需要花费大量的设计成本
  6. 通常需要刷新页面

    C/S模式:客户端/服务器,客户端类似于手机app一样自己设计开发的客户端,通信方式分两种,一种是通过客户端直接访问数据库服务器,另一种是访问socket服务器进行数据通信。

优点:

  1. 界面和操作丰富
  2. 可以保证安全性能
  3. 服务端和客户端兼容性强,响应速度快

    缺点:

  4. 适用面窄

  5. 用户群固定
  6. 维护成本高,升级需要升级客户端和服务端

流量计算

IP

IP(独立IP)独立IP数,不同IP访问网站的总次数,是网站流量分析的一个重要指标,0~24点内相同IP地址只被计算一次。例如一个公司每人都访问一次这个网站,只会有一个独立IP,用独立IP 来进行统计网站访问量不是很精确,因为一般国内都是采用NAT上网,一个独立IP后可能有数十上百个人访问。

PV

PV(访问量PageView)页面浏览量或者点击量,包括刷新都算一次,一般按着服务器在接收到请求后返回请求这样才算一个PV,不论浏览器中是否成功加载页面,一般会在页面下方嵌入一个js或者其他程序,页面展示到这个js才可以算PV。 网站可能根据提供的功能,一个用户访问会产生几个到几十个PV不等

IP和PV统计方式

分析web服务器访问日志,IP需要进行去重 在页面结尾嵌入js传个统计服务器 使用第三方统计工具

UV

UV(独立访客):独立自然人的访问,一个人访问会记一个UV,一般按着客户端,PC或者移动端计算,0~24小时内只计算一次 通过分析web访问日志(排除js,css和各种图片)

UV统计方式

  1. 网站服务器分辨,根据请求信息的IP地址,发出时间,浏览器版本,操作系统,根据这些相同这样就产生一个UV,会遇到类似公司电脑软硬件雷同,多人共用一个电脑。
  2. cookie,一般访问服务端的时候会返回给客户端或者流量器一个Cookie,一般存放在C盘中,这个Cookie会分配一个独一无二的编号,不过在浏览器关闭cookie或者cookie删除就不准确了。

并发访问:一台服务器多少人访问,pv/86400为网站每秒最高并发的最低值。

但是并发阙值是单位时间内,服务器能够同时处理的最大连接数,因为一秒时间内可以处理多个连接,有的时候一个请求需要处理好久。

查看网站排名IP和PV

http://alexa.chinaz.com/

企业提供web服务的一些简单架构

以上只代表博主的一些看法,不一定正确。