【ハウツー】
Open Terracottaは、複数のJVMをまたいでJavaオブジェクトをキャッシュすることができるクラスタリングソリューションだ。以前は商用製品であったものが、2006年末にオープンソース化された。ライセンスは、Mozilla Public LicenseをベースとしたTerracotta Public Licenseであり、商用プロダクトにも問題なく利用できる。
アプリケーションにとって「パフォーマンス」は重要だ。特にデータベースを使用するアプリケーションはデータベースへのネットワークアクセス、検索クエリの実行性能などに足を引っ張られてパフォーマンスが思うように出ないことも多い。
そこで考え付くのが検索結果をキャッシュして再利用することであるが、これには別の問題がある。一つは、キャッシュを利用すると将来的な拡張性を損ねる可能性があることである。例えばスケーラビリティを向上させるべくアプリケーションサーバを複数台利用したとする。そうした環境で、個々のサーバが自分専用のキャッシュを持ち、キャッシュに対する書き込みも行うような状況だと、キャッシュの不整合が生じてしまう。もう一つの問題は、複数のプロセスがキャッシュを共有している場合、同時にキャッシュを更新してもデータが破壊されないことを保証しなくてはならないということである。ほかにもキャッシュが肥大化してRAMに乗り切らなくなった場合どうするか、などだ。
こうした問題を、スマートに解決しようというソフトウェアがOpen Terracottaである。
Open Terracottaの特色は「JVMレベルのクラスタリング」--「シングルJVM用のコードをいじることなく、複数JVM間でのオブジェクト共有が可能」という点である。
仕組みとしては、クラスタリングを調停し、オブジェクトのマスターを持つサーバに対して、個々のJVMがクライアントとなり、Javaオブジェクトのフィールド変更があった場合通知を行うことによってクラスタリングが実現されている。
また、JVMをまたいだスレッド間の同期(synchronized)も適切に行われる。つまり、あるJVM上のスレッドがオブジェクトのロックを獲得したら、クラスタリングに参加している全てのJVM上のスレッドがそのロックを獲得できるまでウェイトするのだ。こうした仕組みは、クラスをロードする前にバイトコードを操作することで実現されており、アプリケーションにとっては透過的に行われる。
こうした機能を持つOpen Terracottaの用途は、HTTPセッションのクラスタリング、分散キャッシュ、JVM単位での作業分割など様々だ。
ではさっそくインストールして動かしてみよう。
【コラム】ダイナミックObjective-C 第71回 デザインパターンをObjective-Cで - Bridge (3)
【コラム】ダイナミックObjective-C 第72回 デザインパターンをObjective-Cで - Composite (1)
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
ドコモ、「GALAXY S II LTE」のバージョンアップを2月13日に実施 [21:26 2/10] 携帯 |
|
レノボ・ジャパン、ウェブ広告モデルを一般公募 - 新生活キャンペーンの一環で [21:21 2/10] パソコン |
|
ドコモのLG製Androidタブレット/スマートフォンにバージョンアップ提供 [21:19 2/10] 携帯 |
|
[栗山千明]“カッコいい”女性騎士役にあこがれも「全然似てない」 長編アニメで声優初主演 [21:07 2/10] ホビー |
|
トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] エンタープライズ |