Что бы вы рекомендовали для широкомасштабной технологии передачи данных Java: Terracotta, GigaSpaces, Coherence и т.д.?

Я читал о так называемых "сетях данных" для платформы Java, включая Terracotta, GigaSpaces и Coherence. Мне было интересно, есть ли у кого-нибудь реальный опыт работы с любым из этих инструментов и он может поделиться своим опытом. Мне также очень интересно узнать, с какими масштабами работают люди: разговариваем ли мы с кластерами 2-4 node или работали ли вы с чем-то значительно большим?

Меня привлекает Terracotta из-за его поддержки "спуска" в Hibernate и Spring, которые мы используем в значительной степени. Мне также нравится идея того, как он украшает байт-код на основе конфигурации и не требует от вас программы против "grid API". Я не знаю никаких преимуществ для инструментов, которые используют подход явного API, но хотел бы услышать о них, если они действительно существуют.:)

Я также потратил время на чтение memcached, но я больше заинтересован в том, чтобы услышать отзывы об этих трех конкретных решениях. Мне было бы интересно узнать, как они влияют на memcached, если кто-то использовал оба.

Ответы

Ответ 1

У нас было 50 серверов, на которых запущено приложение webservice, и все эти серверы были сбалансированы по нагрузке с помощью bigIP. Требование состояло в том, чтобы кэшировать каждое пользовательское состояние, чтобы последующие состояния не выполняли такую ​​же обработку снова и получали данные из предыдущего состояния. Таким образом, клиенту веб-службы не нужно поддерживать состояние.

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

Ответ 2

Вы можете также проверить Hazelcast. Hazelcast - это транзакция с открытым исходным кодом, распределенная/секционированная реализация очереди, темы, карты, набора, списка, блокировки и службы-исполнителя. С ней очень легко работать; просто добавьте hazelcast.jar в свой путь к классам и начните кодирование. Почти не требуется настройка.

Hazelcast выпущен под лицензией Apache, а также доступна поддержка корпоративного уровня. Код размещен в Код Google.

Ответ 3

Библиотека, которую вы выбираете, действительно зависит от вашего приложения и того, чего вы пытаетесь достичь.

Я работал в магазине, который использовал Coherence для обеспечения масштабируемости (и избыточности, своего рода) для его веб-приложений. Мы обнаружили, что у вас должно быть около 4-5 узлов, чтобы начать получать какие-либо выгоды от Coherence (2 или 3 узла потенциально снижают производительность). Я считаю, что Oracle docs заявляет, что вам нужно много (30+) узлов, чтобы действительно получить выгоду от Coherence. Если вы поедете с Coherence, убедитесь, что вы правильно настроили свое оборудование - он очень чувствителен к задержке.

Я лично бы держался подальше от "капель". Они могут дать вам кое-что для начала, но в конечном итоге вы столкнетесь с проблемами синхронизации или производительности и в любом случае вам придется начинать писать код, специфичный для вашего слоя сетки. В основном, вы знаете свое приложение лучше, чем библиотека, и сможете выяснить, какие элементы должны быть в кеше, как долго они должны жить, как ваше приложение будет использоваться и т.д.