Infinispan Server

NoSQLキー/バリューストア、分散キャッシュなど、さまざまな用途で使われるInfinispan。まずは基本となるクライアントサーバの環境を構築して動作させてみました。

環境) Infinispan server 13.0.15 / maven 3.9.0 / openjdk 17 / Ubuntu22.04
インストール)

apt install openjdk-17-jdk
wget https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz
tar zxcvf apache-maven-3.9.0-bin.tar.gz
mv apache-maven-3.9.0-bin /opt/apache-maven
export JAVA_HOME=$(readlink -f /usr/bin/java | sed “s:bin/java::”)
export PATH=$PATH:/opt/apache-maven/bin

サンプルコード生成・実行

mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false \
-DgroupId=com.sample \
-DartifactId=hello
cd hello
mvn compile
java -cp target/classes com.sample.App

この環境をベースにコーディングします。まずはサーバを使わずローカルでキーバリューストア機能の確認です。
src/main/java/com/sample/App.java

ビルド・実行

mvn clean compile assembly:single
java -jar target/hello-1.0-SNAPSHOT-jar-with-dependencies.jar

結果

n@n10:~/infinispan-server-13.0.15.Final/_work/hello$ java -jar target/hello-1.0-SNAPSHOT-jar-with-dependencies.jar
Hello!
Mar 13, 2023 6:01:40 AM org.infinispan.marshall.core.impl.DelegatingUserMarshaller start
INFO: ISPN000556: Starting user marshaller ‘org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller’
value
Cache size is 1

(これはversion14.0.6でも動作確認)

次にサーバを使います。

インストール)

wget https://downloads.jboss.org/infinispan/13.0.15.Final/infinispan-server-13.0.15.Final.zip
unzip infinispan-server-13.0.15.Final.zip
cd infinispan-server-13.0.15.Final

Infinispan Server起動

bin/server.sh -b 0.0.0.0

ユーザ、キャッシュの作成

n@n10:~/infinispan-server-13.0.15.Final$ bin/cli.sh user create admin -p password
n@n10:~/infinispan-server-13.0.15.Final$ bin/cli.sh
[disconnected]> connect
Username: admin
Password: ********
[n10-3469@cluster//containers/default]> create cache myCache -t org.infinispan.DIST_SYNC
[n10-3469@cluster//containers/default]> ls caches
___script_cache
myCache

src/main/java/com/sample/App.java

ビルド・実行

mvn clean compile assembly:single
java -jar target/hello2-1.0-SNAPSHOT-jar-with-dependencies.jar

結果

n@n10:~/infinispan-server-13.0.15.Final/_work/hello2$ java -jar target/hello2-1.0-SNAPSHOT-jar-with-dependencies.jar
Hello! 2
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Mar 13, 2023 6:06:22 AM org.infinispan.client.hotrod.RemoteCacheManager actualStart
INFO: ISPN004021: Infinispan version: Infinispan ‘Triskaidekaphobia’ 13.0.15.Final
Mar 13, 2023 6:06:22 AM org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory receiveTopology
INFO: ISPN004006: Server sent new topology view (id=1, age=0) containing 1 addresses: [127.0.0.1/:11222]
value
Cache size is 1

どちらも設定したキーが取得できることを確認しました。
まだいろいろと不備があると思いますが、まずは動かしてから掘り下げていきたいと思います。
下記、pom.xmlとserver/conf/infinispan.xmlには不要な設定があるかもしれませんが、参考まで。

参考)
「Infinispan をクライアントサーバモードで使ってみる」
https://b.chiroito.dev/entry/2020/03/17/194635
「Infinispan Server(Hot Rod)で、認証・認可設定を行う」
https://kazuhira-r.hatenablog.com/entry/2020/03/01/224038

pom.xml(サーバアクセスの方。hotrodがversion14では対応していなかったため、ver13を使用した。サーバはver14でも可)

server/conf/infinispan.xml