Альтернативы ZooKeeper? (служба координации кластеров)

ZooKeeper - это высокодоступное координационное обслуживание центров обработки данных. Он возник в проекте Hadoop. Можно реализовать блокировку, потерпеть неудачу, выборы лидеров, членство в группах и другие проблемы с координацией. Есть ли альтернативы ZooKeeper? (конечно, бесплатное программное обеспечение)

Ответ 1

Я широко посмотрел на Zookeeper/Curator, Eureka, etcd, и консул. Zookeeper/куратор и Eureka во многих отношениях наиболее отполированы и легче всего интегрируются, если вы находитесь в мире Java. etcd довольно круто и очень гибко, но на самом деле это просто магазин ключей HA, поэтому вам нужно будет написать много кода, чтобы превратить его в упрямую службу системы обнаружения.

Consul (для меня) лучшее из обоих миров. Это система самоутверждения службы, написанная поверх serf, используя плот для консенсуса кластера и сплетни для общения. Он предоставляет конечные точки обнаружения/регистрации с хорошо документированным REST api, а также позволяет вам обнаруживать службы с DNS SRV-записями и регистрировать службы с конфигурацией (т.е. Вы можете зарегистрировать базу данных или приложение, с которым вы не можете интегрировать клиента, или если вы просто хотите, чтобы ваше обнаружение сервиса было отключено от вашего приложения)

Я написал сообщение в блоге о консуле, где вы можете узнать больше и пройтись по моей демонстрации "попробуйте"

Я также обсуждал обнаружение службы с помощью etcd и docker, если вы хотите узнать больше о том, как выглядит этот пользовательский код.

Последняя вещь! etcd и consul написаны в go, поэтому поддерживать их намного проще, чем Java-решения, такие как zookeeper. Все, что вам нужно, это двоичный файл consul/etcd. нет зависимостей, нет связанных библиотек, нет jvm.

Ответ 2

Там очень перспективная альтернатива ZooKeeper под названием etcd (github.com/coreos/etcd), написанная командой CoreOS. В отличие от Doozerd, и т.д. Активно развивается.

Ответ 3

Только что обнаружено Accord (C) и OpenReplica/ConCoord (Python), которые могут быть интересными решениями

[EDIT] Команда Hashicorp, известность Vagrant и Packer, готовит "децентрализованное решение для обнаружения сервисов и оркестровки" под названием Serf.

[EDIT2] Хашикорп снова наносит удар! Они только что выпустили Consul, построенный поверх Серфа. Шаг: "решение для обнаружения и конфигурации службы, полностью распределенное, высокодоступное, масштабируемое до тысяч узлов и служб в нескольких центрах обработки данных".

Ответ 4

Да, есть также Doozerd (https://github.com/ha/doozerd). Взгляните на это хорошо, это одноразовое распределенное координационное обслуживание, разработанное Heroku. С привязками/библиотеками для java/python/ruby ​​/ node. Очень легко начать и поиграть.

Ответ 5

Взгляните на Serf. Существует сравнение с Zookeeper здесь.

Ответ 6

OpenReplica из моей исследовательской группы - это высокодоступная служба координации FOSS для центров обработки данных. Он может использоваться для реализации блокировки, сбоя, выборов лидеров, членства в группах и других служб координации. Он отличается от ZooKeeper двумя критическими способами:

  • Он использует объектно-ориентированный API. Это значительно упрощает работу с координационными службами. Код синхронизации для OpenReplica выглядит точно так же, как и его экземпляр учебника; нет необходимости управлять файлом и API на основе upcall, как в ZooKeeper и Chubby.

  • Он позволяет динамическим обновлениям членства в наборе реплик. Статических файлов конфигурации не требуется. Система интегрирована в DNS (авторитетная, подчиненная для OpenReplica или Amazon Route 53).

Мы активно поддерживаем систему, не стесняйтесь сообщать нам, если у вас есть дополнительные вопросы.

Ответ 7

Там есть проект под названием Noah on github, который выглядит интересным, он говорит, что он "свободно основан на Apache ZooKeeper" https://github.com/lusis/Noah с поддержкой REST (ZK имеет это как вклад/вариант, а не встроенный).

Ответ 8

Существуют различные инструменты, которые оптимизируются для разных технических компромиссов.

  • ZooKeeper Масштабирует для чтения; пишет со многими наблюдателями, может быть медленным. Это доказано и имеет значительное сообщество.
  • Accord Представляется интересным для использования с интенсивной записью, однако в типичных случаях использования уже есть решения, специфичные для домена (т.е. протоколирование, телеметрия).

Остальные несколько интересны, но в целом недоказаны. Не делайте это неправильно, если они предназначены для использования в производстве.

Ответ 9

Я нашел это сравнение Zookeeper, etcd и Doozer: http://devo.ps/blog/zookeeper-vs-doozer-vs-etcd/

Serf (serfdom.io) также является хорошим решением, так как это просто! Но вы должны учитывать, что SERF - это просто кластер-менеджер, который позволяет отправлять пользовательские события ко всем узлам кластера. Это хорошо, но вы должны написать свои собственные сценарии оболочки (также называемые событиями). См. Этот пример: " https://www.digitalocean.com/community/articles/how-to-set-up-a-serf-cluster-on-several-ubuntu-vps"

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

Ответ 10

Кажется, Corosync также похож на ZooKeeper.

Ответ 11

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