前端优化:
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.使用分布式锁
避免在分布式系统当中,高并发的场景下导致并发安全问题,造成数据不一致问题。