新聞中心
java"高并發(fā)"是什么意思?
1、在java中,高并發(fā)屬于一種編程術(shù)語(yǔ),意思就是有很多用戶在訪問(wèn),導(dǎo)致系統(tǒng)數(shù)據(jù)不正確、糗事數(shù)據(jù)的現(xiàn)象。并發(fā)就是可以使用多個(gè)線程或進(jìn)程,同時(shí)處理不同的操作。

2、處理高并發(fā)的方法
對(duì)于一些大型網(wǎng)站,比如門戶網(wǎng)站,在面對(duì)大量用戶訪問(wèn)、高并發(fā)請(qǐng)求方面,基本的解決方案集中在這樣幾個(gè)環(huán)節(jié):使用高性能的服務(wù)器、高性能的數(shù)據(jù)庫(kù)、高效率的編程語(yǔ)言、還有高性能的Web容器。
(1)動(dòng)靜分離。靜態(tài)資源請(qǐng)求與動(dòng)態(tài)請(qǐng)求分離,項(xiàng)目中需要訪問(wèn)的圖片、聲音、js/css等靜態(tài)資源需要有獨(dú)立的存放位置,便于將來(lái)實(shí)現(xiàn)靜態(tài)請(qǐng)求分離時(shí)直接剝離出來(lái),比如nginx可以直接配置圖片文件直接訪問(wèn)目錄,而不需要經(jīng)過(guò)tomcat。這樣tomcat就可以專注處理動(dòng)態(tài)請(qǐng)求,操作數(shù)據(jù)庫(kù)數(shù)據(jù)處理之類的。靜態(tài)請(qǐng)求代理服務(wù)器性能比tomcat高很多。
java高并發(fā)大量采集數(shù)據(jù)該如何去做?
數(shù)據(jù)庫(kù)連接已設(shè)置為了1000,說(shuō)明你的軟件設(shè)計(jì)方法不對(duì),類似的情況只用1個(gè)數(shù)據(jù)庫(kù)連接或幾個(gè)就夠了,參考中間件設(shè)計(jì)或MIDAS設(shè)計(jì),類似數(shù)據(jù)庫(kù)做個(gè)Pool的處理方法,而不是讓軟件直連數(shù)據(jù)庫(kù)
游戲服務(wù)端大訪問(wèn)量大并發(fā)的優(yōu)化解決方案?
1.所有的對(duì)象都放在內(nèi)存,20萬(wàn)用戶以下無(wú)壓力。
2.如果游戲的用戶很多,例如超過(guò)50萬(wàn),內(nèi)存就會(huì)不夠,可使用LRU算法來(lái)淘汰一些數(shù)據(jù)。
流程:收到用戶請(qǐng)求-在內(nèi)存查找用戶對(duì)象-如果不存在就從數(shù)據(jù)庫(kù)中加載-放入內(nèi)存cache-如果cache中的用戶超過(guò)20萬(wàn)-用LRU算法淘汰最古老的用戶數(shù)據(jù)。
3.避免同步的IO操作,所有會(huì)發(fā)生寫(xiě)數(shù)據(jù)庫(kù)的操作:例如角色獲得了經(jīng)驗(yàn),要更新數(shù)據(jù)庫(kù);這類和游戲邏輯相關(guān)、安全性要求不高的保存操作,一律用異步操作,由后臺(tái)的數(shù)據(jù)庫(kù)保存線程定期保存。
流程:如果要保存到數(shù)據(jù)庫(kù)-檢查該對(duì)象是否已有標(biāo)志為在保存隊(duì)列中-如果為假-將對(duì)象放入保存隊(duì)列。后臺(tái)保存線程的流程:從隊(duì)列中獲取要保存的對(duì)象-保存-置保存標(biāo)志位為假。
內(nèi)存cache+異步保存模式,并發(fā)每秒1000+不會(huì)有任何壓力,而且正常情況下每個(gè)請(qǐng)求的處理時(shí)間不會(huì)超過(guò)50毫秒。
郵件操作一定產(chǎn)生大量IO操作,而且都是同步操作,可用上面的cache機(jī)制處理,或者專門的郵件服務(wù)器。
如果是DNF之類的格斗類游戲,因?yàn)閷?duì)系統(tǒng)響應(yīng)的時(shí)間要求特別高,50毫秒都嫌慢,這種情況下,瓶頸是在網(wǎng)絡(luò)上,可用UDP包來(lái)解決。搜索UDP,有大量文檔。
如果用戶數(shù)是海量的,例如超過(guò)500萬(wàn),或者對(duì)并發(fā)的要求更高,例如每秒5000+次請(qǐng)求,這種指標(biāo)明顯超過(guò)了單機(jī)的處理能力,這個(gè)時(shí)候就必須采用分布式結(jié)構(gòu),使用多臺(tái)服務(wù)器。可參照EJB二次遠(yuǎn)程調(diào)用的原理實(shí)現(xiàn)多機(jī)分布式結(jié)構(gòu),搜索EJB,也有大量文檔。
沒(méi)事不要用c或者c++寫(xiě)游戲服務(wù)器端,c#和java這類歷史悠久、有大量工具包、程序員一抓一大把的語(yǔ)言最好。性能不是問(wèn)題,少BUG、穩(wěn)定、開(kāi)發(fā)周期短才是最重要的。
到此,以上就是小編對(duì)于java高并發(fā)以及解決的問(wèn)題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。
網(wǎng)站題目:java高并發(fā)問(wèn)題解決的方法有哪些
文章來(lái)源:http://m.fisionsoft.com.cn/article/djjeidh.html


咨詢
建站咨詢
