Это руководство проведет вас через настройку и запуск
Infinispan в качестве
удаленного кластера распределенного кэша . Существует простая
документация для запуска Infinispan во встроенном режиме. Но нет полной документации для запуска Infinispan в клиент-серверном или удаленном режиме. Это руководство помогает преодолеть разрыв.
Infinispan предлагает четыре режима работы, которые определяют, как и где хранятся данные:
-
Локальный, где записи хранятся только на локальном узле, независимо от того, сформирован ли кластер. В этом режиме Infinispan обычно работает как локальный кеш
-
Invalidation, где все записи хранятся только в кэш-хранилище (например, в базе данных) и становятся недействительными со всех узлов. Когда узлу требуется запись, он загружает ее из хранилища кеша. В этом режиме Infinispan работает как распределенный кеш, поддерживаемый каноническим хранилищем данных, таким как база данных.
-
Репликация, где все записи реплицируются на все узлы. В этом режиме Infinispan обычно работает как сетка данных или временное хранилище данных, но не предлагает увеличенного пространства кучи.
-
Распределение , где записи распространяются только на подмножество узлов. В этом режиме Infinispan обычно работает как сетка данных, обеспечивая увеличенное пространство кучи.
Invalidation, Replication и Distribution могут использовать синхронную или асинхронную связь.
Infinispan предлагает два шаблона доступа, каждый из которых доступен в любой среде выполнения:
-
Внедрено в код вашего приложения
-
В качестве удаленного сервера, к которому обращается клиент (REST, memcached или Hot Rod)
В этом руководстве мы настроим сервер Infinispan с конечной точкой HotRod и получим доступ к нему через клиент Java Hot Rod. Одна из причин использования протокола HotRod — это автоматическая балансировка нагрузки и отработка отказа.
1. Загрузите полный дистрибутив Infinispan. Я буду использовать версию 5.1.5.
2. Настройте Infinispan для работы в распределенном режиме.
Создайте infinispan-distrib.xml.
<infinispan >
<global>
<globaljmxstatistics >
<transport>
<properties> <property > </property></properties>
</transport>
</globaljmxstatistics>
</global>
<default>
<jmxstatistics > <clustering > <async> <hash > </hash></async></clustering>
</jmxstatistics>
</default>
<namedcache > <clustering > <sync> <hash > </hash></sync></clustering> </namedcache>
</infinispan>
Мы будем использовать
JGroups для настройки кластерной связи. Скопируйте файл etc / jgroups-tcp.xml как jgroups.xml.
3. Поместите infinispan-distrib.xml и jgroups.xml в папку bin. Запустите 2 экземпляра Infinispan на одной или разных машинах.
Запустить сервер Infinispan довольно просто. Вам нужно скачать и распаковать дистрибутив Infinispan и использовать скрипт startServer.
bin\startServer.bat --help // Print all available options bin\startServer.bat -r hotrod -c infinispan-distributed.xml -p 11222 bin\startServer.bat -r hotrod -c infinispan-distributed.xml -p 11223
Два экземпляра сервера начнут общаться друг с другом через JGroups.
4. Создайте простой Remote HotRod Java Client.
import java.net.URL; import java.util.Map; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; import org.infinispan.client.hotrod.ServerStatistics; public class Quickstart { public static void main(String[] args) { URL ().getContextClassLoader() .getResource("hotrod-client.properties"); RemoteCacheManager RemoteCacheManager(resource, true); //obtain a handle to the remote default cache RemoteCache ("myCache"); //now add something to the cache and make sure it is there cache.put("car", "ferrari"); if(cache.get("car").equals("ferrari")){ System.out.println("Found"); } else { System.out.println("Not found!"); } //remove the data cache.remove("car"); //Print cache statistics ServerStatistics (); for (Map.Entry stat : stats.getStatsMap().entrySet()) { System.out.println(stat.getKey() + " : " + stat.getValue()); } // Print Cache properties System.out.println(cacheContainer.getProperties()); cacheContainer.stop(); } }
5. Определите hotrod-client.properties.
;localhost:11223; ## below is connection pooling config
См.
RemoteCacheManager для всех доступных свойств.
6. Запустите QuickStart.java. Вы увидите что-то подобное на консоли
Jul 22, 2012 9:40:39 PM org.infinispan.client.hotrod.impl.protocol.Codec10 readNewTopologyAndHash INFO: ISPN004006: localhost/127.0.0.1:11223 sent new topology view (id=3) containing 2 addresses: [/127.0.0.1:11223, /127.0.0.1:11222] Found hits : 3 currentNumberOfEntries : 1 totalBytesRead : 332 timeSinceStart : 1281 totalNumberOfEntries : 8 totalBytesWritten : 926 removeMisses : 0 removeHits : 0 retrievals : 3 stores : 8 misses : 0 {, , , , , , , , ;localhost:11223;, , }
Как вы заметите, сервер кеша возвращает топологию кластера, когда соединение установлено. Вы можете запустить больше экземпляров Infinispan и заметить, что топология кластера быстро меняется.
Это оно!
Некоторые полезные ссылки:
http://docs.jboss.org/infinispan/5.1/configdocs/
https://github.com/infinispan/infinispan-quickstart
https://github.com/infinispan/infinispan/tree/master/client / hotrod-client
https://docs.jboss.org/author/display/ISPN/Using+Hot+Rod+Server
https://docs.jboss.org/author/display/ISPN/Java+Hot+Rod+client