高并发

高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈

服务端处理请求需要耗费服务端的资源,比如能同时开启的 进程数 、能同时运行的 线程数网络连接数cpuI/O内存 等等,由于服务端资源是有限的,那么服务端能同时处理的请求也是有限的。

高并发问题的本质就是:资源的有限性

高并发带来的问题:服务端的处理和响应会越来越慢,甚至会丢弃部分请求不予处理,更严重的会导致服务端崩溃。

处理的思路

客户端

  1. 尽量减少请求数量,比如:依靠客户端自身的缓存或处理能力
  2. 尽量减少对服务端资源的不必要耗费,比如:重复使用某些资源,如连接池

基本原则就是:能不访问服务端就不要访问

服务端

  1. 增加资源供给,比如:更大的网络带宽,使用更高配置的服务器,使用高性能的Web服务器,使用高性能的数据库
  2. 请求分流,比如:使用集群,分布式的系统架构
  3. 应用优化,比如:使用更高效的编程语言,优化处理业务逻辑的算法,优化访问数据库的SQL

基本原则:分而治之,并提高单个请求的处理速度

处理的方法

处理高并发的三板斧: 缓存、降级和限流!

  • 应用层:扩容、动静分离、缓存、服务降级和限流
  • 数据库:读写分离、分库分表