09.10 高併發下怎麼優化能避免服務器壓力過大?!

用戶多,不代表你服務器訪問量大,訪問量大不一定你服務器壓力大!我們換成專業點的問題,高併發下怎麼優化能避免服務器壓力過大?

1,整個架構:可採用分佈式架構,利用微服務架構拆分服務部署在不同的服務節點,避免單節點宕機引起的服務不可用!

2,數據庫:採用主從複製,讀寫分離,甚至是分庫分表,表數據根據查詢方式的不同採用不同的索引比如b tree,hash,關鍵字段加索引,sql避免複合函數,避免組合排序等,避免使用非索引字段作為條件分組,排序等!減少交互次數,一定不要用select *!

高併發下怎麼優化能避免服務器壓力過大?!

3,加緩存:使用諸如memcache,redis,ehcache等緩存數據庫定義表,結果表等等,數據庫的中間數據放緩存,避免多次訪問修改表數據!登錄信息session等放緩存實現共享!諸如商品分類,省市區,年齡分類等不常改變的數據,放緩存,不要放數據庫!

高併發下怎麼優化能避免服務器壓力過大?!

同時要避免緩存雪崩和穿透等問題的出現導致緩存崩潰!

4,增量統計:不要實時統計大量的數據,應該採用晚間定時任務統計,增量統計等方式提前進行統計,避免實時統計的內存,CPU壓力!

5,加圖片服務器:圖片等大文件,一定要單獨經過文件服務器,避免IO速度對動態數據的影響!保證系統不會因為文件而崩潰!

高併發下怎麼優化能避免服務器壓力過大?!

6,HTML文件,枚舉,靜態的方法返回值等靜態化處理,放入緩存!

7,負載均衡:使用nginx等對訪問量過大的服務採用負載均衡,實現服務集群,提高服務的最大併發數,防止壓力過大導致單個服務的崩潰!

8,加入引擎:對於sql中常出現的like,in等語句,使用lucence或者solr中間件,將必要的,依賴模糊的字段和數據使用引擎進行存儲,提升速度!#注意:全量數據和增量數據進行定時任務更新!

高併發下怎麼優化能避免服務器壓力過大?!

9,使用消息中間件:對服務之間的數據傳輸,使用諸如rabbit mq,kafka等等分佈式消息隊列異步傳輸,防止同步傳輸數據的阻塞和數據丟失!

10,拋棄tomcat:做web開發,接觸最早的應用服務器就是tomcat了,但是tomcat的單個最大併發量只能不到1w!採取netty等actor模型的高性能應用服務器!

11,多線程:現在的服務器都是多核心處理模式,如果代碼採用單線程,同步方式處理,極大的浪費了CPU使用效率和執行時間!

12,避免阻塞:避免bio,blockingqueue等常常引起長久阻塞的技術,而改為nio等異步處理機制!

13,CDN加速:如果訪問量實在過大,可根據請求採用CDN分流技術,避免大流量完成系統崩潰!

14,避免低效代碼:不要頻繁創建對象,引用,少用同步鎖,不要創建大量線程,不要多層for循環!

當然還有的細節優化技術!

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,

需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,

但跳槽時面試碰壁。

需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,

常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。

但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5. 群號:高級架構群 Java進階群:180705916.備註好信息!送架構視頻。

6.阿里Java高級大牛直播講解知識點,分享知識,

多年工作經驗的梳理和總結,帶著大家全面、

科學地建立自己的技術體系和技術認知!


分享到:


相關文章: