Ehcache / Hibernate и RMI репликация с большим количеством объектов - PullRequest
8 голосов
/ 19 февраля 2009

В настоящее время я изучаю, как использовать опцию распространения RMI в ehcache. Я правильно настроил ehcache.xml и репликация работает нормально. Однако у меня есть 2 вопроса:

-> Кажется, ehcache / hibernate создает 1 кеш на сущность. Это нормально, однако, когда репликация на месте, создается 1 поток / кэш для репликации. Это намеренное поведение? Поскольку наш домен большой, он создает около 300 потоков, что мне кажется очень большим

-> Другое неприятное последствие - то, что сообщение о сердцебиении, похоже, объединяет все эти имена кеша. Из того, что я увидел, сообщение должно умещаться в 1500 байт, а это не так, что приводит к этому сообщению в моих журналах: сердцебиение не работает. Настройте меньшее количество кэшей для репликации. Размер 1747, но не должен превышать 1500. Есть идеи, как это можно изменить?

Большое спасибо за вашу помощь

Ответы [ 5 ]

3 голосов
/ 22 мая 2009

У нас уже есть один хак, где у нас есть собственная пользовательская копия hibernate EhCacheProvider, которая переопределяет buildCache () для создания наших собственных объектов Cache с укороченными именами (хэш имени). Это приближается к пределу 1500. Мы сохраняем хэш-карту исходных имен с именами хэшей для обратного просмотра.

Мы сделали это некоторое время назад и использовали его в производстве.

Мы также рассмотрели вашу другую проблему, чтобы иметь один поток репликатора. Сначала мы скопировали RMICacheReplicatorFactory и изменили createCacheEventListener (), чтобы вернуть нашу копию RMIAsynchronousCacheReplicator, которую мы изменили, сделав поле replicationThread статическим, а затем сделав необходимые исправления для этого. Мы не удосужились протестировать его полностью или запустить в производство, но снова посмотрим на него, как я нашел этот пост:)

2 голосов
/ 20 мая 2009

Рассматривали ли вы EHCache поверх терракоты? Взгляните на Terracotta Hibernate Integration и Terracotta EHCache Integration

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

Посмотри. Это работает как шарм для нас.

/ RS

2 голосов
/ 13 апреля 2009

Рассматривали ли вы JBossCache как альтернативу EHcache? JBossCache имеет распределенные транзакции и хорошо протестирован на высокие нагрузки. Он имеет механизмы репликации более низкого уровня, которые позволяют вам использовать многоадресную / широковещательную репликацию UDP или TCP.

0 голосов
/ 06 ноября 2009

Кстати, ограничение в 1500 байт было учтено для выпуска ehcache-core Ehcache 1.7.1. См. EHC-424 .

0 голосов
/ 02 мая 2009

Является ли JMS репликация опцией?

(Я искал, чтобы использовать его с асинхронным поведением, он работает хорошо. Документация была неправильной, поэтому мне пришлось проверить исходный код, чтобы увидеть фактические атрибуты, необходимые для его правильной настройки. Хорошая вещь с jms в том, что если вы если вы настроили эту инфраструктуру, вам не нужно настраивать какие-либо брандмауэры и т. д., чтобы они проходили.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...