所谓服务器大流量高并发指的是:在同时或极短期内,有大量的请求到达服务端,每一个请求都须要服务端耗费资源进行处理,并作出相应的反馈。css
服务端看高并发前端
服务端处理请求须要耗费服务端的资源,好比能同时开启的进程数、能同时运行的线程数、网络链接数、cpu、I/O、内存等等,因为服务端资源是有限的,那么服务端能同时处理的请求也是有限的。高并发问题的本质就是:资源的有限性算法
高并发带来的问题数据库
服务端的处理和响应会愈来愈慢,甚至会丢弃部分请求不予处理,更严重的会致使服务端崩溃。编程
高并发处理的基本思路后端
1)从客户端看浏览器
尽可能减小请求数量,好比:依靠客户端自身的缓存或处理能力。缓存
尽可能减小对服务端资源的没必要要耗费,好比:重复使用某些资源,如链接池客户端处理的基本原则就是:能不访问服务端就不要访问服务器
2)从服务端看网络
增长资源供给,好比:更大的网络带宽,使用更高配置的服务器,使用高性能的Web服务器,使用高性能的数据库
请求分流,好比:使用集群,分布式的系统架构
应用优化,好比:使用更高效的编程语言,优化处理业务逻辑的算法,优化访问数据库的SQL
基本原则:分而治之,并提升单个请求的处理速度
高并发处理的基本手段
1)客户端发出请求层面,常见的手段有:
l 尽可能利用浏览器的缓存功能,减小访问服务端,好比:js、css、图片等
l 能够考虑使用压缩传输的功能,减小网络流量,也会提升传输速度
l 考虑使用异步请求,分批获取数据
2)前端接收客户端请求层面,常见的手段有:
l 动静分离,部分静态资源能够直接从Nginx返回
l 按请求的不一样,分发到不一样的后端进行处理,好比:负载均衡、业务拆分访问等
l 前面再加上一层来作多个Nginx的负载均衡,好比:LVS、F5等
l 还能够在更前面使用CDN服务
l 还能够对动态内容进行缓存,尽可能减小访问后端服务
3)Web服务器层面,常见的手段有:
l 使用最新的JVM,并进行配置优化
l 对Web服务器进行配置优化,好比:调整内存数量、线程数量等
l 提供多个能提供相同服务的Web服务器,以实现负载均衡
l 仔细规划Web服务器上部署的应用规模
l 对Web服务器进行集群
4)Web应用层面,常见的手段有:
l 动态内容静态化
l Java开发优化
l 优化处理业务逻辑的算法
l 合理高效的利用缓存
l 优化访问数据库的Sql,能够考虑利用存储过程等数据库的能力
l 合理使用多线程,加快业务处理
l 部分业务能够考虑内存数据库,或者是进行纯内存处理
l 尽可能避免远程调用、大量I/O等耗时的操做
l 合理规划事务等较为耗资源的操做
l 合理使用异步处理
l 对部分业务考虑采用预处理或者预计算的方式,减小实时计算量
l 内部系统间的业务尽可能直接调用、直接处理,减小WebService、工做流等