2016-07-01 4 views
0

В настоящее время мы создаем кластер с использованием Hazelcast на трех узлах с Hibernate в качестве нашего доступа к базе данных. Теперь мы заметили, что сериализация Hazelcast по умолчанию для отправки события для обновления кэша второго уровня Hibernate требует полной сериализации CacheKey Hibernate, которая в нашем случае особенно велика из-за встроенных ключей (3,8 Кбайт).Hazelcast Hibernate CacheKey size

Нам было интересно, есть ли способ отправить минимальный объем данных по сети и перестроить CacheKey на принимающем узле. В нашей текущей реализации мы отправляем ключ, entityOrRoleName и tenantId, но испытываем трудности с восстановлением типа CacheKey.

Любые предложения о том, как это сделать? Поддерживает ли Hibernate поддержку для восстановления CacheKey (типа) с использованием этих данных?

ответ

1

На самом деле мы используем специальный Hibernate4CacheKeySerializer. См. https://github.com/hazelcast/hazelcast-hibernate/blob/master/hazelcast-hibernate4/src/main/java/com/hazelcast/hibernate/serialization/Hibernate4CacheKeySerializer.java.

Это уже более эффективно, чем Java-сериализация.

Мы не считаем возможным сделать это более эффективным.

+0

Я одобрю ваш ответ. В конце концов мы закончили тем, что решили очень похожее решение. Основное отличие состоит в том, что при чтении вместо использования UNSAFE (мне понравилась эта часть) я проанализировал, как Hibernate генерирует свой CacheKey и создает нечто подобное. Извините, я не могу сделать свое решение доступным – stikku

Смежные вопросы