Статьи

Infinispan для продвинутых пользователей: Remoting

В качестве продолжения предыдущей статьи о Infinispan , которая была опубликована на DZone несколько месяцев назад, я начинаю серию статей для опытных пользователей — серию коротких целенаправленных статей по конкретным подразделам Infinispan, для те, кто хочет копнуть глубже во внутренности Infinispan. Цель этой статьи — выбрать конкретные темы, представляющие интерес для опытных пользователей, и обсудить их до некоторой степени. Серия предполагает некоторые предварительные знания Infinispan, в том числе, прочитав вводную статью , будучи загружен Infinispan и поиграв с некоторыми из демок , включенных в дистрибутив, а также поработав через некоторые интерактивные обучающие программы, доступные на вики Infinispan в.

Прочитайте другие части этой серии:

Часть 1 — Remoting

Часть 2 — Режимы кэширования

Часть 3 — Уведомления о событиях

Кроме того, знакомство с основным Cache API Infinispan также предполагается и как таковое не рассматривается. Также предполагается знакомство с созданием и запуском узлов кэша , как программно, так и декларативно.

В этой первой части мы сосредоточимся на удаленном взаимодействии: как узлы Infinispan общаются друг с другом.

В качестве сетки данных и распределенного кэша узлы Infinispan используют IP-сети для связи со своими соседями. В частности, узлы Infinispan выдают RPC — удаленные вызовы процедур — для соседних узлов, которые вызываются на целевом узле и возвращается ответ, во многом похожий на локальный вызов. Инфраструктура RPC Infinispan использует экземпляры ReplicableCommandинтерфейс, который может выполняться на любом целевом узле — идентифицированном по адресу — или транслироваться по всей сетке.

Эта структура RPC — реализации ReplicableCommand, адрес узла и ответ узла — формируют ядро ​​сетевого уровня Infinispan, чему способствует RpcManager и под RpcManager, Transport .

RpcManager является вспомогательным компонентом, который организует, оптимизирует и выпускает RPC, а также может ожидать, собирать и анализировать ответы. Транспорт — это инкапсуляция взаимодействия с сокетами и потоками. Infinispan в настоящее время поставляется с единственной реализацией Transport — JGroupsTransport , которая используетБогатый и разнообразный набор протоколов и гарантий JGroups .

Некоторые сетевые компоненты, такие как RpcManager и Transport, имеют глобальную область, т. Е. Один экземпляр этих компонентов является общим для всех кэшей, созданных одним CacheManager. Это способствует повторному использованию ресурсов, мультиплексированию вызовов по одному и тому же каналу и облегчает создание экземпляров Cache, но это означает, что вы не можете использовать по-разному настроенный сетевой стек для разных экземпляров Cache, созданных одним и тем же CacheManager. Однако разные экземпляры Cache могут быть настроены на использование разных CacheModes, например, CacheMode.LOCAL , CacheMode.DIST_SYNC и т

. Д. Следующая диаграмма представляет взаимосвязь между этими компонентами.

Ваш сетевой стек можно настроить, предоставив файл конфигурации JGroups и указав на него в конфигурации Infinispan:

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:infinispan:config:4.0">
<global>
<transport clusterName="myCluster" nodeName="nodeA">
<properties>
<property name="configurationFile" value="jgroups.xml" />
</properties>
</transport>
</global>
</infinispan>

Infinispan поставляется с двумя файлами конфигурации JGroups по умолчанию, один для
TCP и один для
UDP . Это хорошая отправная точка, с которой вы можете настроить и настроить конфигурацию JGroups.

JGroups можно настроить для использования UDP или TCP в качестве транспорта и различных форм обнаружения, включая многоадресную передачу UDP или облачный FILE_PING (или S3_PING) для сред, где многоадресная рассылка недоступна. Пожалуйста, обратитесь к веб-сайту JGroups для получения подробной информации о настройке JGroups.

Для быстрого ознакомления с настройкой и запуском кластера Infinispan, пожалуйста, обратитесь к
этому руководству .