ZooKeeper - это высокодоступное координационное обслуживание центров обработки данных. Он возник в проекте Hadoop. Можно реализовать блокировку, потерпеть неудачу, выборы лидеров, членство в группах и другие проблемы с координацией. Есть ли альтернативы ZooKeeper? (конечно, бесплатное программное обеспечение)
Альтернативы 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
Ответ 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 в дополнение к своей гибкой архитектуре, где вы можете настроить свой стек, чтобы получить то, что вам нужно. Я предлагаю вам посмотреть на него