ZooKeeper est un service de coordination hautement disponible pour les centres de données. Cela provient du projet Hadoop. On peut mettre en œuvre le verrouillage, l'échec, l'élection du chef, l'appartenance à un groupe et d'autres problèmes de coordination. Existe-t-il des alternatives à ZooKeeper? (logiciel libre bien sûr)
Réponses
Trop de publicités?J'ai regardé longuement à Zookeeper/Conservateur, Eureka, etcd, et le consul. Zookeeper et Conservatrice, et Eureka sont à bien des égards le plus poli et le plus facile à intégrer si vous êtes dans le monde Java. Etcd est assez cool et très souple, mais Il est vraiment juste une HA magasin de clés de sorte que vous avez à écrire beaucoup de code pour le transformer en un opiniâtre de découverte de service du système.
Le Consul est (pour moi) le meilleur des deux mondes. C'est un opiniâtre de découverte de service du système d'écrit sur le dessus de serf, à l'aide de radeau pour le groupe de consensus et de ragots pour la communication. Il expose la découverte / l'enregistrement des points de terminaison avec une bien documenté api REST, et vous permet également de découvrir des services avec les enregistrements DNS SRV, et le registre de services avec la configuration (c'est à dire de sorte que vous pouvez enregistrer une base de données ou l'application que vous ne pouvez pas intégrer un client, ou si vous voulez juste pour garder votre service de découverte découplé à partir de votre application)
J'ai écrit un billet de blog à propos du consul d' où vous pouvez en apprendre plus et de marcher à travers mon "essayer" de démonstration
J'ai également discuté de la découverte de services avec etcd & docker si vous voulez en savoir plus sur ce que le code personnalisé pourrait ressembler.
Une dernière chose! etcd et consul sont écrits en aller, afin de maintenir leur est beaucoup plus facile que les solutions java comme la gardienne. Tous vous avez besoin est le consul / etcd binaire. pas de dépendance, pas de librairies, pas de jvm.
Il existe une alternative très prometteuse à ZooKeeper appelée etcd (github.com/coreos/etcd) , écrite par l'équipe CoreOS. Contrairement à Doozerd, etcd est activement développé.
Viens de découvrir Accord (C) et OpenReplica/ConCoord (Python) qui peuvent être des solutions intéressantes
[MODIFIER] La Hashicorp de l'équipage, de l'Errance et de Packer fame, sont de cuisine "une solution décentralisée pour le service de découverte et d'orchestration" appelé Serf.
[EDIT2] Hashicorp frappe à nouveau ! Ils viennent de sortir de Consul, construit sur le haut du Serf. Le pitch: "une solution pour la découverte de service et de configuration, complètement distribué, hautement disponible et évolutive à des milliers de nœuds et de services entre plusieurs centres de données".
Oui, il existe également Doozerd (https://github.com/ha/doozerd) . Regardez bien, c'est un bon service de coordination distribué binaire simple développé par Heroku. Avec des liaisons / bibliothèques pour java / python / ruby / node. Très facile de commencer et de jouer.
OpenReplica de mon groupe de recherche est très disponible logiciels libres service de coordination pour les centres de données. Il peut être utilisé pour la mise en œuvre de verrouillage, d'un basculement, chef de file de l'élection, les membres du groupe et d'autres services de coordination. Elle diffère de la Gardienne de deux façons:
Il utilise une API orientée objet. Cela le rend beaucoup plus facile d'écrire de la coordination des services. Code de synchronisation pour OpenReplica ressemble exactement à son homologue manuel; il n'est pas nécessaire de maîtriser un fichier et upcall API comme dans ZooKeeper et Joufflu.
Il permet aux membres dynamiques mises à jour pour le jeu de réplicas. Il n'est pas nécessaire pour les fichiers de configuration statique. Le système est intégré dans le système DNS (autorité, de l'esclave pour OpenReplica, ou Amazon Route 53).
Nous soutenons activement le système, n'hésitez pas à laissez-nous savoir si vous avez d'autres questions.