非阻塞Java NIO是否仍然比每個連接的異步套接字的標準線程慢?另外,如果你要爲每個連接使用線程,你會創建新的線程還是使用非常大的線程池?每個連接模型的Java線程vs NIO
我正在寫一個Java的MMORPG服務器,應該能夠輕鬆地擴展10000個客戶端給予足夠強大的硬件,儘管客戶端的最大數量是24000(我相信每個連接模型都不可能達到這個線程數, Java中15000個線程限制)。 從一篇三年前的文章中,我聽說使用每個連接模型的線程阻塞IO的速度仍然比NIO快25%(即此文檔爲http://www.mailinator.com/tymaPaulMultithreaded.pdf),但是在這一天仍然可以實現?從那時起,Java發生了很大的變化,我聽說在比較真實生活場景時結果是可疑的,因爲所用的虛擬機不是Sun Java。 另外,因爲它是一個MMORPG服務器,許多併發用戶之間正在進行交互,所以使用同步和線程安全實踐會降低性能,使單個線程化的NIO選擇器服務10000個客戶端的速度會更快? (所有的工作不一定需要在選擇器的線程上處理,它可以像MINA/Netty的工作方式一樣在工作線程上處理)。
謝謝!
10k線程不是任何(*商品*)服務器的勝利:另外,單個盒子上的10k活動客戶端是不太可能的。 – 2011-01-20 20:51:52
@pst:如果按商品來看,你的意思是;非量子,尚未被發現的一種技術,我完全同意。我認爲凱文的問題最少是線程數。我對此事沒有任何有用的意見表示抱歉。還記得QOTD:測試。 – 2011-01-20 21:04:31
@pst哦甜JRE它的彈性!你讓我的一天值得。 – 2011-01-20 21:19:57