2016-04-17 9 views
1

Haftungsausschluss: Ich bin ziemlich neu für das etcd Projekt und ZooKeeper Projekt.Wie gut sind ZooKeeper und Etcd?

Ich interessiere mich vor kurzem für die verteilten Open-Source-Produkte. Ich habe festgestellt, dass sie Konfiguration (Koordination?) Systeme wie ZooKeeper für Presto DB, Hive und Etcd für Kubernetes erfordern und ich denke, dass das Verständnis der Rolle von etcd und ZooKeeper der erste Schritt zum Verständnis der verteilten Systeme ist.

Aber jetzt fühle ich mich wie verloren ... Ich konnte noch nicht verstehen, was die guten und einzigartigen Punkte der etcd und ZooKeeper ist. Sie suchen für mich einen gut verteilten Schlüssel-Wert-Speicher oder Dateisysteme. Hier ist der Eindruck, den ich für die Produkte habe. Ich weiß, dass die Impressionen nicht die Eigenschaften der Produkte widerspiegeln. aber ich weiß nicht, was das verbleibende Feature ist, das ich wissen sollte.

ZooKeeper: Laut der Übersichtsseite von ZooKeeper garantiert es die folgenden Dinge.

  • Sequenzielle Konsistenz - Aktualisierungen von einem Client werden in der Reihenfolge ihrer Übermittlung angewendet.
  • Atomarität - Aktualisierungen sind entweder erfolgreich oder fehlgeschlagen. Keine Teilergebnisse
  • Einzelnes Systemabbild - Ein Client erhält dieselbe Ansicht des Dienstes, unabhängig vom Server, mit dem er verbunden ist.
  • Zuverlässigkeit - Sobald ein Update angewendet wurde, bleibt es ab diesem Zeitpunkt bestehen, bis ein Client das Update überschreibt.
  • Aktualität - Die Client-Ansicht des Systems wird garantiert innerhalb einer bestimmten Zeit aktualisiert.
  • Die sequenzielle Konsistenz und Atomarität sind die einzigartigen Merkmale, die von den meisten Dateisystemen nicht unterstützt werden, aber andere sind unter anderen Dateisystemen üblich.

    Etcd: Laut der Readme von etcd. es konzentriert sich auf

    • Einfache: curl'able-Benutzer gegenüber API (HTTP + JSON)
    • Sichere: optionale SSL-Client-Zertifikat-Authentifizierung
    • Schnelle: 1000s schreibt/s gebenchmarkt pro Instanz
    • Reliable: richtig
    mit Raft verteilt

    Die meisten von ihnen scheint häufig mit Amazon S3 (S3 unterstützt einen solchen schnellen Zugriff nicht.)

    Ich weiß, dass diese Produkte sehr gute sind, weil die meisten der verteilte Open Source-Produkte von ihnen abhängen. aber was ist der Schlüssel, einzigartige Eigenschaft, die das verteilte Open-Source-Produkt sie wählen?

    +0

    Ich schlage vor, Sie auch dies in die Mailing-Liste (ich nehme an, es gibt eine). – DavidS

    Antwort

    5

    Ich denke, Sie verwechseln die Dateisystem-ähnliche Schnittstelle mit einem tatsächlichen Dateisystem. Die von Ihnen erwähnten Systeme eignen sich gut für die Cluster-Koordination, insbesondere für ZooKeeper. Was sie sind nicht entwickelt für speichert große Datenmengen wie ein Dateisystem würde. Sie sollten an sie mehr als für ein Dateisystem passend denken.Das heißt, man könnte sich ein Dateisystem vorstellen, das Pfade zu Dateien in einem konsistenten Speicher wie ZooKeeper oder etcd speichert, aber nicht die Dateien selbst. Dass sie eine Dateisystem-ähnliche Schnittstelle verfügbar machen, korreliert nicht mit der Fähigkeit, Dateien zu speichern. Tatsächlich sind diese Systeme dazu ausgelegt, kleine Datenmengen zu speichern, die im Speicher gehalten werden können. Durch die Verwendung eines konsistenten Speichers wie ZooKeeper zum Speichern von Dateiinformationen in einem verteilten Dateisystem würde das Dateisystem sicherstellen, dass Clients Änderungen im Dateisystem in sequenzieller Reihenfolge sehen.

    ZooKeeper ist wirklich eine Reihe von Primitiven, mit denen verteilte Systeme koordiniert werden können. Besonders relevant für die Koordination verteilter Systeme mit ZooKeeper sind seine Sitzungsereignisse (Watches), die es Clients ermöglichen, auf Änderungen des Clusterstatus zu warten. Verteilte Systeme verwenden in ZooKeeper normalerweise Uhren für Dinge wie Schlösser und die starken Konsistenzgarantien von ZooKeeper machen es perfekt für diesen Anwendungsfall geeignet.

    Wenn Sie eine gute Vorstellung davon haben möchten, welche Systeme wie ZooKeeper und etcd verwendet werden, sollten Sie die Apache Curator recipes überprüfen. Atomix implementiert auch ähnliche Arten von APIs zum Koordinieren verteilter Systeme zusätzlich zu einem Konsensusalgorithmus. Alle diese Tools demonstrieren typische Anwendungsfälle für konsensbasierte verteilte Systeme.

    Es ist wichtig zu beachten, dass diese Arten von Systemen auf Consensus-Algorithmen aufgebaut sind und normalerweise den Zustand im Speicher speichern. Sie eignen sich für Vorgänge, bei denen nur eine geringe Datenmenge benötigt wird, die jedoch ein hohes Maß an Konsistenz erfordern. Aus diesem Grund werden sie häufig für verteilte Sperren, das Konfigurationsmanagement und die Gruppenmitgliedschaft verwendet.