JAVA高性能高並發解決思路


1、代碼質量,不要性能低下的sql和代碼。有的一條sql搞定的事,有人用了多個循環才能搞定。取決於程序員的經驗!
2、項目前期的規划,由於java歷史多用於企業開發,導致好多團隊至今依然思想僵化。其實並發最高的是互聯網,他們有很多非常好的實踐經驗和架構是可以直接照搬過來用的。tomcat的並發取決於每個請求執行的占用時常,如果一個請求耗時1秒,那按tomcat開啟的線程數默認就幾十個。江湖謠傳tomcat並發400/秒左右,但是我又看到有的人說單機過萬/秒,其實就是測試場景中請求執行時間不同,結果不同。

那么重點來了,項目前期的規划很重要。我們可以預測下將來的場景,目的不是為了現在實現。而是為了將來留有余地,太早實現會增加項目的復雜度和實現難度,前期出結果很重要。當然如果公司能忍受慢工出細活也行!

web高並發的核心肯定是集群,前面有人回答了。這個不用懷疑!所有公司都是這么實現的。
那么,為了現在活着將來的集群,我們要做什么准備?大概說一些會用到,希望對你有所幫助。
1、動靜分離,靜態資源請求與動態請求分離,項目中需要訪問的圖片、聲音、js/css等靜態資源需要有獨立的存放位置,便於將來實現靜態請求分離時直接剝離出來,比如nginx可以直接配置圖片文件直接訪問目錄,而不需要經過tomcat。這樣tomcat就可以專注處理動態請求,操作數據庫數據處理之類的。靜態請求代理服務器性能比tomcat高很多。
2、引入緩存,數據庫緩存、頁面緩存,這東西好用不復雜,搞明白什么地方適用最重要。簡單的例子是頻繁讀取,不修改的地方最適用。也是后續集群做數據共享的一個方式之一,集群環境下,經常會碰到數據共享問題。
3、如果將來數據量大,單一數據庫成為瓶頸時,數據庫的讀寫分離來了。數據庫集群,讀寫分離,分表分區。mysql對讀寫分離這些還是有點支持的,沒仔細用過。
4、如果項目發展壯大了,已經過億用戶了,ok系統拆分來了。用戶管理系統、訂單系統,或者體育新聞系統、娛樂新聞系統等。保證一個系統當掉時不影響另一個,同時分擔單系統壓力。每個系統之下是前面3條!!
如果這一切都還搞不定,那你公司一定比谷歌還牛B了,哈哈……可喜可賀!

前期做下1和2就可以了,集群不一定要增加服務器,一台服務器如果配置好,多開幾個tomcat就可以了。1個400,10個tomcat就是4000呢!其實這些,看阿里巴巴的雲服務就知道,他們就是這么用的,有誰比它對高並發更有發言權!以上不是廣告……
什么cdn、lds之類的都是為了高並發,更快處理用戶請求而生!拼音打字,錯別字多望見諒,不全面望指正,學習之。

 

文章引用:http://bbs.csdn.net/topics/391076601

作者:uyerp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM