Infinispan

Key/Value型のデータを格納するインメモリデータグリッドである。

http://infinispan.org/

★Data Gridとしての主な機能

★プロセスの関係

※他サイトを参照

埋め込み型 Embedded mode

EmbeddedCacheManager manager = new DefaultCacheManager();

Cache<String, String> cache = manager.getCache("CacheName");

クライアント/サーバ型 Client-Server mode

・HotRodプロトコル

RemoteCacheManager manager = new RemoteCacheManager("<IP>:<Port>");

Cache<String, String> cache = manager.getCache("CacheName");

・RESTインターフェース

http://localhost:8080/infinispan/rest/CacheName/key

・Memcached

★データ保持方式

Replicatedモード 読み込みが高速

Distributedモード 書き込みが高速

★サンプル

<dependency>

<groupId>org.infinispan</groupId>

<artifactId>infinispan-core</artifactId>

<version>...</version>

</dependency>

import org.infinispan.Cache;

import org.infinispan.manager.DefaultCacheManager;

Cache<Object, Object> cache = new DefaultCacheManager().getCache();

cache.put("key", "value");

cache.get("key");

cache.remove("key");

cache.containsKey("key");

infinispanサーバにアクセス

<dependency>

<groupId>org.infinispan</groupId>

<artifactId>infinispan-client-hotrod</artifactId>

<version>...</version>

</dependency>

import org.infinispan.client.hotrod.RemoteCache;

import org.infinispan.client.hotrod.RemoteCacheManager;

RemoteCacheManager manager = new RemoteCacheManager("localhost");

RemoteCache<Object, Object> cache = manager.getCache();

※他サイトを参照

★MapReduceについて

★JBossでのクラスタ設定

キャッシュモード

Replication(デフォルト) クラスタグループ内の全てのサーバノードに対してキャッシュを複製

Distribution キャッシュのレプリケート先を対象のクラスタグループ内の一部のみとする

Replication → Distribution

クラスタ内でキャッシュを保持する台数が減るため信頼性は低下したが、

ノード間の通信量は減るので高速になる

同期モード

ASYNC(デフォルト)

セッションレプリケーションの応答受信を待たずにクライアントにレスポンスを返す

SYNC

セッションレプリケーションの応答受信が全て完了してから、クライアントにレスポンスを返す

ASYNC → SYNC

セッション情報の複製確認まで行うため信頼性は高まるが、同期待ちの増加により性能が低下

<cache-container name="singleton" aliases="cluster ha-partition" default-cache="default">

<transport lock-timeout="60000"/>

<!-- In small clusters (under 10 servers) -->

<replicated-cache name="default" mode="SYNC" start="EAGER" batching="true">

<locking isolation="REPEATABLE_READ"/>

</replicated-cache>

あるいは

<distributed-cache name="default" owners="3" mode="SYNC" start="EAGER" batching="true">

<file-store/>

</distributed-cache>

</cache-container>

@Resource(lookup="java:jboss/infinispan/container/singleton")

private CacheContainer container;

あるいは

@Resource(lookup="java:jboss/infinispan/cache/singleton/default")

private Cache<String, Address> cache;

※他サイトを参照