如何提高项目并发量

# 1 web,app,微信小程序
# 2 web项目
    -前端:
        -用cdn,静态资源,放到cdn上(js,css,静态图片)
        -用精灵图(一个大图,上面又很多小图,用定位,定位到小图)
        -前端缓存(响应头设置缓存时间)cache-control  (django如何向响应头写键值对:响应对象["aaa"]="aaa"-nginx:
        -nginx做集群(dns解析,负载均衡硬件 f5)
        -动静分离(静态资源直接通过nginx转发,拿去;uwsgi只负责处理动态请求)
        -负载均衡(nginx的配置)
        -集群化部署
        -拆服务(把项目做成分布式)
    -使用uwsgi(c写的wsgi服务器)部署,使用gunicorn(python写的wsgi服务器)部署
    -代码层面:
        -缓存(redis)--》本来一个请求,要查5个表,耗时3s---》json格式--》放到缓存中--》下次再发请求,直接去缓存查---》0.001秒就返回了-----》(存在问题:缓存击穿,缓存穿透,缓存雪崩   双写一致性问题)
        -页面静态化(不适用于app和小程序),提前生成一个首页页面(被访问频繁的页面)
            -/index--->(查数据库(用了缓存)---》dtl渲染页面)--》提前生成出index.hmtl---》django模板渲染
            -数据不一致(当有数据增加,再重新生成一次这个页面),同步?异步?
            -用异步:用celery,django的信号(异步操作),当对象保存时,重新生成静态页面
        -异步操作(celery),一个请求需要耗时3s,设计成异步--请来了--》直接返回(任务已提交,请求正在处理)
            -小米秒杀:您正在排队(前端设置了定时,每隔5s,发送一个请求,查是否秒杀成功)
            -保存视频,发送邮件,保存文章,
            -后台管理,统计最近三,五,半年,个月的订单量--》折线图,饼状图展示
            -消息队列:rabbitmq,kafka。。。异步,解耦
        -请求打到数据库了(只要打到数据库,性能就下来了)
            -优化sql,外键尽量不建立,适当建索引
            -读写分离,数据库集群,分库分表
        -优化代码,多线程处理,尽量不在for循环里查数据库
        
        -换框架(异步框架),换语言
--代码优化不了了,垒机器
        
        

 

posted @ 2020-05-07 08:14  Hank·Paul  阅读(767)  评论(0编辑  收藏  举报