java高併發,如何解決,什麼方式解決
之前我將高併發的解決方法誤認為是執行緒或者是佇列可以解決,因為高併發的時候是有很多使用者在訪問,導致出現系統資料不正確、丟失資料現象,所以想到 的是用佇列解決,其實佇列解決的方式也可以處理,比如我們在競拍商品、轉發評論微博或者是秒殺商品等,同一時間訪問量特別大,佇列在此起到特別的作用,將 所有請求放入佇列,以毫秒計時單位,有序的進行,從而不會出現資料丟失系統資料不正確的情況。
今天我經過查資料,高併發的解決方法有倆種,一種是使用快取、另一種是使用生成靜態頁面;還有就是從最基礎的地方優化我們寫程式碼減少不必要的資源浪費:(
1.不要頻繁的new物件,對於在整個應用中只需要存在一個例項的類使用單例模式.對於String的連線操作,使用StringBuffer或者StringBuilder.對於utility型別的類通過靜態方法來訪問。
2. 避免使用錯誤的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗效能,除非必要不要使用 instanceof做條件判斷,儘量使用比的條件判斷方式.使用JAVA中效率高的類,比如ArrayList比Vector效能好。)
首先快取技術我一直沒有使用過,我覺得應該是在使用者請求時將資料儲存在快取中,下次請求時會檢測快取中是否有資料存在,防止多次請求伺服器,導致伺服器效能降低,嚴重導致伺服器崩潰,這只是我自己的理解,詳細的資料還是需要在網上收集;
使用生成靜態頁面我想大家應該不模式,我們見過很多網站當在請求的時候頁面的後最已經變了,如“http://developer.51cto.com/art/201207/348766.htm”該頁面其實是一個伺服器請求地址,在轉換成htm後,訪問速度將提升,因為靜態頁面不帶有伺服器元件;在這裡我就多多介紹一下:
一、什麼是頁面靜態化:
簡 單的說,我們如果訪問一個連結 ,伺服器對應的模組會處理這個請求,轉到對應的jsp介面,最後生成我們想要看到的資料。這其中的缺點是顯而易見的:因為每次請求伺服器都會進行處理,如 果有太多的高併發請求,那麼就會加重應用伺服器的壓力,弄不好就把伺服器 搞down 掉了。那麼如何去避免呢?如果我們把對 test.do 請求後的結果儲存成一個 html 檔案,然後每次使用者都去訪問 ,這樣應用伺服器的壓力不就減少了?
那麼靜態頁面從哪裡來呢?總不能讓我們每個頁面都手動處理吧?這裡就牽涉到我們要講解的內容了,靜態頁面生成方案… 我們需要的是自動的生成靜態頁面,當使用者訪問 ,會自動生成 test.html ,然後顯示給使用者。
二、下面我們在簡單介紹一下要想掌握頁面靜態化方案應該掌握的知識點:
1、 基礎- URL Rewrite
什麼是 URL Rewrite 呢 ? URL 重寫。用一個簡單的例子來說明問題:輸入網址 ,但是實際上訪問的卻是 abc.com/test.action,那我們就可以說 URL 被重寫了。這項技術應用廣泛,有許多開源的工具可以實現這個功能。
2、 基礎- Servlet web.xml
如果你還不知道 web.xml 中一個請求和一個 servlet 是如何匹配到一起的,那麼請搜尋一下 servlet 的文件。這可不是亂說呀,有很多人就認為 /xyz/*.do 這樣的匹配方式能有效。
如果你還不知道怎麼編寫一個 servlet ,那麼請搜尋一下如何編寫 servlet.這可不是說笑呀,在各種整合工具漫天飛舞的今天,很多人都不會去從零編寫一個 servlet了。
三、基本的方案介紹
相關文章
- 什麼是高併發,怎麼解決高併發
- java高併發量網站解決方案Java網站
- 大佬你是怎麼解決高併發的
- 【高併發】面試官:講講什麼是快取穿透?擊穿?雪崩?如何解決?面試快取穿透
- 為什麼Actor模型是高併發事務的終極解決方案?模型
- PHP利用Mysql鎖解決高併發PHPMySql
- 高併發解決方案orleans實踐
- 高併發和大流量解決方案
- 高併發解決方案詳解(9大常見解決方案)
- 高併發大容量NoSQL解決方案探索SQL
- mysql 高併發 select update 併發更新問題解決方案MySql
- 高併發優化解決方案優化
- 海量資料和高併發的解決方案
- PHP高併發和大流量的解決方案PHP
- 資料庫高併發解決方法總結資料庫
- 高併發下丟失更新的解決方案
- 多執行緒高併發解決辦法執行緒
- 處理高併發 IO瓶頸解決紅包程式
- 伺服器高併發三種解決方法為:伺服器
- 高併發下的介面冪等性解決方案!
- 解決跨海高併發崩潰難題?so easy
- 分散式鎖解決併發的三種實現方式分散式
- PHP高併發商品秒殺問題的解決方案PHP
- java併發程式設計 --併發問題的根源及主要解決方法Java程式設計
- PHP+Redis解決高併發下商品超賣問題PHPRedis
- 高併發業務場景下的秒殺解決方案 (初探)
- 解決資料庫高併發訪問瓶頸問題資料庫
- 談談高併發系統的一些解決方案
- 如何解決多執行緒併發問題執行緒
- 伺服器負載過高的原因是什麼?如何解決?伺服器負載
- 『MySQL』搞懂 InnoDB 鎖機制 以及 高併發下如何解決超賣問題MySql
- 怎麼發現植入式攻擊入侵併解決
- Java 高併發思路Java
- Java高併發綜合Java
- 架構與思維:高併發下冪等性解決方案架構
- 簡述高併發解決思路-如何處理海量資料(中)
- 【Java面試】什麼是冪等?如何解決冪等性問題?Java面試
- 什麼是死鎖?如何解決死鎖?