一、衡量大型网站的标准
pv值(page views):页面的浏览量(一个网站的所有页面,在一天内,被浏览的总次数,达到千万级别,几百万也可以)
uv值(unique visitor):独立访客(一个网站,在一天内,有多少个用户访问过我们的网站,几十万以上)
独立ip:(一个网站,在一天内,有多少个独立的ip地址来访问我们的网站)
一般uv值略大于独立ip的。
如果要考虑公司的局域网,则uv值略大于独立ip的。
二、大型网站带来的问题
高并发:在同一时间点,有多少用户同时访问网站。
大流量:大并发,必然要导致大流量,需要高的带宽。
大存储:数据库存储,表达到G,T级别。
三、高并发的解决方案
网站重新架构,分层技术,负载均衡,集群,读写分离
负载均衡器:
硬件:
F5-BIGIP:立竿见影,效果非常好,价格昂贵。一些大型的网站公司和网游公司在用。
软件:
lvs(linux virtual server)集成到linux的内核里面了
nginx(该软件可以做web服务器,也可以做负载均衡使用)
负载均衡器的策略:
轮询技术:就是负载均衡把请求轮流转发给 web服务器。
最少连接:负载均衡把请求转发给最空闲的web服务器。
ip哈希:同一地址的客户端始终请求同一台 web服务器。
四、大流量(带宽)的解决方案
1. 配置压缩,减少数据传输的数据量。
原理图:
缺点:在服务器端,要进行对数据压缩,要耗费时间,在浏览器端解压缩,要耗费时间。
原理:为了提高网页在网络上的传输速度,服务器对主体信息进行压缩。如常见的gzip压缩,deflate压缩,compress压缩以及google、chrome正在推的sdcn压缩。
查看浏览器支持的压缩格式:通过firbug等系列软件,查看请求的头信息。
Apache上利用gzip压缩算法进行压缩的模块有两种:mod_gzip和mod_deflate.
Apache 1.x系列没有内建网页压缩技术,使用额外的第三方mod_gzip模块。
Apache2.0以上的版本中gzip压缩使用mod_deflate模块。
配置压缩的步骤:
(1)apache服务器,要开启deflate模块,或gzip模块
打开apache的配置文件
(2)在虚拟主机里面添加如下的配置
<ifmodule mod_deflate.c> DeflateCompressionLevel 6 #压缩级别为6,可选1-9,推荐为6 AddOutputFilterByType DEFLATE text/plain #压缩文本文件 AddOutputFilterByType DEFLATE text/html #压缩html文件 AddOutputFilterByType DEFLATE text/xml #压缩xml文件 </ifmodule>
DeflateCompressionLevel 指令来设置压缩级别。该指令的值可为1(压缩速度最快,最低的压缩质量)到9(最慢的压缩速度,压缩率最高)之间的整数,其默认值为6(压缩速度和压缩质量较为平衡的值)
注意:为什么要指定文件类型来压缩?
压缩也是要耗费cpu资源的,图片/视频等文件,压缩效果也不好,不要压缩。一般压缩文本格式的文件。
没有压缩之前:
添加压缩代码之后:
查看文件的类型,通过响应头里面的"content-type"属性来查看。
虚拟主机里面的配置:
2. 减少http的请求
主要是合并文件,合并js,css,背景图片等文件。把浏览器一次请求需要的js,css,背景图片文件,合并成一个文件,这样,浏览器请求一次即可。
3. 把比较占用流量的资源单独部署服务器
一般占用流量的资源就是视频和图片
4. 花钱买带宽
五、大存储的解决方案
1. 使用缓存技术
目的:做到,少查或不查数据库。
(1)页面静态化技术(磁盘缓存)
把一个动态页面(操作数据库的)转换成一个静态的html页面。
原理图:
apache处理静态页面的速度要远远快于处理php页面的速度。
(2)内存缓存
内存缓存技术有:memcache和redis以及mysql里面的memory引擎。
原理图:
注意:计算机从内存里面读取数据的速度,要远远快于从磁盘里面读取。
2. 对mysql进行优化
设计角度:存储引擎的选择,字段类型选择,范式。
自身特性:索引,查询缓存,分区分表,存储过程,sql语句优化配置。
架构体系:主从复制(读写分离)。
硬件升级:CPU、内存等。