1. NIO
使用JDK1.4中提供的New IO來處理多連接的情況,用以取代舊有的一客戶端一線程的IO模型。
NIO能提高服務器性能的關鍵在于NIO給JAVA提供了非阻塞的IO模型。以前需要用一個線程來等待用戶的數據,現在只需要用select“選擇”出ready(就緒)的socket,然后在有數據的時候才去讀。這樣能夠用很少的幾個線程同時向大量的連接用戶提供服務,免去了線程切換帶來的開銷。
2. Thread Pool (SEDA)
把你的服務器的處理過程分解為Stage,給每個Stage配以一個線程池來并發處理Event。Stage之間通過Event來互相轉換。
SEDA的秘訣在于總的來說,并發是有好處的。通過把服務器的處理過程分解為Stage,提高了服務器的模塊性。同時給每個Stage配置一個自己的線程池來處理它的事件,能夠精致調整其池的大小,決定這個Stage的并發性。雖然SEDA的創始者把他寫的SandStorm寫得n復雜,但是SEDA本身的思想很簡單,利用JDK1.5提供給我們的良好線程支持,百來行代碼就能實現一個SEDA的模型出來。
3. StAX
使用StAX來代替DOM或者SAX。流式的XML解析能夠消耗更少的內存,而且速度更快。
DOM很耗費內存,需要性能的地方肯定不能考慮。SAX很龐大肥碩,比起Pull式的流式Parser來,還是慢。StAX是Pull式流式Parser標準化的產物,04年已經是final了的jsr。現在有一個BEA提供的RI,使用APL協議。服務器實現的一般是協議式的東西,往往是以流為中心,而不是以文檔為中心,而且往往需要自己控制著parser去解析,使用StAX最適合不過了。
4. Javolution
在大量產生臨時內存的地方,而且是反復被使用的部分,使用Javolution實時框架來“精致地”管理內存。
5. In general
好的內存管理與恰當的并發是使得程序性能更好負載能力更強的關鍵。
使用JDK1.4中提供的New IO來處理多連接的情況,用以取代舊有的一客戶端一線程的IO模型。
NIO能提高服務器性能的關鍵在于NIO給JAVA提供了非阻塞的IO模型。以前需要用一個線程來等待用戶的數據,現在只需要用select“選擇”出ready(就緒)的socket,然后在有數據的時候才去讀。這樣能夠用很少的幾個線程同時向大量的連接用戶提供服務,免去了線程切換帶來的開銷。
2. Thread Pool (SEDA)
把你的服務器的處理過程分解為Stage,給每個Stage配以一個線程池來并發處理Event。Stage之間通過Event來互相轉換。
SEDA的秘訣在于總的來說,并發是有好處的。通過把服務器的處理過程分解為Stage,提高了服務器的模塊性。同時給每個Stage配置一個自己的線程池來處理它的事件,能夠精致調整其池的大小,決定這個Stage的并發性。雖然SEDA的創始者把他寫的SandStorm寫得n復雜,但是SEDA本身的思想很簡單,利用JDK1.5提供給我們的良好線程支持,百來行代碼就能實現一個SEDA的模型出來。
3. StAX
使用StAX來代替DOM或者SAX。流式的XML解析能夠消耗更少的內存,而且速度更快。
DOM很耗費內存,需要性能的地方肯定不能考慮。SAX很龐大肥碩,比起Pull式的流式Parser來,還是慢。StAX是Pull式流式Parser標準化的產物,04年已經是final了的jsr。現在有一個BEA提供的RI,使用APL協議。服務器實現的一般是協議式的東西,往往是以流為中心,而不是以文檔為中心,而且往往需要自己控制著parser去解析,使用StAX最適合不過了。
4. Javolution
在大量產生臨時內存的地方,而且是反復被使用的部分,使用Javolution實時框架來“精致地”管理內存。
5. In general
好的內存管理與恰當的并發是使得程序性能更好負載能力更強的關鍵。
浙公網安備 33010602011771號