第24章 グリッドファイルシステム
Red Hat Data Grid の GridFileSystem は、ファイルシステムとして Red Hat Data Grid でバックアップする Data Grid を公開する実験的な API です。
これは 実験的な API です。自己責任でお使いください。
具体的には、API は JDK の File、InputStream クラス、および OutputStream クラス(具体的には Grid File 、Grid InputStream 、および Grid OutputStream )へのエクステンションとして機能します。ヘルパークラス GridFilesystem も含まれています。
基本的に、GridFilesystem は 2 つの Red Hat Data Grid キャッシュでサポートされます。1 つはメタデータ(通常は複製)、もう 1 つは実際のデータ(通常は分散)に対応します。前者は複製されるので、各ノードにメタデータ情報がローカルにあり、ファイルを一覧表示するための RPC 呼び出しは必要ありません。後者は、ストレージ領域の大部分が使用される場所であり、ここでスケーラブルなメカニズムが必要であるため、配布されます。ファイル自体はチャンクであり、各チャンクはバイトアレイとしてキャッシュエントリーとして保存されます。
以下は、使用法を示す簡単なコードスニペットです。
Cache<String,byte[]> data = cacheManager.getCache("distributed");
Cache<String,GridFile.Metadata> metadata = cacheManager.getCache("replicated");
GridFilesystem fs = new GridFilesystem(data, metadata);
// Create directories
File file=fs.getFile("/tmp/testfile/stuff");
fs.mkdirs(); // creates directories /tmp/testfile/stuff
// List all files and directories under "/usr/local"
file=fs.getFile("/usr/local");
File[] files=file.listFiles();
// Create a new file
file=fs.getFile("/tmp/testfile/stuff/README.txt");
file.createNewFile();
stuff をグリッドファイルシステムにコピーします。
InputStream in=new FileInputStream("/tmp/my-movies/dvd-image.iso");
OutputStream out=fs.getOutput("/grid-movies/dvd-image.iso");
byte[] buffer=new byte[20000];
int len;
while((len=in.read(buffer, 0, buffer.length)) != -1) out.write(buffer, 0, len);
in.close();
out.close();
グリッドから作業内容を読み込んでいる:
InputStream in=in.getInput("/grid-movies/dvd-image.iso");
OutputStream out=new FileOutputStream("/tmp/my-movies/dvd-image.iso");
byte[] buffer=new byte[200000];
int len;
while((len=in.read(buffer, 0, buffer.length)) != -1) out.write(buffer, 0, len);
in.close();
out.close();
24.1. WebDAV デモ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Data Grid には、グリッドファイルシステム API を使用するデモ WebDAV アプリケーションが同梱されています。このデモアプリケーションは、JBoss AS や Tomcat などのサーブレットコンテナーにデプロイできる WAR ファイルとしてパッケージされ、グリッドを WebDAV を介してファイルシステムとして公開します。これにより、オペレーティングシステムのリモートドライブとしてマウントされる可能性があります。