??? 昨晚,我跟我們的PM討論到選課系統(tǒng)的問題,由于選課緊張,同時(shí)在線的同學(xué)一千多,所以引起服務(wù)器的高峰,以致系統(tǒng)有時(shí)會(huì)崩潰。針對這個(gè)問題我也深刻感受過(我們之前都是這樣選過來的)。
于是我建議:用集群提高性能來解決。
PM向我介紹了服務(wù)器的整體性能,(具體。。。這個(gè)不說了,可以算是較高級的服務(wù)器吧)同時(shí)也指出了整個(gè)問題的根本不在于服務(wù)器的性能而在于系統(tǒng)的本身,雖然集群可以可提高30%左的性能,他當(dāng)時(shí)就說了句:“整個(gè)資源就這么多,誰先到,就先得。所以我們就采取了限制人數(shù)的方法。”這汲及到一個(gè)系統(tǒng)設(shè)計(jì)的問題,下面就將自己體會(huì)的說說吧,
??? 當(dāng)我們對數(shù)據(jù)進(jìn)行操作的時(shí)候,總是會(huì)先把這部份的數(shù)據(jù)鎖起來,以保證數(shù)據(jù)的正確性,那么當(dāng)同時(shí)有很多人對這個(gè)數(shù)據(jù)進(jìn)行操作的時(shí)候,就會(huì)因?yàn)橄鹊降娜随i住了數(shù)據(jù)沒有釋放出來而導(dǎo)致,操作失敗。怎么才能防止這種情況呢?我們在設(shè)計(jì)的時(shí)候就要盡量減少對數(shù)據(jù)庫的操作,而將操場作放在一個(gè)事務(wù)里處理。我們用的是Weblogic服務(wù)器,所以設(shè)計(jì)的時(shí)候就盡量的依賴于weblogic的EJB容器進(jìn)行管理,將事務(wù)放到內(nèi)存里處理,這樣就減少了對數(shù)據(jù)庫的操作,提高整體的性能。由于我的文采不好,可能表達(dá)得有點(diǎn)模糊,大家就原諒我一次啦。。哈哈。。
??? 總結(jié)一句:就是盡量將事務(wù)在程序上處理,不要放在數(shù)據(jù)庫里處理。