Что делает сервер Terracotta, когда он используется в качестве бэкенда для EHCache с Hibernate?


Мой DAL реализован с помощью Hibernate, и я хочу использовать EHCache в качестве кэша второго уровня с его распределенными возможностями (для масштабируемости и высокой доступности).
Учитывая, что EHCache обеспечивает распределенное кэширование только с Terracotta, мой вопрос заключается в том, какова роль экземпляра сервера Terracotta? Он также хранит данные? Координирует ли он только распределение между секционированными частями кэша?
Мое замешательство происходит в основном из-за это объяснение относительно TSA, в котором говорится, что сервер хранит данные, но я думаю, что, возможно, в моем сценарии кеш и Terracotta сервер как бы объединены. Я прав?
Если сервер хранит данные, то почему бы узкому месту просто не переместиться с базы данных на сервер Terracotta?

Обновление: ответ Affe ответил на вторую часть моего вопроса, которая была важной частью, но на всякий случай, если кто-то придет, ища первую часть, я скажу, что сервер TC должен хранить все данные, которые EHCache в памяти хранится, поэтому, если вам нужен распределенный кеш (не реплицированный), то L2 (сервер TC) также должен содержать все объекты.

Заранее спасибо,
Иттай


person Ittai    schedule 31.01.2011    source источник


Ответы (2)


Идея заключается в том, что гораздо быстрее связаться с терракотовым кластером через терракотовый драйвер и сделать то, что в основном является поиском карты, чем получить соединение с базой данных и выполнить оператор SQL. Даже если это станет узким местом приложения, ожидается, что общая пропускная способность все равно будет значительно выше, чем у узких мест JDBC Connection + SQL. Открытые соединения и открытые курсоры требуют больших ресурсов в базе данных, а открытый сокет к терракотовому кластеру — нет!

person Affe    schedule 31.01.2011
comment
Я понимаю вопрос как - зачем EHCache нужна терракота, а например кеш JBoss децентрализован, и не требует никакого дополнительного сервера - person Bozho; 31.01.2011
comment
На самом деле вопрос был не в этом, но это хорошее дополнение. - person Ittai; 01.02.2011
comment
Я думаю, мы не ясно, на какой из ваших? утверждения риторические, а в чем собственно вопрос? «Да», вы понимаете, терракотовое решение использует внешний кластер серверов. Я попытался сосредоточиться на последнем актуальном вопросе: зачем вам вообще это делать. - person Affe; 01.02.2011

Вы можете сгруппировать ehcache без использования терракоты. У них есть документация для этого через RMI, JGroups и JMS. Мы используем JMS, поскольку у нас уже есть значительная инфраструктура JMS для обработки связи. Я не знаю, насколько хорошо он будет масштабироваться в долгосрочной перспективе, но наша текущая забота — это просто HA.

person Matt Campbell    schedule 01.02.2011
comment
Спасибо, Мэтт. Действительно, без Terracotta вы можете получить репликацию, а не распространение, что, похоже, не соответствует моим потребностям в отношении масштабируемости. - person Ittai; 01.02.2011
comment
eh может прекрасно служить в качестве кэша объектов с этими типами методов репликации, однако он не поддерживает более старый Hibernate SPI для блокировки при использовании таким образом. В частности, с кешем Hibernate L2 вы должны быть очень осторожны, так как Hibernate будет выдавать команды блокировки, которые он просто игнорирует. (поведение зависит от конкретных версий обоих) - person Affe; 01.02.2011