【五斗米】项目高并发如何进行处理?如何优化?

时间:2025-04-11 08:00:57

前端优化:

1.对页面服务器使用集群部署

分担一个服务器的压力,高并发的情况下不会都去请求一个服务器导致服务器压力过大,导致崩溃。

2.使用页面静态化技术

就是将页面生成静态页面.html进行显示,减少数据库的访问,提高查询效率,提高用户体验度。

3.图片服务器分离

图片时比较消耗资源的,我们有必要将图片和页面分离开来,存储在单独的图片服务器,并且可以对图片服务器进行集群部署。从而保证高并发的情况下降低页面的服务器压力。

加速(Content Delivery Network-内容分发网络)

加快响应速度(将数据缓存到CDN服务器,CDN依靠部署在各地的服务器,通过中心平台的负载均衡、内容分发、调度等功能就近从CDN服务器获取数据,提高查询效率)

5.使用懒加载

滚动加载或延迟加载,并不是一进入页面就加载页面全部内容。

6.使用验证码

使流量错峰等手段最大限度的降低并发(滑动验证码是常用的手段了)

后端优化:

1.负载均衡+集群

使用Nginx负载均衡将请求分发到集群部署的后端服务器上;

2.数据库优化

避免使用select *

创建索引

分库分表,根据业务模块进行分库(数据库部署在不同的服务器上),根据业务需求进行分表(垂直分表和水平分表)。

读写分离,将读操作和写操作进行分离,采用主从复制的方式,主节点用于写操作,从节点用于读操作。

3.缓存

使用缓存技术(Redis,本地缓存等)减少去数据库的访问,提高系统的查询效率。

4.异步处理

将耗时的操作异步处理,避免阻塞主线程。

消息队列:使用消息队列(如RocketMQ、kafka),将耗时的操作异步处理。

异步任务:使用异步任务框架(比如Spring的“@Asyn”注解),将耗时操作异步处理、

5.分布式架构

采用分布式架构,将一个大型的单体应用拆分成多个小型的、独立的服务,提高系统的可扩展性和可用性。

6.并发控制

控制并发请求,避免系统过载。

令牌桶算法:使用令牌桶算法控制请求速率,避免系统过载。

限流:使用限流工具(如 Sentinel、Guava RateLimiter)控制请求速率。

7.使用线程池

使用线程池避免频繁的创建和销毁线程,提高系统的性能

8.使用分布式锁

避免在分布式系统当中,高并发的场景下导致并发安全问题,造成数据不一致问题。