1. 程式人生 > 其它 >如何提高專案併發量

如何提高專案併發量

0 兩個大點:減少互動,提高介面併發

前端

1 移動端還是web端,靜態資源,使用cdn
2 圖片,短視訊,放在第三方儲存上
3 精靈圖,好多小圖片做成一個圖,在前端通過定位
4 使用前端儲存
5 前端快取:響應頭中有Cache-Control:max-age=xxx

後端部署

6 使用nginx轉發(不是直接使用uwsgi接收http請求,使用uwsgi協議)
7 使用效能高的wsgi伺服器部署專案(uwsgi,gunicorn)
8 起多個uwsgi+django服務,監聽多個埠
9 nginx做負載均衡
10 多臺機器上啟動多個uwsgi+django服務,nginx做負載均衡
11 動靜分離,uwsgi只負責處理動態請求,靜態請求直接用nginx去取
12 靜態資源(頭像,圖片),cdn,放到第三方雲平臺,oss,七牛雲,公司自己搭建儲存伺服器(fastdfs,ceph) 13 頁面靜態化(首頁,秒殺場景秒殺頁面),資料同步問題,只要資料庫變更了(管理員新增了一個輪播圖),靜態化的頁面需要重新生成(celery使用場景) 13.1 單臺nginx頂不住,高可用keepalive,nginx做叢集,F5的硬體負載均衡器,dns負載均衡

程式碼層面

14 使用非同步,使用多執行緒,用協程
15 使用非同步任務框架celery,使用訊息佇列(rabbitmq),把任務做成非同步
16 資料庫查詢語句優化,sql索引的建立,儘量不要在for迴圈中執行sql,常慢sql,  讀寫分離,叢集,分庫分表
17 使用快取,介面快取,redis,主從,哨兵,叢集,6臺機器 18 個別介面全用快取(qps高的介面) 19 搜尋場景使用全文檢索es,叢集 20 程式碼邏輯層面 21 考慮換語言,寫成一個個服務,一點點替換