Что бы вы рекомендовали для широкомасштабной технологии передачи данных 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, убедитесь, что вы правильно настроили свое оборудование - он очень чувствителен к задержке.
Я лично бы держался подальше от "капель". Они могут дать вам кое-что для начала, но в конечном итоге вы столкнетесь с проблемами синхронизации или производительности и в любом случае вам придется начинать писать код, специфичный для вашего слоя сетки. В основном, вы знаете свое приложение лучше, чем библиотека, и сможете выяснить, какие элементы должны быть в кеше, как долго они должны жить, как ваше приложение будет использоваться и т.д.
Ответ 4
Мне не хватает опыта с этими технологиями, но я думаю, что Apache Hadoop окажется масштабируемым и надежным. Yahoo запустил его на 10 000 основных кластеров Linux.
Он основан на алгоритме Google MapReduce.
В этой статье описывается MapReduce и почему вы должны заботиться об этом.