前言
如今的互聯(lián)網(wǎng)是 互聯(lián)網(wǎng)+ 的時(shí)代相艇,是全民互聯(lián)網(wǎng)時(shí)代靶擦,曾經(jīng)特定的網(wǎng)民人群已經(jīng)是代表全公民的群體了撑螺,那么互聯(lián)網(wǎng)面對(duì)的壓力也是今非昔比,尤其是一些互聯(lián)網(wǎng)項(xiàng)目要面對(duì)非常嚴(yán)峻的高并發(fā)考驗(yàn),那么今天就來(lái)聊聊怎么初步應(yīng)對(duì)高并發(fā)的情況量愧。
背景介紹
并發(fā)就是可以使用多個(gè)線程或進(jìn)程柑土,同時(shí)處理(就是并發(fā))不同的操作。
高并發(fā)的時(shí)候就是有很多用戶在訪問(wèn)榛斯,導(dǎo)致系統(tǒng)數(shù)據(jù)不正確、糗事數(shù)據(jù)的現(xiàn)象搂捧。對(duì)于一些大型網(wǎng)站驮俗,比如門(mén)戶網(wǎng)站,在面對(duì)大量用戶訪問(wèn)允跑、高并發(fā)請(qǐng)求方面王凑,基本的解決方案集中在這樣幾個(gè)環(huán)節(jié):使用高性能的服務(wù)器、高性能的數(shù)據(jù)庫(kù)聋丝、高效率的編程語(yǔ)言索烹、還有高性能的Web容器。這幾個(gè)解決思路在一定程度上意味著更大的投入弱睦。
使用一般的synchronized或者是lock或者是隊(duì)列都是無(wú)法滿足高并發(fā)的問(wèn)題百姓。
解決辦法
- 使用緩存
- 使用生成靜態(tài)頁(yè)面
HTML 純靜態(tài)頁(yè)面是效率最高、消耗最小的頁(yè)面况木。我們可以使用信息發(fā)布系統(tǒng)來(lái)實(shí)現(xiàn)簡(jiǎn)單的信息錄入自動(dòng)生成靜態(tài)頁(yè)面垒拢,頻道管理旬迹、權(quán)限管理和自動(dòng)抓取等功能,對(duì)于一個(gè)大型網(wǎng)站來(lái)說(shuō)求类,擁有一套高效奔垦、可管理的信息發(fā)布系統(tǒng)CMS是必不可少的。 - 圖片服務(wù)器分離
圖片是最消耗資源的尸疆,僵圖片和頁(yè)面分離可以降低提供頁(yè)面訪問(wèn)請(qǐng)求的服務(wù)器系統(tǒng)壓力椿猎,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D片問(wèn)題而崩潰。 - 寫(xiě)代碼的時(shí)候減少不必要的資源浪費(fèi):
不要頻繁得使用new對(duì)象寿弱,對(duì)于在整個(gè)應(yīng)用中只需要存在一個(gè)實(shí)例的類使用單例模式.對(duì)于String的連接操作,使用StringBuffer或者StringBuilder.對(duì)于utility類型的類通過(guò)靜態(tài)方法來(lái)訪問(wèn)鸵贬。 - 避免使用錯(cuò)誤的方式,如Exception可以控制方法結(jié)束,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instanceof做條件判斷,盡量使用比的條件判斷方式.使用JAVA中效率高的類,比如ArrayList比Vector性能好。)
- 使用線程安全的集合對(duì)象 Vector脖捻、Hashtable 等
- 使用線程池