Grizzly

非同期入出力(NIO 2)を活用するようにモジュールフレームワークとHTTPを拡張。パフォーマンスを素晴らしく向上させることが可能となる

http://journal.mycom.co.jp/articles/2007/02/07/grizzly/

Grizzly は多くのアプリケーションサーバで採用されている非同期IOフレームワークJava で従来提供されてたIO機能は基本的に同期IOで、ひとつのスレッドがIOを掴んでると、他のスレッドはブロックされた状態になっていた。非同期IOを使うと複数のスレッドからIOを使うことが出来るようになると。IOが発生するとそのスレッドの処理はそこでブロックされていた。なので、IO毎にスレッドを生成する必要があった。非同期IO*1を使用することで、ひとつのスレッドで複数のIOを処理できる。


なので、スケーラビリティーもパフォーマンスもUPする。でも、その反面、扱いにはコツが必要。そういった面を面倒見てくれるのが Grizzly。Glassfish3 でも使用されている。


※追記
コメントいただきました。ありがとうございます。

ひとつのスレッドで複数のコネクションをさばくのが非同期I/O

こういうところ、ちゃんと理解せずに書いてると、しっかりボロが出ますな。。。NIO についてはもうちょっと調べて見ようと思っとります。


■ 参考URL
「New I/Oで高速な入出力」第5回 処理をブロックしないI/O | 日経 xTECH(クロステック)
http://journal.mycom.co.jp/column/jsr/011/

*1:J2SE 1.4で導入されたNIOの中のノンブロッキングIO