zoukankan      html  css  js  c++  java
  • 大型网站带来的问题(高并发、大流量、大存储)解决方案

    一、衡量大型网站的标准

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

  • 相关阅读:
    浅谈Objeact.clone克隆(纯个人理解,如有错误请指正)
    Spring集成Swagger,Java自动生成Api文档
    Spring @Value注入值失败,错误信息提示:Could not resolve placeholder
    触发器
    存储过程
    JavaEE笔记(十四)
    JavaEE笔记(十三)
    JavaEE笔记(十二)
    JavaEE笔记(十一)
    vue相关面试知识点总结
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522273.html
Copyright © 2011-2022 走看看