ããã¯ããªã«ãããããŠæžãããã®ïŒ
Infinispan 11.0.0.FinalãããInfinispan Serverã®ãã€ãã£ãã€ã¡ãŒãžããªãªãŒã¹ãããŠããŸãã
Blog: Infinispan 11.0.0.Final - Infinispan
Blog: Infinispan Native Server Image - Infinispan
åã ããæ°ã«ãªã£ãŠããã®ã§ãã¡ãã£ãšéãã§ã¿ãããšã«ããŸããã
Infinispan Native Server
æåéããInfinispan ServerãGraalVMã䜿ã£ãŠãã«ããããã€ãã£ãã€ã¡ãŒãžã§ããéåžžã®Infinispan Serverããã
ã³ã³ãã¯ããªãµã€ãºã«ãªã£ãŠããŸãã
å©çšã¯ãå®è¡å¯èœãªãã€ãã£ãã€ã¡ãŒãžã§ã¯ãªããDockerã€ã¡ãŒãžãšããŠå©çšããããšã«ãªããŸãã
Infinispan Server Native Image
GitHubãªããžããªã¯ãã¡ãã§ããInfinispan Serveråãã®ãQuarkus Extensionãå®è£ ãããŠããŸãã
GitHub - infinispan/infinispan-quarkus: Infinispan Quarkus based extensions and Server
Dockerã€ã¡ãŒãžãäœãå ã«ãªã£ãŠãããªããžããªã¯ããã¡ãããã€ãã£ãã€ã¡ãŒãžä»¥å€ã®Dockerã€ã¡ãŒãžã®å ãå«ãŸããŠããŸãã
éåžžã®Infinispan Serverã®Dockerã€ã¡ãŒãžãšã®ãµã€ãºãæ¯èŒããŠã¿ãŸãããã
$ docker image pull quay.io/infinispan/server-native:12.0.2.Final $ docker image pull quay.io/infinispan/server:12.0.2.Final $ docker image ls | grep quay.io/infinispan/server quay.io/infinispan/server-native 12.0.2.Final c0d39bf9da9a 2 weeks ago 280MB quay.io/infinispan/server 12.0.2.Final a85f09e76880 2 weeks ago 476MB
éåžžã®Infinispan Serverã®ãµã€ãºããåæžâŠãšãŸã§ã¯ãããŸããããå°ãããªã£ãŠããŸããã
çŸåšã®Infinispanã®ããã¥ã¡ã³ãã«ã¯ããã€ãã£ãã€ã¡ãŒãžã«é¢ããæ
å ±ã¯ãªããããªã®ã§ãGitHubãããã°ã®å
容ãå
ã«
èŠãŠãããããšæããŸãã
èµ·åããŠã¿ã
ãŸãã¯èµ·åããŠã¿ãŸããããDockerã€ã¡ãŒãžã¯ãquay.io/infinispan/server-native:12.0.2.Final
ã䜿ããŸãã12.0.2.Finalã§ããã
$ docker container run -it --rm --name infinispan quay.io/infinispan/server-native:12.0.2.Final
èµ·åãããšããããªããšãèšãããŸãã
################################################################################ # # # IDENTITIES_PATH not specified # # USER and/or PASS env variables not specified. # # Auto generating user and password. # # # # Generated User: 8Wg5LOkbDw # # Generated Password: RWPtynD6w0 # # # # These credentials should be passed via environment variables when adding # # new nodes to the cluster to ensure that clients can access the exposed # # endpoints, on all nodes, using the same credentials. # # # # For example: # # 'docker run -e USER=8Wg5LOkbDw -e PASS=RWPtynD6w0'' # # # ################################################################################
ãŠãŒã¶ãŒãèªåçæããããšèšã£ãŠããŸããæå®ããã«ã¯ãç°å¢å€æ°ã§èšå®ããã°ããããã§ããã
ä»ã®ãã°ã
2021-03-27 15:49:09,165 WARN [io.qua.qut.run.ContentTypes] (main) Unable to detect the content type for templates/jgroups-encrypt; using application/octet-stream 2021-03-27 15:49:09,166 INFO [io.quarkus] (main) config-generator 2.1.3.Final native (powered by Quarkus 1.7.6.Final) started in 0.008s. 2021-03-27 15:49:09,166 INFO [io.quarkus] (main) Profile prod activated. 2021-03-27 15:49:09,166 INFO [io.quarkus] (main) Installed features: [cdi, qute] 2021-03-27 15:49:09,170 INFO [io.quarkus] (main) config-generator stopped in 0.000s 2021-03-27 15:49:09,191 INFO [ListenerBean] (main) The application is starting... 2021-03-27 15:49:09,206 INFO [org.inf.CONTAINER] (main) ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller' 2021-03-27 15:49:09,263 INFO [org.inf.CONTAINER] (main) ISPN000128: Infinispan version: Infinispan 'Lockdown' 12.0.2.Final 2021-03-27 15:49:09,264 INFO [org.inf.CLUSTER] (main) ISPN000078: Starting JGroups channel infinispan with stack image-tcp 2021-03-27 15:49:11,267 INFO [org.jgr.pro.pbc.GMS] (main) fec90b7741da-38815: no members discovered after 2000 ms: creating cluster as coordinator 2021-03-27 15:49:11,267 INFO [org.inf.CLUSTER] (main) ISPN000094: Received new cluster view for channel infinispan: [fec90b7741da-38815|0] (1) [fec90b7741da-38815] 2021-03-27 15:49:11,268 INFO [org.inf.CLUSTER] (main) ISPN000079: Channel infinispan local address is fec90b7741da-38815, physical addresses are [172.17.0.2:7800] 2021-03-27 15:49:11,269 INFO [org.inf.CONTAINER] (main) ISPN000390: Persisted state, version=12.0.2.Final timestamp=2021-03-27T15:49:11.269025Z 2021-03-27 15:49:11,278 INFO [org.inf.CONTAINER] (main) ISPN000104: Using EmbeddedTransactionManager 2021-03-27 15:49:11,305 INFO [org.inf.SERVER] (main) ISPN080018: Started connector REST (internal) 2021-03-27 15:49:11,306 INFO [org.inf.SERVER] (ForkJoinPool.commonPool-worker-3) ISPN080018: Started connector HotRod (internal) 2021-03-27 15:49:11,307 INFO [org.inf.SERVER] (main) ISPN080004: Connector SINGLE_PORT (default) listening on 172.17.0.2:11222 2021-03-27 15:49:11,307 INFO [org.inf.SERVER] (main) ISPN080034: Server 'fec90b7741da-38815' listening on http://172.17.0.2:11222 2021-03-27 15:49:11,307 INFO [org.inf.SERVER] (main) ISPN080001: Infinispan Server 12.0.2.Final started in 2124ms 2021-03-27 15:49:11,308 INFO [io.quarkus] (main) infinispan-quarkus-server-runner 12.0.2.Final native (powered by Quarkus 1.11.0.Final) started in 2.130s. 2021-03-27 15:49:11,308 INFO [io.quarkus] (main) Profile prod activated. 2021-03-27 15:49:11,308 INFO [io.quarkus] (main) Installed features: [cdi, infinispan-embedded, infinispan-server]
Infinispan Server 12.0.2.FinalãQuarkusã¯1.11.0.Finalã§ããã
2021-03-27 15:49:11,307 INFO [org.inf.SERVER] (main) ISPN080001: Infinispan Server 12.0.2.Final started in 2124ms 2021-03-27 15:49:11,308 INFO [io.quarkus] (main) infinispan-quarkus-server-runner 12.0.2.Final native (powered by Quarkus 1.11.0.Final) started in 2.130s.
1床æ¢ããŸããŠã
äžã«å«ãŸãããã¡ã€ã«ããã³ãã£ã¬ã¯ããªã¯ããããªæãã§ãã
$ docker container run -it --rm --name infinispan quay.io/infinispan/server-native:12.0.2.Final find /opt/infinispan /opt/infinispan /opt/infinispan/bin /opt/infinispan/bin/config-generator /opt/infinispan/bin/server-runner /opt/infinispan/bin/server.sh /opt/infinispan/bin/launch.sh /opt/infinispan/server /opt/infinispan/server/conf /opt/infinispan/server/conf/users.properties /opt/infinispan/server/conf/groups.properties /opt/infinispan/data
Infinispan Serverã®ãã€ãã£ãã€ã¡ãŒãžã¯ã/opt/infinispan
ãã£ã¬ã¯ããªå
ã«ãããŸãã
ãŸããæåã®ã³ã¡ã³ãã§è¡šç€ºãããŠããããã«ãç°å¢å€æ°USER
ããã³PASS
ãæå®ããããšã§ãŠãŒã¶ãŒåããã³
ãã¹ã¯ãŒããèšå®ã§ããŸãã
$ docker container run -it --rm -e USER=ispn-user -e PASS=ispn-password --name infinispan quay.io/infinispan/server-native:12.0.2.Final
èµ·åæã®ã³ã¡ã³ããå€ãããŸããã
################################################################################ # # # IDENTITIES_PATH not specified # # Generating Identities yaml using USER and PASS env vars. # ################################################################################
ãã®ãããã®èšå®ã«ã€ããŠã¯ãREADME.md
ã«æžãããŠããã®ã§ããã
Infinispan Images / Yaml Configuration
ä»åã¯ãInfinispan Serverã®Dockerã€ã¡ãŒãžã䜿ãåãããšãç®çã¯ããŠããªãã®ã§ãããŸã深远ãããŸããã
Dockerã€ã¡ãŒãžãã©ããªæ§æã«ãªã£ãŠãããããæå®ã§ããç°å¢å€æ°ã¯ä»¥äžã®ãã¡ã€ã«ãèŠãã°ããããã§ãã
https://github.com/infinispan/infinispan-images/blob/server-native-12.0.2.Final-1/server-native.yaml
ããããå ã¯ããŸãã¯Single Nodeã§ä»¥äžã®æå®ã§èµ·åããŠãããŸãã
$ docker container run -it --rm -e USER=ispn-user -e PASS=ispn-password --name infinispan --hostname infinispan quay.io/infinispan/server-native:12.0.2.Final
IPã¢ãã¬ã¹ã確èªã
$ docker container inspect infinispan | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2",
CLIã§æ¥ç¶ãã
Dockerã€ã¡ãŒãžã§èµ·åããŠããã®ã§ãèšå®å€æŽããŠåèµ·åããšããããã«ã¯ãããŸããã
èµ·åæã«èšå®ãã¡ã€ã«ãããŠã³ããã€ã€ç°å¢å€æ°ãæå®ããŠèšå®ããæ¹æ³ãããã®ã§ãããä»åã¯ãããŸã§ãããŸããã
ãªã®ã§ãCLIã䜿ãããšã«ãªãããã§ããâŠå
ã»ã©ã®find
ã®çµæãèŠããšãããããã«ãInfinispan Serverã®ãã€ãã£ãã€ã¡ãŒãžã«ã¯
CLIãå«ãŸããŠããŸããã
CLIã¯ãInfinispan Serverã®Quarkus Extensionã®ãªããžããªã«å«ãŸããŠããŸãããã€ãã£ãã€ã¡ãŒãžã§ãã
GitHub - infinispan/infinispan-quarkus: Infinispan Quarkus based extensions and Server
ãã¡ããããŠã³ããŒãããŠå±éãCLIã¯ããã¹ãåŽã§å©çšããããšã«ããŸãã
$ curl -LOs https://github.com/infinispan/infinispan-quarkus/releases/download/12.0.2.Final/infinispan-cli-12.0.2.Final-linux-amd64.zip $ unzip infinispan-cli-12.0.2.Final-linux-amd64.zip $ cd infinispan-quarkus-cli-12.0.2.Final
CLIã®äžèº«ã¯ãããã ãã§ãã
$ ls -1 LICENSE.md README.md ispn-cli
ispn-cli
ããCLIã®æ¬äœã§ããããã¡ã€ã«åœ¢åŒã確èªã
$ file ispn-cli ispn-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=e2ac30e01729ed9a282efd755562fdbe00609f66, for GNU/Linux 3.2.0, not stripped
å
ã»ã©ç¢ºèªããIPã¢ãã¬ã¹ãšããã€ãã£ãã€ã¡ãŒãžã®èµ·åæã«USER
ãPASS
ã§æå®ãããŠãŒã¶ãŒåããã¹ã¯ãŒããæå®ããŠæ¥ç¶ããŠã¿ãŸãã
$ ./ispn-cli -c http://ispn-user:ispn-password@172.17.0.2:11222 [infinispan-50956@infinispan//containers/default]>
ãŸã Cacheã¯ãããŸããã
[infinispan-50956@infinispan//containers/default]> ls caches ___script_cache
äœæããŸãããã
ãã³ãã¬ãŒããæå®ããŠäœæã
[infinispan-50956@infinispan//containers/default]> create cache --template=org.infinispan.DIST_SYNC distCache
[infinispan-50956@infinispan//containers/default]> ls caches distCache ___script_cache
ãã®æãServeråŽïŒã³ã³ããå
ïŒã§ã¯data/caches.xml
ãšãããã¡ã€ã«ã«æå®ããCacheãå¢ããŠããŸãã
$ docker container exec -it infinispan cat data/caches.xml <?xml version="1.0" ?> <infinispan xmlns="urn:infinispan:config:12.0"> <cache-container> <distributed-cache mode="SYNC" remote-timeout="17500" name="distCache" statistics="true"> <locking concurrency-level="1000" acquire-timeout="15000" striping="false"/> <state-transfer timeout="60000"/> </distributed-cache> </cache-container></infinispan>
ãã³ãã¬ãŒãã䜿ããšç°¡åã«CacheãäœããŸãããèšå®ã®èªç±åºŠã¯ãããŸããã
ãã³ãã¬ãŒãã§å®çŸ©ãããŠããCacheå®çŸ©ã¯ãã¡ãã§ããã
ããå°ãèªç±åºŠã欲ããå Žåã¯ãCacheå®çŸ©ãè¡ã£ãXMLãã¡ã€ã«ãçšæããŸãã
cache-snippet.xml
<?xml version="1.0" ?> <infinispan> <cache-container> <distributed-cache mode="SYNC" name="cache" /> </cache-container> </infinispan>
ä»åçšæããã®ã¯ããšãŠãç°¡åãªå 容ã§ããâŠã
ããããCLIããæå®ããŸããXMLãã¡ã€ã«ã¯ãCLIãå®è¡ããç°å¢äžã«ååšããŠããã°OKã§ãã
[infinispan-50956@infinispan//containers/default]> create cache --file=cache-snippet.xml myCache
Cacheãå¢ããŸããã
[infinispan-50956@infinispan//containers/default]> ls caches ___script_cache myCache distCache
ServeråŽã§ãCacheãå¢ããŠããŸãã
$ docker container exec -it infinispan cat data/caches.xml <?xml version="1.0" ?> <infinispan xmlns="urn:infinispan:config:12.0"> <cache-container> <distributed-cache mode="SYNC" name="myCache"/> <distributed-cache mode="SYNC" remote-timeout="17500" name="distCache" statistics="true"> <locking concurrency-level="1000" acquire-timeout="15000" striping="false"/> <state-transfer timeout="60000"/> </distributed-cache> </cache-container></infinispan>
Hot Rod Clientããæ¥ç¶ããŠã¿ã
Cacheãäœã£ãŠã¿ãã®ã§ãHot Rod Clientããæ¥ç¶ããŠã¿ãŸãããã
åæãšããç°å¢ã¯ããã¡ãã§ãã
$ java --version openjdk 11.0.10 2021-01-19 OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing) $ jbang --version 0.69.2
ç°¡åã«ãJBangã§å®è¡ããããšæããŸãã
ãããªããã°ã©ã ãçšæã
App.java
//DEPS org.infinispan:infinispan-client-hotrod:12.0.2.Final import java.net.SocketAddress; import java.util.Map; import java.util.Set; import java.util.stream.IntStream; import org.infinispan.client.hotrod.CacheTopologyInfo; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; import org.infinispan.client.hotrod.configuration.Configuration; import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; public class App { public static void main(String... args) { Configuration configuration = new ConfigurationBuilder() .uri("hotrod://ispn-user:ispn-password@172.17.0.2:11222") .build(); RemoteCacheManager manager = new RemoteCacheManager(configuration); RemoteCache<String, String> cache = manager.getCache("myCache"); try { System.out.println("===== put data ====="); IntStream .rangeClosed(1, 10) .forEach(i -> cache.put("key" + i, "value" + i)); System.out.println("===== get data ====="); IntStream .rangeClosed(1, 10) .forEach(i -> System.out.printf(" key%d: %s%n", i, cache.get("key" + i))); System.out.println("===== cache topology ====="); CacheTopologyInfo topology = cache.getCacheTopologyInfo(); for (Map.Entry<SocketAddress, Set<Integer>> segment : topology.getSegmentsPerServer().entrySet()) { System.out.printf(" %s : %s%n", segment.getKey(), segment.getValue()); } } finally { cache.stop(); manager.stop(); } } }
MavenäŸåé¢ä¿ã¯ããã¡ãã«æžããŠãããŸããinfinispan-client-hotrod
ã䜿ããŸãã
//DEPS org.infinispan:infinispan-client-hotrod:12.0.2.Final
æ¥ç¶æ å ±ã¯ããã¡ãã
Configuration configuration = new ConfigurationBuilder() .uri("hotrod://ispn-user:ispn-password@172.17.0.2:11222") .build();
ãã®ä»ããéåžžã®Hot Rod Clientãšäœ¿ãæ¹ã¯å€ãããŸããã
Cacheã¯ããã¡ã€ã«ãå ã«äœæãããã®ã䜿ããŸããã
RemoteCache<String, String> cache = manager.getCache("myCache");
å®è¡ã
$ jbang App.java
åäœããŸãããã
3æ 28, 2021 1:47:29 åå org.infinispan.client.hotrod.RemoteCacheManager actualStart INFO: ISPN004021: Infinispan version: Infinispan 'Lockdown' 12.0.2.Final 3æ 28, 2021 1:47:29 åå org.infinispan.client.hotrod.impl.protocol.Codec20 readNewTopologyAndHash INFO: ISPN004006: Server sent new topology view (id=1, age=0) containing 1 addresses: [172.17.0.2:11222] ===== put data ===== ===== get data ===== key1: value1 key2: value2 key3: value3 key4: value4 key5: value5 key6: value6 key7: value7 key8: value8 key9: value9 key10: value10 ===== cache topology ===== 172.17.0.2:11222 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255]
OKã§ããã
ã¯ã©ã¹ã¿ãæ§æããŠã¿ã
1床ãå ã»ã©ãŸã§åãããŠããDockerã€ã¡ãŒãžãåæ¢ããŸãã
ãããŠãä»åºŠã¯Infinispan Serverã®ãã€ãã£ãã€ã¡ãŒãžã§ã¯ã©ã¹ã¿ãæ§æããŠã¿ãŸãããã
Infinispan Serverã3 Nodeèµ·åããŸãã
## 1. $ docker container run -it --rm -e USER=ispn-user -e PASS=ispn-password --name infinispan1 --hostname infinispan1 quay.io/infinispan/server-native:12.0.2.Final ## 2. $ docker container run -it --rm -e USER=ispn-user -e PASS=ispn-password --name infinispan2 --hostname infinispan2 quay.io/infinispan/server-native:12.0.2.Final ## 3. $ docker container run -it --rm -e USER=ispn-user -e PASS=ispn-password --name infinispan3 --hostname infinispan3 quay.io/infinispan/server-native:12.0.2.Final
ãã°ãèŠããšãã¯ã©ã¹ã¿ãæ§æãããŸããã
2021-03-27 16:50:32,208 INFO [org.inf.CLUSTER] (jgroups-5,infinispan1-2518) ISPN000094: Received new cluster view for channel infinispan: [infinispan2-63714|2] (3) [infinispan2-63714, infinispan1-2518, infinispan3-44542] 2021-03-27 16:50:32,208 INFO [org.inf.CLUSTER] (jgroups-5,infinispan1-2518) ISPN100000: Node infinispan3-44542 joined the cluster
IPã¢ãã¬ã¹ã確èªã172.17.0.2ã172.17.0.3ã§ãã
$ echo 'infinispan1 infinispan2 infinispan3' | xargs -I {} docker container inspect {} | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", "SecondaryIPAddresses": null, "IPAddress": "172.17.0.3", "IPAddress": "172.17.0.3", "SecondaryIPAddresses": null, "IPAddress": "172.17.0.4", "IPAddress": "172.17.0.4",
CLIã§ãæ¥ç¶ããŠã¿ãŸããããã©ã®Nodeã§ãããã®ã§ãããã²ãšã€æå®ããŠæ¥ç¶ããŠã¿ãŸãã
$ ./ispn-cli -c http://ispn-user:ispn-password@172.17.0.2:11222 [infinispan1-2518@infinispan//containers/default]>
ã¯ã©ã¹ã¿ã«ã3 Nodeããããšã確èªã§ããŸãã
[infinispan1-2518@infinispan//containers/default]> ls /cluster infinispan2-63714 infinispan1-2518 infinispan3-44542
CacheãäœæããŠãããŸãã
[infinispan1-2518@infinispan//containers/default]> create cache --file=cache-snippet.xml myCache
ããã§ãå ã»ã©ã®ããã°ã©ã ã®æ¥ç¶æ å ±ã以äžã®ããã«å€æŽããŸãã
Configuration configuration = new ConfigurationBuilder() .uri("hotrod://ispn-user:ispn-password@172.17.0.2:11222,172.17.0.3:11222,172.17.0.4:11222") .build();
å®è¡ã
$ jbang App.java
3 NodeãèªèããããããžãšããŠãèªèããŠããŸãã
INFO: ISPN004021: Infinispan version: Infinispan 'Lockdown' 12.0.2.Final 3æ 28, 2021 1:56:29 åå org.infinispan.client.hotrod.impl.protocol.Codec20 readNewTopologyAndHash INFO: ISPN004006: Server sent new topology view (id=9, age=0) containing 3 addresses: [172.17.0.4:11222, 172.17.0.2:11222, 172.17.0.3:11222] ===== put data ===== ===== get data ===== key1: value1 key2: value2 key3: value3 key4: value4 key5: value5 key6: value6 key7: value7 key8: value8 key9: value9 key10: value10 ===== cache topology ===== 172.17.0.4:11222 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 178, 179, 180, 181, 189, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 253, 254, 255] 172.17.0.2:11222 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255] 172.17.0.3:11222 : [52, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252]
OKã§ããã
ã¡ãªã¿ã«ãHot Rod URIã§æå®ããåNodeã®æ¥ç¶å
ã¯ããããŸã§åæNodeã§ããHot Rod Clientã¯ãã¯ã©ã¹ã¿ã«åå ããŠãã
Nodeãç¥ãããšãã§ããã®ã§ãæåã®å®çŸ©ã«æ»ããŠ
Configuration configuration = new ConfigurationBuilder() .uri("hotrod://ispn-user:ispn-password@172.17.0.2:11222") .build();
å®è¡ããŠã
$ jbang App.java
ã¡ãããš3 NodeèªèããŸãã
3æ 28, 2021 1:58:31 åå org.infinispan.client.hotrod.RemoteCacheManager actualStart INFO: ISPN004021: Infinispan version: Infinispan 'Lockdown' 12.0.2.Final 3æ 28, 2021 1:58:31 åå org.infinispan.client.hotrod.impl.protocol.Codec20 readNewTopologyAndHash INFO: ISPN004006: Server sent new topology view (id=9, age=0) containing 3 addresses: [172.17.0.4:11222, 172.17.0.2:11222, 172.17.0.3:11222] 3æ 28, 2021 1:58:31 åå org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory updateTopologyInfo INFO: ISPN004014: New server added(172.17.0.4:11222), adding to the pool. 3æ 28, 2021 1:58:31 åå org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory updateTopologyInfo INFO: ISPN004014: New server added(172.17.0.3:11222), adding to the pool. ===== put data ===== ===== get data ===== key1: value1 key2: value2 key3: value3 key4: value4 key5: value5 key6: value6 key7: value7 key8: value8 key9: value9 key10: value10 ===== cache topology ===== 172.17.0.4:11222 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 178, 179, 180, 181, 189, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 253, 254, 255] 172.17.0.2:11222 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255] 172.17.0.3:11222 : [52, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252]
ãã®éšåã§ããã
3æ 28, 2021 1:58:31 åå org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory updateTopologyInfo INFO: ISPN004014: New server added(172.17.0.4:11222), adding to the pool. 3æ 28, 2021 1:58:31 åå org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory updateTopologyInfo INFO: ISPN004014: New server added(172.17.0.3:11222), adding to the pool.
ã¯ã©ã¹ã¿ã«ãæ¥ç¶ã§ããã®ã§ãOKãšããŸãããã
ãŸãšã
Infinispan Serverã®ãã€ãã£ãã€ã¡ãŒãžïŒã®Dockerã€ã¡ãŒãžïŒã䜿ã£ãŠã¿ãŸããã
䜿ãæ¹ãã®ãã®ã¯éåžžã®Infinispan ServerãšããŸãå€ãããŸããããCLIãå
¥ã£ãŠããªããšãæäŸåœ¢æ
ãDockerã€ã¡ãŒãžã®ã¿ãšãã
å·®ã¯ãã£ããããã®ã§ãã®ããããæŒãããŠããã°ãªããšããªãããªããšããæãã§ããã
ãã€ãã£ãã€ã¡ãŒãžãªã®ã§ãServer Taskãç¬èªã®ã¢ãžã¥ãŒã«ããããã€ããããšãã£ãããšã¯ã§ããªãæ°ãããŸããã©ãã
Infinispan Serverã®1圢æ ãšããŠèŠããŠãããŸãããã