2007年04月04日
Tomcat6でCometサポート
最近Tomcatの最新版が出た。
そして新機能としてCometのサポートがある。
記事は以下。
Tomcat 6の実力を早速試す - 移行するべき? その時期は?
CometはAjaxみたいに概念に名前を付けた感じの物で、簡単に言うと「HTTPを使用してプッシュ型のデータ配信を行う仕組み」の事。
今まではWebチャットのようなリアルタイム性が求められるアプリケーションでも、Ajaxを用いて10秒ごとなどにポーリングを行っていた。つまりこの場合平均5秒のタイムラグが出る仕様だったわけだ。ところがCometを使うと、サーバ側からのイベントとしてクライアントに通信できる。そのためプッシュ型のデータ配信が出来、チャットなどもリアルタイムに発言できるようになる。(Comet実装として有名なのはLingr、Googleチャットもそうなのかな?)
そんな今までの常識を覆すようなCometはどのように実装されているのかというと、かなり強引な手段を使っている。
1、ブラウザはとりあえず何もなくてもAjaxなどを用いてWebアプリケーションサーバにリクエストしに行く。
2、WebサーバはHTTPリクエストに応答せず、そのまま放置する!
3、Webサーバがデータをクライアントに送信したいタイミングで、放置していたHTTPリクエストにデータを含めて応答する。
4、ブラウザはイベントを受け取ったので、すぐさま1に戻り再びリクエストを投げる。
という感じ。今まではHTTPのリクエストがあれば、すぐに応答するという常識があったわけだけど、それを放置し任意のタイミングで応答するって言うのでプッシュ型を実現してる。う~ん、発想の転換。
しかし従来のサーバは、1コネクションに対し1スレッドを割り当てるため、コネクションが多くなると負荷が大きくなる問題があった。そんなにスレッドが多くなるのは想定してないのか、Linuxでも数千スレッドになるともういっぱいいっぱいとかどっかには書いてあったな。そのため1スレッドで複数のコネクションの面倒を見るようなサーバではないと対応できないらしい。
Tomcatは5までは対応できなかったけど、6から対応と言うことでCometを使いやすくなるのは良いことだ。一部のAjaxフレームワークでもComet対応されつつある。
そのうち時間が空いたら俺もCometつかって簡単なチャットでも作ってみようかな。
Trackback on "Tomcat6でCometサポート"
このエントリーのトラックバックURL:
"Tomcat6でCometサポート"へのトラックバックはまだありません。
"Tomcat6でCometサポート"へのコメントはまだありません。