Статьи

Начало работы: Infinispan как кластер удаленного кэша


Это руководство проведет вас через настройку и запуск
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