如何提高專案併發量
阿新 • • 發佈:2021-06-15
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 考慮換語言,寫成一個個服務,一點點替換