day 43集群架构-静态、动态、伪静态网页、IP、PV、UV。
什么是静态网页资源:
开发者编写的是什么,它显示的就是什么、一旦编写完成,就不会有任何改变。
静态网页资源特点:
1、图片、附件、视频,前端页面语言.html, .js, .css,等。
2、客户端解析(效率更高),而不是在服务端解析。#性能优化关键
饭店: 采购--炒菜/做饭---端上来---吃到。
饭店做, 而不是客户做, 叫做服务端解析。
3、后端没有数据库。
4、地址里没有特殊符号,例如 && ?等。
5、发布网页一旦完成,就不会改变,除非人工修改。
6、存储地点,存储于NFS这样的服务里(共享存储)
7、内容来源(核心:用户上传:图片和视频等;程序员开发的代码(.html, .js, .css,))
静态网页资源的对应程序及资源文件的常见扩展名为:
1)纯文本类程序或文件,如htm,html, xml, shtml,js,tss等。
2)图片类文件或数据文档,如jpg,gif, png, bmp,txt, doc. ppt等。
3)视频类流媒体文件,如mp4, swf, avi, wmv,flv等。
静态网页语言:
常见的静态网页语言有html、 js, css. xml、 shtml等.
回顾一下静态网页的核心特点,如下:
1)程序在客户浏览器端解析,不读取后端数据库,因此性能和效率很高。
2)因为后端没有数据库的支持,所以和用户的交互性较差,功能实现也很少。
有关静态网页的架构思想:
在高并发、高访问量的场景下做架构优化,涉及的关键环节就是把动态网页转成静态网页,
而不直接请求数据库和动态服务器,并且可以把静态内容推送到前端缓存(或CDN)中提供服务,
这样就可以提升用户体验,节约服务器和维护成本
动态网页资源
1.动态网页资源介绍:
所谓的动态网页是与静态网页相对而言的,
也就是说,动态网页的URL后缀不是.htm、.html、.shtml、.xml、.js、
.css等静态网页的常见后缀扩展名形式,
而是以.asp、 .aspx、.php、.js、.do,.cgi等形式作为后缀的,
并且一般在动态网页网址中会有标志性的符号--"? , &" ,
此外,在大多数情况下后端都需要有数据库支持等。
1)网页扩展名后缀常见为:
.asp、.aspx、.php、.jsp、.do、.cgi等。
2)网页一般以数据库技术为基础,大大降低了网站维护的工作量。
3)采用动态网页技术的网站可以实现更多的功能,
如用户注册、用户登录、在线调查.投票、用户管理、订单管理、发博文等等。
4)动态网页并不是独立存在于服务器上的网页文件,
当用户请求服务器上的动态程序时,服务器解析这些程序并可能读取数据库返回一个完整的网页内容。
5)动态网页中的“?”在搜索引擎的收录方面存在一定的问题,
搜索引擎一般不会从一个网站的数据库中访问全部网页,
或者出于技术等方面的考虑,搜索蜘蛛一般不会去抓取网址中“?”后面的内容,
因此在企业通过搜索引擎进行推广时,需要针对采用动态网页的网站做一定的技术处理(伪静态技术) ,以便适应搜索引擎的抓取要求。
6)程序在服务器端解析,这相当于顾客点餐,饭店厨师做饭做菜,耗时长,效率低。
由于程序在服务端解析,因此,会消耗大量的CPU和内存、I/O等资源,
并且多数还要读取数据库等服务,
因此,其访问效率远不如静态网页.
7)在服务端解析动态程序的服务常见的有PHP引擎、Java容器(tomcat、resin、iboss、weblogic)
静态效率高
动态消耗资源大
静态属于客户端解析
动态属于服务端解析
伪静态网页
1.伪静态网页介绍:
如标题字义,伪静态就是通过某些技术(如rewrite)
把动态网页的URL地址伪装成静态网页URL地址,
但实质上用户访问的还是动态网页,只不过给用户看起来URL地址是符合静态网页地址特征的,
因此,用户及某些搜索引擎会误认为是静态网页。
2.伪静态网页特点:
从网站的URL地址看,伪静态表面上看起来是静态内容
(如地址结尾带html),这是通过rewrite规则来实现的URL地址重写。
改写后的URL地址规范、美观,有利于搜索引擎抓取,以及提升用户访问体验。
如: http://oldboy.blog.51cto.com/2561410/803606和 http://www.discuz.net/forum-3967-1.html
这样的两个地址都是伪静态的。
因为伪静态网页还是动态网页,从性能上考虑,伪静态功能不但没有提升网站性能,反而会降低网站的性能。
3.伪静态网页作用:
由于搜索引擎无法正确读取带参数的动态网页内容,
造成网页中很多具有丰富信息的页面无法被搜索引擎收录,因此才有了伪静态技术,
它的作用是把动态网页URL改写成静态网页的URL,虽然同样是消除了动态网页中的参数,
但是并不需要生成任何网页,仅仅是改变了网页地址路径,这样做的主要目的有两个,
一是让搜索引擎收录网站内容,实现让更多的用户访问企业网站内容,二是提升用户访问体验,
动态地址带特殊符号等的URL看起来也不如看着静态网页地址舒服。
4.伪静态网页的缺点:
动态网页伪装静态网页,虽然可以让搜索引擎收录,并且可提升用户访问体验,
但伪静态网页并不能提升网站的访问效率性能,从理论上说还会降低网站的性能,
没有动态转静态网页效率高,但是对于一些并发不是超大的情况来说,
或者是硬件资源充足的情况来说,伪静态还是一个不错的实用功能,因为,
要把动态网页真正地转成静态网页,不是一朝一夕的事情,需要技术团队通力配合才能行。
现在很多大型的网站都采用了动态网页生成静态网页的技术,消除动态网页中的参数,
使搜索引擎收录更多的内容,达到优化网站的效果。
当网站遇到访问瓶颈时,如果有技术力量将动态网页转化成静态网页,
那就再好不过了,但是,有些更新频率很快的业务并不适合这么做,
或者将动态转为静态有很大难度,这时就可以考虑设置伪静态.
5.伪静态网页小结:
1)利用rewrite技术将动态网页伪装成静态网页(URL地址改写)
2)便于搜索引擎搜录提升用户访问量以及用户体验。
3)访问性能没有提升,并且转换伪静态会消耗资源,因此性能反而会下降。
4)如果为了性能,就尽可能将动态网页转换成真正的静态页面。
5)并发量不是很大或者动态更新过于频繁的时候,用rewrite实现伪静态也是不错的。
6)伪静态网页的实现过程,一般是由运营产品提出需求,开发和运维共同实现的。
1、门户新闻业务:
新闻网站的特点是一旦发布完成,几乎不会再改动网页内容。
因此,对于新闻业务内容的静态化相对比较简单。
第一步:程序要支持发布动态内容转成静态功能。
第二步:运营编辑人员发布新闻网页后(n内容进数据库,图片、视频进入存储),
后台程序立刻将动态网页生成静态文件。(生成.html文件放到存储上)
第三步:运维人员通过发布或事件触发把运营编辑生成的静态网页发布到事先搭建好的公司缓存集群服务器上,
或者把静态内容同步到购买的全国所有CDN服务器节点上,然后,再提供给用户提供访问浏览。
CDN:
1)内存 99%
2)1公里 就近访问
3)相同的运营商(用户网通,访问网通服务器)
2、视频网站业务:
视频网站和新闻网站类似,特点都是一旦发布完成,几乎不会再改动网页内容.
因此,实现视频业务网站高效访问也很简单。
以优酷视频网为例,用户在上传视频时,需要经历转码---审核的过程(大概1个小时),
然后一些热点视频也可能会被提前推送同步到CDN的核心节点或全国所有CDN服务器节点,
用户访问时才会更快。
3、Blog/BBS/SNS/微博社区业务/电商(如淘宝、京东)
这几类业务的动态转静态是比较困难的,因为,用户发布完成内容,
可能会随时更新并查看,这种情况一般会通过异步方式,
例如消息中间件技术加上NoSQL集群技术实现实现转换,
当然也会改进产品细节,例如:在访问的环节设置延时、异步加载等手段
4、网站流量度量术语:
1.IP (Internet Protocol)
IP (独立IP)即Internet Protocol,这里指独立IP数,
独立IP数是指不同IP地址的计算机访问网站时被计算的总次数。
独立IP数是衡量网站流量的一个重要指标。一般一天内 (00:00-24:00)
相同IP地址的客户端访问网站页面只被计算为一次,
记录独立IP的时间可为一天或一个月,
目前通用的标准为“一天”。
2.PV (Page View)
PV (访问量)即Page View,中文翻译为页面浏览,
即页面浏览量或点击量,不管客户端是不是相同,也不管IP是不是相同,
用户每次访问一个网站页面都会被计算一个PV。
PV的具体度量方法就是从客户浏览器发出一个对Web服务器的请求(Request), Web服务器接到这个请求后,将该请求对应的一个网页(Page)发送给浏览器,
就产生了一个 PV,这里有一个问题,就是只要这个请求发送给了浏览器,
无论这个页面是否完全打开(或下载完成) ,那么都是会被计数为1个PV (服务器日志) ,一般为了防止用户快速刷PV,很多网站把PV的统计程序放在页面的最下面。
3. UV (Unique Visitor)
UV (独立访客)即Unique Visitor,
同一台客户端(PC或移动端)访问网站被计算为一个访客。一天(00:00-24:00)内相同的客户端访问同一个网站只计算一次UV。
UV一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差。
考虑到一台客户端电脑可能会有多人使用的情况,因此, UV (独立访客)实际上并不一定是独立的自然人访问。
4.企业网站对IP, PV,UV的度量
先来看对IP的度量:
1)分析所有web服务器的访问日志信息,对IP地址段去重后计数,这是IT人员的基本计算手段。
2)在网站的每一个(所有)页面结尾,嵌入JS等统计程序代码,待用户加载网页后, IP即传给统计IP的服务器,这种方法一般被第三方统计公司或企业内部开发日志分析程序时使用。
3)用第三方大家比较信任的统计工具例如:谷歌的统计(GA) 。
对于UV的度量如下:
1)通过客户端HTTP请求报文分析。
一个客户端会多次请求网站服务器,每次HTTP请求都会携带客户端自身的大量信息,
比如: IP地址、请求发出的时间、浏览器版本,操作系统版本等等。
网站服务器对这些请求进行分析,如果这些请求满足一些共同特征,
比如来自同一个IP地址,且浏览器版本和操作系统版本相同,请求时间又相近等,
那么就可以认为这些请求是来自于同一个客户端那么多个页面访问也只算一个UV。
共同特征的定义是由服务器方决定的。通常,用IP地址+其他特征共同来定义的情况较多。
但此种度量方法无法解决以下问题,例如:多个人的电脑软硬件经常雷同,并且是一个公司或者学校的人;
多个人共用一个电脑的情况。
2)通过Cookie鉴别。
当客户端第一次访问某个网站服务器的时候,
网站服务器会给这个客户端的电脑发出一个Cookie,通常放在这个客户端电脑的C盘当中。
在这个Cookie中会分配一个独一无二的编号,这其中会记录一些访问服务器的信息,
如访问时间、访问了哪些页面,等等。
当你下次再访问这个服务器的时候,服务器就可以直接从你的电脑中找到上一次放进去的 Cookie文件,并且对其进行一些更新,但那个独一无二的编号是不会变的。
如果在一定时间内,服务器发现2个来访者对应的是一个编号,
那么自然可以认为它来源于同一个来访者了,于是就计算1个UV.
网站并发连接:
在面试过程中Linux运维人员经常会被问到:
你的公司网站最大并发是多少?
那么到底什么是并发?
怎么理解并发呢?
笔者查阅了很多资料,但还是没有找到让人信服的确切说法。下面是网上的一些说法:
A种理解:网站服务器每秒能够接收的最大用户请求数。
B种理解:网站服务器每秒能够响应的最大用户请求数。
C种理解:网站服务器在单位时间内能够处理的最大连接数。
虽然A、B的理解占IT人员中的大多数,但是,按照老男孩的理解, C种理解更为准确一些。
其他服务并发连接
(1) QPS (Query Per Second)每秒查询率
每秒查询率QPS是用于衡量一个特定的查询服务器在规定时间内所处理流量多少的标准。
运维工作中,DNS系统以及数据库等服务的查询性能经常用每秒查询率来衡量。
(2) IOPS (Input/Output Operations Per Second)
IOPS即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。
存储端的IOPS性能和主机端的I/O是不同的, IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成。
例如,主机写入一个最小的数据块,也要经过“发送写入请求、写入数据、收到写入确认”
等三个步骤,也就是3个存储端访问。