高并发解决方法(通俗易懂)

一、前端方案:

1.页面静态化

采用HttpClient页面静态化技术对首页的信息进行缓存,将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素。通过CDN来抗峰值。 


2.用户限流

在某一时间段内只允许用户提交一次请求,比如可以采取IP限流。


3.禁止重复提交

用户提交之后按钮置灰,禁止重复提交 

二、后端方案:

1.服务端控制器层(网关层)

在服务端控制层需要针对同一个访问uid,限制访问频率。

2.服务层(4种)

a.消息队列缓存请求

常用消息队列MQ有:RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等等

消息队列常用场景:

应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;
异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;
限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况;
消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理

b.利用缓存,将数据存到redis缓存

c.同步机制

d.事物+锁,防止并发数据错乱

三、数据库方案:

1.表设计成分库分表

一个数据库拆分为多个库,多个库来抗更高的并发,分库减少单一数据库的负担。

一个表拆分为多个表,分表防止因数据量增多而降低数据库的性能

2.数据库读写分离

这个就是说大部分时候数据库可能也是读多写少,没必要所有请求都集中在一个库上吧,可以搞个主从架构,主库写入,从库读取,搞一个读写分离。读流量太多的时候,还可以加更多的从库。

四、服务器

1.负载均衡集群(Load Balance Cluster)

服务器可以做负载均衡集群,分摊系统的工作,减少单一服务器的资源负担

猜你喜欢

转载自blog.csdn.net/m0_58823014/article/details/129953264
今日推荐