9.3.4. S3CacheLoader
S3CacheLoader はキャッシュデータの保存に Amazon S3 (Simple Storage Solution) を使用します。 Amazon S3 はリモートネットワークストレージで、 比較的待ち時間が長いため、 メディアやファイルなど大きなデータを保存するキャッシュに最適です。 また、 リモート管理できる信頼のおけるストレージが必要な場合は、 JDBC やファイルシステムベースのキャッシュローダーではなく、 このキャッシュローダーを考慮してください。 Amazon の EC2 (Elastic Compute Cloud) で実行しているアプリケーションに対してもこのキャッシュローダーを使用してください。
ストレージとして Amazon S3 を使用する場合は、 JBoss Cache の使用を考慮してみてください。 JBoss Cache はデータに対してインメモリキャッシングを提供し、 リモートアクセス呼び出しの回数を最小限にするため、 待ち時間や Amazon S3 データをフェッチする負荷を削減することができます。 また、 キャッシュレプリケーションを使用すると、 毎回リモートアクセスする必要なくローカルクラスタよりデータをロードすることができます。
Amazon S3 はトランザクションをサポートしていません。 アプリケーションでトランザクションが使用される場合、 このキャッシュローダーを使用するとステートの不一致が発生する可能性があります。 しかし、 書き込みはアトミックであるため、 書き込みに失敗すると何も書き込まれないため、 データの破損が生じることがありません。
データはノードの Fqn を基にキーに保存され、 ノードデータは
CacheSPI.getMarshaller() インスタンスを使用して java.util.Map としてシリアライズされます。 データの構成や保存については javadoc を参照してください。 データは Java シリアライゼーションを使用して保存されます。 そのため、 HTTP 上で JBoss Cache 以外のクライアントへデータをアクセスするのは容易ではありません。 これに関し、 キャッシュローダーを拡張するためフィードバックやご意見をお寄せください。
このキャッシュローダーでは、 データが単一の Map インスタンスに保存されるため、
Node.remove(Object) や Node.put(Object, Object) などの単一キー操作は最も遅くなります。 効率性を向上するには、 Node.replaceAll(Map) や Node.clearData() などのバルク操作を使用してください。 また、 cache.s3.optimize オプションも使用してみてください。
9.3.4.1. Amazon S3 ライブラリ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
S3 キャッシュローダーはデフォルトのディストリビューションで提供されますが、 ランタイム時にサービスにアクセスするにはライブラリが必要となります。 ランタイムライブラリは Sourceforge Maven Repository より入手できます。 pom.xml ファイルに次のセクションを追加します。
<repository>
<id>e-xml.sourceforge.net</id>
<url>http://e-xml.sourceforge.net/maven2/repository</url>
</repository>
...
<dependency>
<groupId>net.noderunner</groupId>
<artifactId>amazon-s3</artifactId>
<version>1.0.0.0</version>
<scope>runtime</scope>
</dependency>
Maven を使用しなくても、 レポジトリや この URL より amazon-s3 ライブラリをダウンロードすることができます。