2017-01-17 17 views
2

Я использую hibernate 5 и hazelcast 3.5.4. Для кеша второго уровня я использую HazelcastCacheRegionFactory, который является распределенной реализацией.HazelCast распределяет кеш второго уровня и недействительность обновления

В документации HazelcastLocalCacheRegionFactory четко указано, что в случае отправки сообщения об обновлении/удалении недействительны.

Я провел тест в локальной сети с кластером второго уровня с кластеризацией второго уровня. Когда объект считывается с узла, другой узел не обращается к базе данных, вместо этого он извлекает объект из каретки. Однако, как только узел обновляет объект, другой узел, чтобы извлечь объект, выполняет запрос.

Так что мой вопрос в том, что HazelcastCacheRegionFactory отправляет сообщения о недействительности тоже при обновлении/удалении вместо распространения изменений.

спасибо.

ответ

1

Так что, мой вопрос в том, что HazelcastCacheRegionFactory отправляет недействительные сообщения сообщений об обновлении/удалении вместо распространения изменений.

Нет, это не так, изменения распространяются, как описано в documentation:

HazelcastCacheRegionFactory использует стандарт Hazelcast Распределенная Maps. Все операции, такие как get, put и remove, будут выполнены с использованием логики распределенной карты . Единственным недостатком использования HazelcastCacheRegionFactory может быть более низкая производительность по сравнению с HazelcastLocalCacheRegionFactory, так как операции обрабатываются как распределенные вызовы.

Я думаю, что негативное влияние на производительность распределенного кэша Hibernate L2 не акцентируется достаточно в приведенных выше документы, так как на практике это может быть настолько велико, что скорость чтения данных из БД напрямую, как я объяснил here.