2010-02-19 4 views
4

Я оцениваю различные библиотеки распространения объектов Java (Terracotta, JCS, JBoss, Hazelcast ...) для сервера приложений, и у меня возникают проблемы с пониманием их поведения на разных осях.Java распределенные объекты с локальностью?

Мои требования к распределенным объектам не так много - они сводятся к сообщениям «один к одному» и «один ко многим». Там больше, но для остальных мы просто используем JDBC, и я предполагаю, что я могу перекрыть кэш перед этим, используя любую из доступных библиотек.

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

Я бы хотел, чтобы объекты сохранялись, желательно прозрачно. Я планирую использовать EC2, поэтому у меня есть возможность временного, свободного, ограниченного локального хранилища (диска) и постоянного, несвободного неограниченного хранилища (S3). Было бы здорово не беспокоиться об OutOfMemoryErrors.

Мне нравится простота и «волшебство» Терракотты, но это пугает меня от меня beejeezus. Также для того, чтобы действительно масштабировать, вам нужно потратить $$$$, иначе вы общаетесь с одним концентратором.

Я дешевый, и я хочу что-то не только бесплатное, но и зрелое и с большой пользовательской базой.

Спасибо за любой ввод.

ответ

2

Терракота кажется идеально подходящей для вашей ситуации.

  • Это просто настроить
  • он может быть настроен, чтобы быть стойкими (используйте объем EBS для EC2)
  • он тесно интегрирован с Ehcache (фактически Терракотовые купил Ehcache) для выполнения большого распределенного кэширования
  • бесплатное предложение довольно хорошо сочетается с несколькими клиентами.

Просто начните играть с ним. Держу пари, тебе понравится. Чтобы облегчить ваши опасения в отношении производительности, просто запустите тест сквозного теста для передачи сообщений. Это не должно быть намного больше, чем днем ​​вашего времени.

Должен признать, что я не использовал Терракоту в течение года и что я не знаю других, которые вы предложили.

1

Терракота подходит к счету. Я понимаю ваши возражения, но вот мои комментарии:

1) Терракота действительно показывает местность - и, вероятно, это лучшая система на ней по сравнению с теми, о которых вы упомянули. Объекты вводятся только в локальную JVM, где запрашивается. Блокировка для чтения или записи выполняется с использованием механизма лизинга. Это означает, что если вы продемонстрируете идеальную локальность в своей системе, вы понесете очень мало сетевых издержек.

2) Терракотовая обеспечивает сохранение диска из коробки - в версии ОСС (вам не придется платить $$$$)

3) Почему это пугает вас так много? Просто используйте EHCache в качестве кеша или плагин второго уровня Hibernate. Это невероятно легко настроить и использовать.

4) Да, Terracotta FX требует от вас оплаты (для масштабируемых серверов).Однако я бы предположил, что если у вас есть система, которая в основном читается и демонстрирует истинную локальность, тогда я не думаю, что у вас возникнет проблема в получении масштаба, который вы ищете. С Terracotta 3.2 производительность кэша второго уровня Hibernate составляет 100 000 операционных систем с использованием 8 серверов приложений и одного сервера Terracotta со скоростью чтения/записи 100/0 и 12 000 операционных систем с использованием той же конфигурации, что и коэффициент чтения/записи 95/5.

(я просто сделал разговор для Bay Area SDForum по этим номерам, так что я посчастливилось иметь их под рукой)

+0

Мне нравится TC, за исключением того, что мои тесты с использованием DSO против моих собственных объектов не так хорошо. Есть немного snafus, которые вы не узнаете, если не выполняете тонну тестирования (или не находите их на производстве). Возможно, EHCache будет более идиотским. – sehugg

0

Btw, это не ясно, что вы ищете (обмен сообщениями не такой же, как кластеризация/распределенный объекты).

Если вы ищете обмен сообщениями на Java, я рекомендую вам взглянуть на RabbitMQ (это основан на Erlang, но это не имеет значения).

+0

Я посмотрел на RabbitMQ, но у него есть недостаток в том, что он не может оставаться на диске еще (скоро появится). Я надеялся объединить кластерные объекты/распределенные требования к кешу/сообщениям в одну систему, чтобы снизить сложность. – sehugg

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

  • Нет связанных вопросов^_^