HTTP协议
访问网址基本流程
- 登录浏览器输入网址
- 网址通过DNS解析出具体IP地址
- TCP三次握手
- 浏览器向服务商的Web服务器发起一个请求,遵循http
- Web服务器响应用户请求,处理请求,返回响应包
- 浏览器通过http协议接收到响应包
- 浏览器处理响应包,显示在浏览器上
- TCP四次挥手
DNS的域名解析流程
- 本地缓存
- 本地hosts
- 用户本地到LDNS
- ldns缓存
- LDNS的hosts
- 本地的记录本
DNS的递归查询流程 - 发起求助
DNS的迭代查询
HTTP协议
HTTP全称超文本传输协议(HyperText Transfer Protocol)
http默认端口80 https默认端口443
常见的HTTP请求方法
- GET 客户端请求指定资源信息,服务器返回指定资源
- HEAD 只请求响应报文中的HTTP首部
- POST 将客户端的数据提交到服务器
- PUT 从客户端向服务器传送的数据取代指定的文档
常见的状态
200 服务器成功返回网页,这是成功的http请求
301 永久转跳,所有请求的网页将永久转跳到被设定的新的位置
403 禁止访问
404 服务器找不到客户端请求的页面
500 内部服务器错误
502 坏的网关
503 服务当前不可用,可能因为服务器超载或停机维护导致
504 网关超时
基础网页语言
html语言:决定网页都有些什么内容
CSS语言:控制网页内容的位置和特效
JS语言=javascript 控制动作
URL
用户请求,用户发起了一个URL
所谓网址就是URL
网址(URL)=域名+资源位置(URI)
静态网页
在网站设计中,纯粹的HTML格式的网页(可以包含图片,视频,JS(前段功能实现),CSS(样式)等)通常被称为“静态网页”没有后台数据库,不含后端程序(如php,jsp,asp)和可交互的网页。
静态网页常见扩展名
纯文本类的程序或文件,如htm,html,xml,shtml,js,css等
图片类文件或数据文档,如jpg,gif,png,bmp,txt,doc,ppt等
视频类流媒体文件,如mp4,swf,avi,wmv,flv等
静态网页特征
- 每个页面都有个固定的URL地址,且URL一般以.html,.shtml等常见形式为后缀,而且地址中不含有?或&等特殊符号。
- 静态网页是实实在在保存在服务器上的文件实体,每个网页都是一个独立的文件。
- 网页内容固定不变,因此,容易被搜索引擎收录(容易被用户找到)【优点】
- 没有数据库支持,在网页制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作的方式比较困难【缺点】
- 网页的交互性较差,在程序功能实现方面有较大的限制【缺点】
- 用户浏览器端解析,程序解析效率很高,由于服务端不进行解析,并且不需要读取数据库,因此服务器端可以接受更多的并发访问。当客户端向服务器请求数据时,服务器直接把数据从磁盘文件系统上返回(不做任何解析),待客户端拿到数据后,在浏览器端解析展现出来【优点】
###核心特点 - 程序在客户浏览器端解析,不读取后端数据库,因此性能和效率很高。
- 因为后端没有数据库支持,所以和用户的交互性较差,功能实现也很少。
静态网页的架构思想
在高并发,高访问量的场景下做架构优化,设计的关键环节就是把动态网页转成静态网页,而不直接请求数据库和动态服务器,并且可以把静态内容推送到前段缓存(或CDN)中提供服务,这样就可以提升用户体验,节约服务器和维护成本。
##动态网页
动态网页的URL后缀是以.asp .aspx .php .js .do .cgi等形式作为后缀的,并且一般在动态网页网址中会有标志性的符号-- ? & ,此外,在大多数情况下后端都需要有数据库支持。
动态网页特点
- 一般以数据库技术为基础,大大降低了网站维护的工作量
- 采用动态网页技术的网站可以实现更多的功能,如用户注册登录,在线调查等等
- 动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能赌气数据库返回一个完整的网页内容。
- 由于在服务端解析,因此,会消耗大量的CPU和内存,I/O等资源,并且多数还要读取数据库等服务,因此,其访问效率远不如静态网页,在服务端解析动态程序的服务常见的有PHP引擎,Java容器
- 搜索引擎不会从一个网站的数据库中访问全部网页。
动态网页的架构思想
- 一般来说,静态网页的性能效率是动态网页的10~30倍。且动态网站效率很差,并发能力也很低,在高并发场景中,应景可能转化成静态网页提供服务。动态转静态几乎是所有高并发网站必备的架构方案思路,也是高级机构师的职责所在。
- 此外,动态转静态也要根据业务需求设计,例如,对于更新频繁的网站如果设计不好就可能会产生数据不一致的情况,即用户看到的数据不是网站最新的内容,而是静态的内容。
生成环境架构优化
由于静态网页程序在客户端解析,大大降低了服务器端的访问压力,因此解析效率更高,在实际高并发网站构架中,可以考虑把用户请求的数据解析后存成静态文件放于磁盘中或放于内存中,在降低动态服务器的压力,节约企业成本,提升用户体验。
网站流量度量术语
IP(internet Protocol)
这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站时被计算的总次数。独立IP数时衡量网站流量的一个重要指标。一般一天内相同IP地址的客户端访问网站页面只被计算为一次,记录独立IP的时间可为一天或一个月,目前通用标准为“一天”。
PV(Page View)
- PV(访问量),即页面浏览器或点击量,不管客户端是不是相同,也不管IP是不是相同,用户每次访问一个网站页面都会被计算一个PV。
- PV数反应的是浏览某网站的页面数量,每刷新一次页面也算一次,因此,可以说PV数与来访用户的数量成正比,但PV数并不是真正的则免来访者数量,而是网站被访问的数量,因此一个用户可能产生多个PV。
UV(Unique Visitor)
- UV(独立访客),同一台客户端访问网站被计算为一个访客。一天内相同的客户端访问同一个网站只计算一次UV。UV一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差。
- 考虑到一台客户端可能会有多人使用的情况,因此UV实际上并不一定是独立的自然人访问。
网站对IP,PV,UV的度量
IP的度量
- 分析所有Wdb服务器的访问日志信息,对IP地址段去重后技术,这是IT人员的基本计算手段。
- 在王者的每一个页面结尾,嵌入JS等统计程序代码,待用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计公司或企业内部开发日志分析程序时使用。
- 用第三方大家必要信任的统计工具例如:谷歌的统计(GA)
IP的统计方法简单,易用,因此,成为了多数网站衡量网站流量的重要指标之一。
PV的度量
- 分析Web服务的访问日志(需要排除js,css及各种图片的日志信息),只计算HTML,PHP等页面数量
- 在网站的每一个页面结尾,嵌入JS等统计程序代码,待用户加载网页后,访问数量即传给统计PV的服务器,这种方法一般被第三方统计公司或在企业内部开发日志分析程序时使用。
- 用第三方大家比较信任的统计工具例如:谷歌的统计(GA)
PV的统计方法也很简单,易用,因此,也是多数网站衡量网站流量的重要指标之一
UV的度量
- 通过客户端HTTP请求报文分析
- 通过Cookie鉴别
并发连接
netstat -an | grep ESTAB | wc -l 统计并发连接
网站服务器在单位时间内能够处理的最大连接数
QPS(Query Per Second)每秒查询率
每秒查询率QPS是用于衡量一个特定的查询服务器在规定时间内所处理流量多少的标准。运维工作中,DNS系统以及数据库等服务的查询性能经常用每秒查询率来衡量。
IOPS
IOPS即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的I/O是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成。例如,主机写入一个最小的数据块,也要经过“发送写入请求,写入数据,收到写入确认”等三个步骤,也就是3个存储访问。
测试磁盘的存储性能
dd -if=/dev/zero of=/tmp/test01.bin bs=1K count=1000
www服务
常用来提供静态Web服务的软件
- Apach:中小型Web服务的主流,效率低
- Nginx:大型网站Web服务主流,效率高
常用来提供动态服务的软件
- PHP:大中小型网站都会使用,动态网页语言PHP程序的解析容器。可以配合Apache解析动态程序,也可以配合Nginx解析动态程序,此时的PHP常用Fastcgi守护进程模式提供服务
- tomcat:中小型青叶主流,互联网Java容器主流
- resin:大型动态Web服务主流,互联网Java容器主流
- IIS:微软的Web服务软件