jetty-nosql-memcached のご紹介

Posted on 2011-09-16 by yyuu

yyuu です。前回投稿してから随分と間が空いてしまいました。前回は node.js について書いた気がしますが、続きも書かないままに今回は Java、というか Jetty についてのお話です。

通常、Jetty で動くアプリケーションのセッションデータは org.eclipse.jetty.server.session.HashSessionManager と呼ばれるセッションマネージャの実装により JVM のヒープ中に保持されます。一台のサーバからなる小規模な環境であればこれでも問題ありませんが、複数台の JVM からなるクラスタなどで障害ノードからセッションのフェイルオーバーを行ないたい場合には、JVM ヒープの外部にセッションデータを保存したうえでクラスタのメンバー間で共有する必要があります。

このような用途に向けて、Jetty には標準で org.eclipse.jetty.server.session.JDBCSessionManager という実装が含まれています。これはその名の通り JDBC 経由で RDBMS にセッションデータを保存してしまおうというシロモノです。原理的には、参照および更新が十分に高速な RDBMS があればこのセッションマネージャを使ってクラスタを構成させることもできるはずですが、現実的には MySQL などではセッションデータのような不定長の BLOB データを高速に処理することは難しいです。

そんなわけで、このような場面でこその NoSQL だろうということでセッションデータを memcached に保存するための MemcachedSessionManager というものを実装してみました。これはその名の通り memcached 上にセッションを保存するセッションマネージャの実装です。memcached の get/set/add/delete などの基本的なコマンドのみを用いて実装しているため、オリジナルの memcached 以外にも Kyoto Tycoon など多くの memcached 互換サーバで動作することも期待できます。

以下の URL でビルド済みの jar ファイルを配布しているので、こちらを Jetty の ./lib/ext 以下に投入することで MemcachedSessionManager を使用することができるようになります。

次回は、設定編として MemcachedSessionManager 用の Jetty の設定について解説しようと思います。


Tags

Java jetty