• 高并发 有哪些解决方案


    最有魅力的人是康师傅,每天都有成千上万的人泡他。

     

    高并发的一些概念:

    1. (每秒查询率):每秒请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求);
    2. PV(Page View):综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量(注:同一个人浏览你的网站的同一页面,只记做一次pv);
    3. UV(Unqie Vistor):独立访客,一定时间范围内,相同访客多次访问网站,只计算为1个独立访客;
    4. 吞吐量(fetches/sec) :单位时间内处理的请求数量 (通常由QPS和并发数决定);
    5. 响应时间:从请求发出到收到响应花费的时间;
    6. 带宽:计算带宽需关注两个指标,峰值流量和页面的平均大小;
    7. 日网站带宽: PV/统计时间(换算到秒) * 平均页面大小(kb)* 8;

    注意:

    • QPS不等于并发连接数(QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数量);
    • 峰值每秒请求数(QPS)= (总PV数*80%)/ (六小时秒数*20%)【代表80%的访问量都集中在20%的时间内】;
    • 压力测试: 测试能承受的最大并发数 以及测试最大承受的QPS值;
    • 常用的性能测试工具【ab,wrk,httpload,Web Bench,Siege,Apache JMeter】

     

    进入正题,解决方案:

    1、流量优化 -- 去除一些恶意请求,进行防盗链处理;

    • Referer:以Nginx为例,前提加载ngx_http_referer_module模块 (易伪造referer,安全性低);
    •  加密签名:通过签名,根据计算签名的方式,判断请求是否合法,如果合法则显示,否则返回错误信息,加密签名 (安全性高);

     

    2、前端优化

    • 减少http请求次数;添加异步请求,当用户触发某个事件之后,再异步请求数据;
      • CSS Sprites(雪碧图) -- 合拼图片,再使用css的background-image和background-position来指定显示元素 CSS Sprites与图片地图性能差不多,但CSS Sprites更加简单灵活;
      • 合并JS与CSS文件 -- 加载一个JS文件比加载多个JS文件要快,一般会使用前端自动构建工具打包合并;
      • 图片使用base64编码 -- 图片base64除了可以使用在<img>中,还可以使用在css的background-image中;
      • 图片地图 -- 把多张图片合成一张,再使用<map>标签来实现对图片上不同区域的链接;  
    • 启用浏览器缓存和文件压缩;
    • CDN加速;
    • 将图片以及文件类放在其他服务器上(减少I/O);

     

    3、服务端优化

    • 页面静态化处理;
    • 并发处理;
    • 队列处理;

     

    4、数据库优化

    • 数据库缓存;
    • 数据库读写分离;
    • 对数据库进行分库、分表;
    • 读写分离主要是为了应对读请求,那如果写请求的流量大,就会考虑用到对数据库进行分库分表操作;

     

    5、WEB服务器优化

    • Nginx反向代理实现负载均衡;
    • lvs实现负载均衡;

     

  • 相关阅读:
    随意给一组数,找出满足一下条件的a[i],a[i]左边的数小于等于a[i],a[i]右边的数大于等于a[i]
    SVN
    四种进程或线程同步互斥的控制方法
    二叉树转双向链表
    最大连续子序列和
    找出一个字符串中第一个只出现一次的字符
    清除浮动的那些事
    jQuery中ready与load事件的区别
    css 经典布局之圣杯布局(左右固定,中间自适应)
    window.name + iframe跨域实例
  • 原文地址:https://www.cnblogs.com/fangdada/p/15064123.html
Copyright © 2020-2023  润新知