标签:中间 表达 页面 访问 技术 解决 request 放弃 服务器
这道面试题涉及的知识点比较多,主要考察的是面试者的综合技术能力。高并发系统的设计手段有很多,主要体现在以下五个方面。
1、前端层优化
① 静态资源缓存:将活动页面上的所有可以静态的元素全部静态化,尽量减少动态元素;通过 CDN、浏览器缓存,来减少客户端向服务器端的数据请求。
② 禁止重复提交:用户提交之后按钮置灰,禁止重复提交。
③ 用户限流:在某一时间段内只允许用户提交一次请求,比如,采取 IP 限流。
2、中间层负载分发
可利用负载均衡,比如 nginx 等工具,可以将并发请求分配到不同的服务器,从而提高了系统处理并发的能力。
nginx 负载分发的五种方式:
① 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器不能正常响应,nginx 能自动剔除故障服务器。
② 按权重(weight)使用 weight 参数,指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况,配置如下:
upstream backend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
③ IP 哈希值(ip_hash)每个请求按访问 IP 的哈希值分配,这样每个访客固定访问一个后端服务器,可以解决 session 共享的问题,配置如下:
upstream backend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
④ 响应时间(fair)按后端服务器的响应时间来分配请求,响应时间短的优先分配,配置如下:
upstream backend {
fair;
server server1.com;
server server2.com;
}
⑤ URL 哈希值(url_hash)按访问 url 的 hash 结果来分配请求,和 IP 哈希值类似。
upstream backend {
hash $request_uri;
server server1.com;
server server2.com;
}
3、控制层(网关层)优化
限制同一个用户的访问频率,限制访问次数,防止多次恶意请求。
4、服务层优化
① 业务服务器分离:比如,将秒杀业务系统和其他业务分离,单独放在高配服务器上,可以集中资源对访问请求抗压。
② 采用 MQ(消息队列)缓存请求:MQ 具有削峰填谷的作用,可以把客户端的请求先导流到 MQ,程序在从 MQ 中进行消费(执行请求),这样可以避免短时间内大量请求,导致服务器程序无法响应的问题。
③ 利用缓存应对读请求,比如,使用 Redis 等缓存,利用 Redis 可以分担数据库很大一部分压力。
5、数据库层优化
① 合理使用数据库引擎 ② 合理设置事务隔离级别,合理使用事务 ③ 正确使用数据库索引
【END】
热文推荐:史上最全面试题详解
关注下方二维码,订阅更多精彩内容
老王著
转发更佳
喜欢作者
标签:中间 表达 页面 访问 技术 解决 request 放弃 服务器
原文地址:https://blog.51cto.com/13904087/2515729