Какова роль Zookeeper против Eureka для микросервисов?

Я собираюсь реализовать оркестровку набора микросервисов в своем приложении. Я нашел два широко используемых инструмента: Apache Zookeeper и Netflix Eureka.

Может ли кто-нибудь дать мне сравнение, основанное на фундаментальных различиях, которые имеют эти две службы?

Есть ли другой мощный инструмент?

Ответ 1

Я собираюсь реализовать оркестровку набора микросервисов в своем приложении.

Это сложная проблема, которую нужно решить самостоятельно. Возможно, вам лучше использовать существующую систему оркестровки (см. Ниже).

Есть ли другой мощный инструмент?

Вы должны взглянуть на kubernetes, который, кажется, является стандартом в оркестровке в наши дни. Он имеет много дополнительных преимуществ (возможность масштабирования, самовосстановления и т.д.). Смотрите следующие ссылки:

Что касается сравнения зоопарка, эврики и кубернетес:

  • Zookeeper - это распределенное хранилище значений ключей. Он может использоваться в качестве основы для реализации обнаружения служб (аналогично etcd).
  • Eureka - это, прежде всего, балансировщик нагрузки (распределяет клиентские вызовы среди членов кластера приложений).
  • Kubernetes - это решение для управления контейнером, которое включает в себя развертывание, обнаружение и самовосстановление служб. Для полного списка функций, проверьте ссылку выше. Обнаружение сервиса в kubernetes основано на днс в виртуальной сети, которая охватывает и строит на etcd.
  • Консул (упомянутый в другом ответе) - это инфраструктура обнаружения служб с интерфейсом REST и некоторыми дополнительными функциями. Он имеет собственное внутреннее хранилище значений распределенных ключей.

Ответ 2

Другим инструментом может быть Консул.

Eureka - это, в основном, инструмент для обнаружения сервисов, предназначенный для использования в инфраструктуре AWS.

Zookeeper - это распределенное хранилище ключей/значений общего назначения, которое можно использовать для обнаружения услуг в сочетании с инфраструктурой curator-x-discovery.

Вот краткий обзор решений для обнаружения услуг

Вы также можете найти сравнение Consul против Eureka против Zookeeper здесь.

Хотя Consul и zookeeper - могут использоваться не только для обнаружения, но и как хранилище ключей/ценностей, преимуществами Consul являются отличные функции обнаружения служб из коробки.

  1. DNS из коробки
  2. удобный RESTful API
  3. HealthCheck API из коробки

Кроме того, консул имеет более распределенную природу: агенты установлены на всех сервисных виртуальных машинах и, следовательно, система имеет более высокую доступность, чем zookeeper. Имейте в виду, что система консул имеет низкую связь между центрами обработки данных.

Зоопарк зрелый, но слишком общий. Таким образом, вы можете использовать zookeeper не только для обнаружения служб, но и для хранения конфигов, распределенных блокировок, уведомлений и т.д. Опять же, удобно использовать всю эту функциональность с Curator Framework/Curator Recipes.

Zookeeper использует схему связи master/slave между узлами в кластере. Мастер избирается членами кластера. Имейте в виду, что могут быть крайние случаи (например, из-за проблем с сетью), когда в кластере появляется более 1 мастера. В этом случае помогает перезагрузка кластера.

Отличие Eureka от Zookeeper и Consul заключается в том, что Eureka - это система узкого назначения - система обнаружения услуг и распределения нагрузки.

Все 3 системы могут быть интегрированы с Spring.