JGroups, Terracotta и Hazelcast

Пытаюсь разобраться в этих трех проектах, и все они, кажется, решают немного разные проблемы, возникающие при попытке кластеризации. Но вся документация для них как бы написана для разработчиков, которые уже «в курсе», и новичку вроде меня сложно разобраться.

  • Какие конкретные проблемы пытается решить каждый из них и чем эти проблемы отличаются друг от друга?
  • Чем кластеризация с каждым из них отличается от кластеризации серверов приложений (например, со встроенными возможностями кластеризации JBoss или GlassFish)?
  • Достаточно ли различны задачи, которые решают эти фреймворки, чтобы их можно было использовать в одном и том же проекте? Или они являются конкурентами друг друга и поэтому имеют разные решения одной и той же/подобной проблемы?

Заранее спасибо за любое понимание этих любопытных, но неуловимых фреймворков!


person IAmYourFaja    schedule 09.07.2012    source источник


Ответы (2)


jgroups — это больше о распределении задач и управлении кластером, в то время как hazelcast/terracotta — это более распределенные кеши (сетки данных) — между ними, безусловно, есть перекрытие, когда вы сравниваете всю функциональность — вам нужно выяснить, какая функциональность более важна и, возможно, проще реализовать .

hazelcast позволяет кластеризовать либо через адресацию на основе tcp, либо через многоадресную рассылку. Он поддерживает карты, мультикарты, списки, очереди, темы — для резервного копирования на диск вам необходимо реализовать интерфейсы загрузки/сохранения.

С EhCache вы можете использовать репликацию JGroups, JMS или RMI для кэшей.

Короче говоря, если вы ищете распределенный кеш/сетку данных, инструменты для просмотра будут hazelcast или ehcache - если вы ищете распределение задач с использованием библиотеки и не беспокоитесь о существующих кэшах сетки данных, JGroups будет работать для тебя.

person ali haider    schedule 10.07.2012
comment
Спасибо @ali (+1) - хотя бы небольшое дополнение: как насчет моего второго вопроса? Чем кластеризация на JGroups/Hazelcast/Terracotta отличается от кластеризации моих серверов JBoss/GlassFish? Кроме того, все, что вы можете сделать, чтобы помочь мне понять разницу/взаимосвязь между Terracotta и EhCache, будет очень признательно! Спасибо еще раз! - person IAmYourFaja; 10.07.2012
comment
terracotta купила кэш и несколько лет назад включила его в свой продукт в качестве кэша. Я предполагаю, что вы ищете решения с открытым исходным кодом (если только вы не хотите получить корпоративные версии для этих продуктов). Я не проводил слишком много времени с JBoss/GlasshFish - я считаю, что JBoss использует JGroups для репликации/кластеризации памяти (не уверен, но я думаю, что вы могли бы попытаться использовать JMS/RMI для этого в прошлом, но я могу ошибаться) - вы также можете иметь резервные копии на диске. Не уверен насчет последней версии Glassfish. Надеюсь, поможет. - person ali haider; 11.07.2012
comment
@IAmYourFaja - AFAIK GlassFish использует Shoal для кластеризации. Shoal использует JXTA/JGroups под капотом. JBOSS использует комбинацию Infinispan и JGroups, где Infinispan — решение для сетки данных, а JGroups — решение для кластеризации. Hazelcast и Terracotta лучше сравнимы. Hazelcast можно использовать как для кластеризации, так и для сетки данных. Я не могу комментировать его производительность, так как еще не использовал его в производстве, но фреймворк очень прост в использовании. Еще одна вещь: Hazelcast разработан как одноранговое решение, тогда как Terracotta — это скорее тип master-slave. - person sutanu dalui; 29.03.2013

Можно выделить две категории технологий: i. активатор (т. е. промежуточный API) и ii. сквозное или готовое к использованию решение (т. е. прикладное API).

JGroups — это вспомогательная технология, поскольку ее ядро ​​реализует примитивы группового общения. такие как Reliable Unicast, Multicast и Broadcast, которые являются строительными блоками для более сложных распределенных протоколов, таких как Atomic Broadcast< /а>; он относится к категории наборов средств группового общения (GCT).

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

По возможностям:

  • JGroups предоставляет набор примитивов для включения членства в группе, что является ключевой концепцией в любом сценарии кластеризации, где необходимо управлять группой присоединяющихся/выходящих участников/узлов с точки зрения жизненного цикла и ролей; он позволяет создавать богатый набор протоколов на основе структуры ядра протокола путем объединения микропротоколов в базовые API-интерфейсы (как сказано, членство в группах), которые полагаются на надежное распределение сообщений как по TCP, так и по UDP*. По умолчанию JGroups не предоставляет составных услуг: такие услуги могут быть построены поверх базовых предоставляемых возможностей.*

  • Hazelcast предоставляет широкий набор распределенных структур данных, которые можно полностью реплицировать или разбивать на части с неявным коэффициентом репликации; распределенный список, карта, очередь и блокировка являются примерами базовых структур данных, реализованных с использованием интерфейсов коллекции Java, очевидно, что распространение и репликация неявно нуждаются в службах членства в группе, которые предоставляются его движком и, в частности, Диспетчер кластеров с модулем Cloud Discovery SPI. Hazelcast может осуществлять управление членством в группе с помощью IP Multicast, IP Multicast с TCP и сторонней облачной службы (например, Zookeeper). Потенциально Hazelcast может использовать службы JGroups для обнаружения узлов и управления кластерами (также известные как служба членства в группах).

  • С другой стороны, Terracotta, если он связан с популярным Ehcache, предоставляет услугу распределенного кэширования, которая, в свою очередь, основана на наборе базовых возможностей членства в группе; с точки зрения реализации, Terracotta Ehcache может быть основан на JGroups. services и предоставляет определенный набор API-интерфейсов, характерных для системы кэширования и поэтому менее общий, чем Hazelcast.

Принимая во внимание взаимосвязь между двумя типами технологий, JGroups фактически является вспомогательной службой (т. е. строительным блоком) для составных служб (т. е. семантически насыщенных API), таких как Hazelcast и Terracotta, которые предоставляют комплексные или готовые к использованию сервисы для сторонних приложений, управляя всеми аспектами надежного распространения за кулисами. Определенно, JGroups — это промежуточное программное обеспечение, а Hazelcast и Terracotta — это приложения, которые могут встраивать свою собственную реализацию промежуточного программного обеспечения для служб кластеризации.

person Paolo Maresca    schedule 25.11.2018