高并发问题

系统架构中高并发指的是同时处理大量请求的能力

我们所说的高并发指两方面,第一个方面指的是同一时刻有大量的请求访问系统 第二个方面指的是有大量的请求在一个时间段内访问系统。

一般时间段有个指标,是一秒内能处理的请求数量。

 

 

解决高并发:

(1) 机器方面:

纵向:

首先,应该是提升机器的性能,提升硬件。单机性能,比如从8核提升大16核,从8G提升到16G。但是这种方式提升毕竟有限。

横向:

我们可以通过部署多台服务器来分担压力,这就需要负载均衡的帮助同时要求你的程序需要支持负载均衡方式的部署。比如引入redis来统一存储session。

如果单机能承载的请求能力有限,远远打不到上限怎么办?

 

★ 数据库方面~~~缓存

我们需要解决一些性能瓶颈问题,比如数据库,大部分应用的瓶颈都在数据库,所以我们一般会采用读写分离、分库分表,多从架构等方式提升数据库的能力

因为数据库毕竟是对磁盘的操作速度远远慢于cpu运转的速度,所以我们需要将数据尽可能的存储到内存中。虽然内存的速度也是慢于cpu速度,但是远远大于磁盘的速度。这时候就需要引入缓存机制。这就是大家最常用使用的手段

先访问缓存,缓存没有再访问数据库,然后存入缓存。

 

(3)其他解决方案:

比如CDN,我们将静态资源放入CDN中加快访问,并且不消耗应用服务器的性能。

比如搜索使用es

比如系统架构设计使用微服务架构,将系统进行拆分,每一个模块独立部署,网关集群化、组件集群化等等思路。

 

(4) 代码方面:

多线程的方式,提高系统处理能力,

通过连接池(线程池)的方式降低数据库连接,远程调用连接频繁创建的开销。

当同一时刻有资源竞争的情况,即线程安全问题,这时候可以使用分布式锁,使用分布式锁是为了适应集群环境,当然有时候锁的方式会影响性能。同样可以使用mq的方式来避免锁的使用。

 

posted @ 2022-08-03 20:02  一乐乐  阅读(88)  评论(0编辑  收藏  举报