淺談高併發解決方案

整體思路:優化代碼,分離業務邏輯,數據庫,最後加服務器等;redis

逐步解決方案,具體操做以下:sql

   (1).頁面的動靜分離:數據庫

       頁面生成了靜態的緩存,頁面中的圖片、JS等靜態資源推CDN;緩存

       動態數據,能作緩存的作緩存(redis,memache);不能作緩存的,開始從代碼層面下着手;服務器

   (2).代碼層面的優化:負載均衡

        找到執行時間較長的腳本,着手分析,是否能夠優化業務邏輯;性能

        若是業務邏輯已經沒法優化,考慮是否是數據庫操做執行時間較長,若是是,開始從數據庫層面着手;優化

   (3).數據庫層面的優化:中間件

        找到操做頻繁,看是夠可以優化sql語句,如連表查詢等等;隊列

        若是仍是到不到要求,對於操做頻繁且數據庫操做較大的數據,進行讀寫分離;

        若是速度仍是達不到要求,考慮是否是單張數據表的問題了;

   (4).數據表層面的優化:

        若是是數據表中數據量過大,致使查詢速度慢的:數據分片,橫向切表;

        若是是數據表查詢數據過多,致使查詢數據慢的,縱向切表,使熱點數據和非熱點數據分離;

        若是速度仍是沒有到達要求,那麼恭喜你,你已經成功的積累了至關的用戶量了,加服務器吧,作負載均衡吧。

   (5).升級硬件,加服務器,作負載均衡。

 

補充:

1.針對非及時響應的業務,能夠作隊列,進行延時處理,以便後期統一處理;例如能夠委託中間件(就像老闆請的祕書),性能提高體如今寫入數據時鎖表時間的節省;

2.針對臨時的熱點活動類型業務,爲了防止崩潰,但是使用獨立的服務器,避免因爲活動服務器的崩潰而致使其餘主要業務服務器的崩潰。

相關文章
相關標籤/搜索