如何提高项目并发量
提高的方法
- 前端
- 后端
- 代码优化
前端
-
使用
cdn
加速,静态资源放到cdn
上(js
,css
,静态图片),可以使用免费的jsdelivr
(https://www.jsdelivr.com/),也可以使用七牛云和阿里之类的。图片,短视频等文件放在第三方存储上。 -
用精灵图(一个大图,上面有很多小图,前端用用定位取到小图)
-
前端缓存(响应头设置缓存时间)
后端
-
nginx
做转发 -
动静分离(静态资源直接通过
nginx
转发,拿去;uwsgi
只负责处理动态请求) -
负载均衡,
nginx
负载均衡,F5硬件负载均衡,dns
负载均衡 -
动静分离
-
页面静态化(首页,秒杀页面)
-
集群化部署
-
拆服务(把项目做成分布式)
-
使用
uwsgi
(c写的wsgi
服务器)部署,使用gunicorn
(python写的wsgi
服务器)部署 -
nginx
做集群,高可用
-
代码层面优化
-
缓存(
redis
)- 接口缓存,redis-主从-哨兵-集群(存在问题:缓存击穿,缓存穿透,缓存雪崩 双写一致性问题),个别接口全用缓存
-
使用异步,多线程,协程,使用异步任务框架celery,使用消息队列(rabbitmq),把任务做成异步
-
搜索场景用es全文检索
-
优化
sql
,外键尽量不建立,适当建索引-
数据库读写分离,数据库集群,分库分表
-
优化代码,多线程处理,尽量不在for循环里查数据库
-
实在不行,考虑换个语言(写成一个个的服务,一点点的替换)