大型网站带来的问题(高并发、大流量、大存储)解决方案

一、衡量大型网站的标准

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、内存等。

posted @ 2016-11-04 11:41  chenjiacheng  阅读(518)  评论(0编辑  收藏  举报