高并发处理的思路,从几个方面进行解决
先来了解几个名词
QPS: 每秒处理的请求数量!
响应时间: 处理一个请求需要的时间!
吞吐量: 单位时间内的处理请求数量!
最大并发数: 同一时间能支持的最大请求数!
1、流量处理
防盗链处理(可以在nginx.conf配置,做加密处理,或者请求域名限制)
盗链概念:
我们常见的小站盗用大站的图片、视频等信息资源,来减轻自己服务器的负担的现象成为盗链;因为真实的空间和流量均来自别人的服务器。
防盗链概念:
防止别人通过技术手段盗用本站的资源,让其展示本站资源失效,减轻服务器和带宽的压力的称之为防盗链。
防盗链的方法:
通过referer或者签名,可以检测目标网页访问的来源网页,一旦检测来源不是本站即进行阻止或者返回指定页面(404)
①Referer: nginx中有个ngx_http_referer_module模块,用于阻止来源非法的域名请求。
实现图片防盗链:
所有来自domain.com和域名以及baidu和google
的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户
location ~* \.(gif|jpg|png|webp)$ {valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.;if ($invalid_referer) {return 403;#rewrite ^/ http://www.domain.com/403.jpg;}root /opt/www/image;}
②加密签名: 使用第三方HttpAccessKeyModule实现nginx防盗链
2、前端优化
减少HTTP请求,减少css,js,image等组件的请求数(例如设置地图图片请求)
添加异步请求(ajax的异步请求等)
启用浏览器缓存和文件压缩
CDN加速(cdn的工作原理要明确,可以选用LVS做4层负载均衡,nginx或者squid做反向代理)
建立独立的图片服务器
3、服务端优化
页面静态化:比如主页和详情页这些经常访问的页面
并发处理:优化代码:尽量避免多层循环,避免多次访问数据库,
队列处理:用户进入队列进行排队等待进行处理
4、数据库优化
数据库缓存(redis)
分库分表,分区操作
读写分离
主从复制
双主热备
负载均衡
5、web服务器优化
nginx负载均衡
F5(价格高昂)
LVS负载均衡