Ich habe ausführlich auf Zookeeper / sah Kurator , Eureka , ETCD und Konsul. Zookeeper / Curator und Eureka sind in vielerlei Hinsicht die besten und am einfachsten zu integrierenden, wenn Sie sich in der Java-Welt befinden. Etcd ist ziemlich cool und sehr flexibel, aber es ist wirklich nur ein HA-Schlüsselspeicher, sodass Sie viel Code schreiben müssten, um daraus ein System zur Erkennung von Meinungen zu machen.
Der Konsul ist (für mich) das Beste aus beiden Welten. Es handelt sich um ein Service-Discovery-System mit einer Meinung, das auf Leibeigenen geschrieben ist und Floß für Cluster-Konsens und Klatsch für Kommunikation verwendet. Es stellt die Erkennungs- / Registrierungsendpunkte mit einer gut dokumentierten REST-API bereit und ermöglicht es Ihnen, Dienste mit DNS-SRV-Einträgen zu erkennen und Dienste mit Konfiguration zu registrieren (dh Sie können eine Datenbank oder Anwendung registrieren, in die Sie keinen Client integrieren können). oder wenn Sie nur Ihre Serviceerkennung von Ihrer App entkoppeln möchten)
Ich habe einen Blog-Beitrag über Konsul geschrieben, in dem Sie mehr erfahren und meine Demo zum Ausprobieren durchgehen können
Ich habe auch die Diensterkennung mit etcd & docker besprochen, wenn Sie mehr darüber erfahren möchten, wie dieser benutzerdefinierte Code aussehen könnte.
Eine letzte Sache! etcd & consul sind in go geschrieben, daher ist die Wartung viel einfacher als bei Java-Lösungen wie zookeeper. Alles was Sie brauchen ist die binäre Konsul / etcd. Keine Abhängigkeiten, keine verknüpften Bibliotheken, kein JVM.
Ja, es gibt auch Doozerd (https://github.com/ha/doozerd) . Schauen Sie es sich gut an, es ist ein netter, einzelner binärer verteilter Koordinierungsdienst, der von Heroku entwickelt wurde. Mit Bindungen / Bibliotheken für Java / Python / Ruby / Node. Sehr einfach zu beginnen und herumzuspielen.
quelle
Schau dir Serf an . Es gibt einen Vergleich vs Zookeeper hier .
quelle
OpenReplica aus meiner Forschungsgruppe ist ein hochverfügbarer FOSS-Koordinierungsdienst für Rechenzentren. Es kann zur Implementierung von Sperren, Failover, Wahl von Führungskräften, Gruppenmitgliedschaft und anderen Koordinierungsdiensten verwendet werden. Es unterscheidet sich von ZooKeeper in zwei entscheidenden Punkten:
Es verwendet eine objektorientierte API. Dies erleichtert das Schreiben von Koordinierungsdiensten erheblich. Der Synchronisationscode für OpenReplica sieht genauso aus wie das Gegenstück zum Lehrbuch. Es ist nicht erforderlich, eine Datei und eine Upcall-basierte API wie in ZooKeeper und Chubby zu beherrschen.
Es ermöglicht dynamische Mitgliedschaftsaktualisierungen des Replikatsatzes. Es sind keine statischen Konfigurationsdateien erforderlich. Das System ist in DNS integriert (autorisierend, Slave für OpenReplica oder Amazon Route 53).
Wir unterstützen das System aktiv, zögern Sie nicht, uns zu informieren, wenn Sie weitere Fragen haben.
quelle
Es gibt ein Projekt namens Noah auf Github, das interessant aussieht. Es besagt, dass es "lose auf Apache ZooKeeper basiert" https://github.com/lusis/Noah, wobei die REST-Unterstützung eine Schlüsselfunktion ist (ZK hat dies eher als Beitrag / Option als eingebaut).
quelle
Es gibt verschiedene Tools, die für unterschiedliche technische Kompromisse optimiert sind.
Die anderen sind etwas interessant, aber im Allgemeinen nicht bewiesen. Verstehen Sie das nicht falsch, wenn es für die Produktion bestimmt ist.
quelle
Ich hatte diesen Vergleich von Zookeeper, etcd und Doozer gefunden: http://devo.ps/blog/zookeeper-vs-doozer-vs-etcd/
Serf (serfdom.io) ist auch eine schöne Lösung, da es einfach ist! Sie müssen jedoch berücksichtigen, dass SERF nur ein Cluster-Manager ist, mit dem Sie benutzerdefinierte Ereignisse an alle Clusterknoten senden können. Das ist schön, aber Sie müssen Ihre eigenen Shell-Skripte (auch bekannt als Events) schreiben. Siehe dieses Beispiel: " https://www.digitalocean.com/community/articles/how-to-set-up-a-serf-cluster-on-several-ubuntu-vps "
Der Vorteil ist, dass Sie einen sehr einfachen Cluster-Manager erhalten und diesen mit Ihrer bevorzugten Konfiguration, Bereitstellung oder kontinuierlichen Integration kombinieren können.
quelle
Es scheint, dass Corosync auch wie ZooKeeper ist.
quelle
Ich weiß, dass dieser Beitrag ziemlich alt ist, aber jemand, der nach allen möglichen Alternativen sucht, möchte ich auch die JGroups-Bibliothek vorschlagen, die ausgereift genug ist, um in der Produktionsumgebung verwendet zu werden. Ich habe es in einem meiner Projekte erfolgreich verwendet, hauptsächlich zur verteilten Koordination und zum Austausch von Nachrichten zwischen Clustern. Zusätzlich zu seiner flexiblen Architektur, in der Sie den Stack anpassen können, um das zu erhalten, was Sie benötigen, unterstützt es auch die AWS-Unterstützung. Ich schlage vor, dass Sie es sich ansehen
quelle