Infinispan
Key/Value型のデータを格納するインメモリデータグリッドである。
★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;
※他サイトを参照