当前位置: 首页 > Linux

【BAT面试题】大流量高并发如何应对??

时间:2023-04-06 05:04:22 Linux

这是BAT大公司的面试题。所谓高并发是指:大量请求同时或在极短时间内到达服务器,每个请求都需要服务器消耗资源进行处理并做出相应的反馈。常用的高并发处理思路和方法从服务端来看,高并发服务端处理请求需要消耗服务端资源,比如可以同时开启的进程数,可以同时运行的线程数、网络连接数、cpu、I/O、内存等,因为服务器的资源是有限的,服务器可以同时处理的请求也是有限的.高并发问题的本质是,由于资源有限,高并发,服务器的处理和响应会越来越慢,甚至有些请求不处理就被丢弃,更严重的会导致服务器崩溃。高并发处理的基本思想1)从客户端的角度尽量减少请求数,例如:依靠客户端自身的缓存或处理能力,尽量减少对服务器资源不必要的消耗,例如:复用某些资源,比如连接池客户端处理的基本原则是:如果不能访问服务器,就不要访问2)从服务器的角度,增加资源供给,比如:网络带宽更大,使用更高的服务器配置,使用高性能的web服务器,使用高端的基于性能的数据库请求分发,如:使用集群,分布式系统架构应用优化,如:使用更高效的编程语言,优化处理业务逻辑的算法,和优化SQL访问数据库基本原则:分而治之,提高单个请求的性能处理速度快,并发处理的基本手段1)在客户端的请求层面,常见的手段是:尽量使用浏览器缓存功能减少对服务器的访问,如:js、css、图片等可以考虑使用压缩传输功能,减少网络流量也会提高传输速度。考虑使用异步请求批量获取数据。2)前端接收客户端请求。常用的方法有:动静分离,可以直接从Nginx返回一些静态资源。根据不同的请求,分发到不同的后端进行处理,比如:负载均衡,业务拆分接入等。在前面加一层,做多个Nginx的负载均衡,比如:LVS,F5等。也可以使用CDN前端服务和动态内容被缓存以最小化对后端服务的访问。3)在Web服务器层面,常用的方法有:使用最新的JVM和优化Web服务器的配置,如:调整内存大小、线程数等。提供相同服务的Web服务器来实现负载均衡精心规划部署在Web服务器上的应用规模将Web服务器集群化高效利用缓存优化对数据库Sql的访问,可以考虑利用存储过程等数据库的能力合理使用多线程,加速业务processing部分业务可以考虑内存数据库,或者纯内存处理,避免远程调用、大量I/O等耗时操作合理规划事务等相对耗资源的操作合理使用异步处理考虑使用一些业务的预处理或预计算的方法,减少实时计算内部系统之间的业务可以直接调用处理,尽量减少WebService和工作流等5)数据库层面,常用方法包括:合理选择数据库引擎,如Mysql的InnoDB和MyISAM引擎进行配置优化。您可以考虑使用存储过程来处理复杂的数据。数据库逻辑集群,读写分离,合理设计数据库表结构、索引等分库分表,减少单库单表如果数据量有什么错误或者其他问题,欢迎小伙伴们留言评论,指出有帮助,欢迎点赞+转发分享。欢迎大家关注米公公的公众号:米公公的技术之路