Установка ehcache репликация - в каких многоадресных настройках я нуждаюсь?

Если вам нужно часто фильтровать по нескольким предикатам, вы можете определить способ их объединения:

case class And[A]( p1: A=>Boolean, p2: A=>Boolean ) extends (A=>Boolean) {
  def apply( a: A ) = p1(a) && p2(a)
}

Вот как его использовать, чтобы оставить нечетные числа больше 10:

scala> (0 until 20) filter And( _ > 10, _ % 2 == 1 )
res3: scala.collection.immutable.IndexedSeq[Int] = Vector(11, 13, 15, 17, 19)

Легко написать Or и Not комбинаторы одинаковым образом.

10
задан Darren Greaves 19 May 2009 в 20:37
поделиться

5 ответов

Я хочу протестировать его локально, поэтому я запуск двух отдельных экземпляров tomcat с приведенной выше конфигурацией.

Поскольку я только что отправил ответ на вопрос, связанный с Cherouvims , я просто хотел бы здесь также подчеркнуть, что они фактически предоставляют пример, делающий что-то похожее, по крайней мере (несколько узлов на хост, хотя только один экземпляр): см. раздел Полный пример в документации Распределенное кэширование RMI .

Действительно важно изменить порт TCP для каждого cacheManagerPeerListenerFactory , но настройки многоадресной рассылки могут (я думаю, они должны) остаться прежними: вы можете увидеть это в действии в ehcache.xml для упомянутого выше Полного примера : номер порта увеличивается по одному с 40001 до 40006 на узел, при этом настройки многоадресной рассылки остаются идентичными.

Если вы выполнили это,ваша проблема может быть связана только с Tomcat, работающим в Windows - см. соответствующий абзац в разделе Общие проблемы в Распределенное кэширование RMI :

Ошибка в Tomcat и / или JDK, где любой слушатель RMI будет не запускается на Tomcat, если в пути установки есть пробелы.
[...]
По умолчанию в Windows Tomcat устанавливается в "Program Files", эта проблема возникает по умолчанию.

5
ответ дан 3 December 2019 в 21:22
поделиться

Для начала убедитесь, что на ваших серверах включена многоадресная рассылка. Не знаю, на какой платформе вы работаете.

2
ответ дан 3 December 2019 в 21:22
поделиться

В качестве быстрого продолжения.

Мы действительно заставили это работать с двумя отдельными машинами, что решило исходную проблему - заставить его работать вообще. Насколько я помню, многоадресная рассылка должна работать «из коробки», но ее стоит проконсультироваться с вашим локальным системным администратором (наш предложил настройку для multicastGroupAddress).

В конце концов мы столкнулись со всевозможными проблемами в Solaris и в итоге отказались от многоадресной рассылки для Вместо этого - ручное обнаружение одноранговых узлов .

Наконец, с точки зрения отладки, использование jconsole для отслеживания значений кеша оказалось лучшим способом сделать это. Не пришлось прибегать к обнюхиванию пакетов. : -)

2
ответ дан 3 December 2019 в 21:22
поделиться

Одна ошибка, с которой я столкнулся во время репликации однорангового узла EHCache . Это может быть полезно, если кто-то пытается выполнить одноранговую репликацию на одном локальном компьютере.

Я хотел запустить 3 экземпляра EhCache с одноранговой репликацией на одном компьютере с Windows Vista, используя peerDiscovery = automatic (конечной целевой средой была Linux).

Одноранговая репликация не работает. Как ни странно, все экземпляры EhCache запускались без каких-либо ошибок или жалоб в журнале.

Мне потребовалось время, чтобы понять свою ошибку; без чего-либо в журналах мне пришлось разобраться: я использовал тот же listenerPort (40001) в конфигурации однорангового прослушивателя для каждого из экземпляров EhCache. Использование разных listenerPorts (40001, 40002 ...) помогло.

<cacheManagerPeerListenerFactory 
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
properties="port=40001, socketTimeoutMillis=3000"/>

<cacheManagerPeerListenerFactory 
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
properties="port=40002, socketTimeoutMillis=3000"/>

Обратите внимание, что это конфигурация «однорангового прослушивателя», для которой требуются разные номера портов. Многоадресное «обнаружение одноранговых узлов» по-прежнему использует идентичные многоадресные адреса и номера портов для каждого экземпляра ehcache.

5
ответ дан 3 December 2019 в 21:22
поделиться
 <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>

просто выполняя вышеуказанное, ehcache будет использовать следующий доступный! Таким образом, вам не нужно беспокоиться о настройке новых узлов, которые вы хотите развернуть в кластере.

2
ответ дан 3 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: