1

Mirroring repliziert Daten zwischen Kafka-Clustern, während Replication zum Replizieren von Knoten innerhalb eines Kafka-Clusters dient.Apache Kafka: Spiegelung vs. Replikation

Gibt es eine spezifische Verwendung von Replication, wenn Mirroring bereits eingerichtet wurde?

Antwort

3

Sie werden für verschiedene Anwendungsfälle verwendet. Lass uns versuchen zu klären.

Wie in den documentation beschrieben,

Der Zweck der Replikation in Kafka der Zugabe ist für eine stärkere Haltbarkeit und eine höhere Verfügbarkeit. Wir möchten garantieren, dass jede erfolgreich veröffentlichte Nachricht nicht verloren geht und konsumiert werden kann, selbst wenn Serverfehler auftreten. Solche Fehler können durch Maschinenfehler, Programmfehler oder häufiger durch Softwareaktualisierungen verursacht werden. Wir haben die folgenden High-Level-Ziele:

Innerhalb eines Clusters könnte es Netzwerk-Partitionen (ein einzelner Server ausfällt, und so weiter), damit wir die Replikation zwischen den Knoten zur Verfügung stellen möchten. Bei einem Setup von drei Knoten und einem Cluster gibt es, wenn server1 ausfällt, zwei Replikate, aus denen Kafka auswählen kann. Gleicher Cluster bedeutet gleiche Antwortzeiten (ok, es hängt auch davon ab, wie diese Server konfiguriert sind, sicher, aber in einem normalen Szenario sollten sie sich nicht so sehr unterscheiden). Die Spiegelung hingegen scheint beispielsweise beim Migrieren eines Rechenzentrums oder bei mehreren Rechenzentren (z. B. AWS in den USA und AWS in Irland) sehr nützlich zu sein. Natürlich sind dies nur ein paar Anwendungsfälle. Was Sie also tun, ist, dass Anwendungen, die zu demselben Datenzentrum gehören, schneller und besser auf Daten zugreifen können - Datenlokalität ist in manchen Kontexten alles.

Wenn Sie in jedem Cluster einen Knoten haben, können Sie im Falle eines Fehlers viel höhere Antwortzeiten haben, zum Beispiel von AWS in Irland zu AWS in den USA.

Sie könnten behaupten, dass man, um Datenlokalität zu erreichen (Dienste in Cluster eins gelesen von Kafka in Cluster 1), immer noch die Daten von einem Cluster zum anderen kopieren muss. Das ist definitiv richtig, aber die Vorteile, die Sie mit der Spiegelung erhalten könnten, könnten höher sein als die, die Sie durch direktes Lesen (über einen SSH-Tunnel?) Von Kafka in einem anderen Rechenzentrum erhalten würden, zum Beispiel einzelne Verbindungen nach unten, Verbindungs-/Sitzungszeiten länger (abhängig vom Standort des Datenzentrums), Gesetzgebung (einige Daten können in einem Land gesammelt werden, während andere Daten dies nicht tun sollten).

Replikation ist die Grundlage für höhere Verfügbarkeit. Sie sollten Mirroring nicht verwenden, um hohe Verfügbarkeit in einem Kontext zu handhaben, in dem Datenlokalität von Bedeutung ist. Gleichzeitig sollten Sie nicht nur die Replikation verwenden, wo Sie Daten über Rechenzentren duplizieren müssen (ich weiß nicht einmal, ob Sie ohne Spiegelung/einen SSH-Tunnel können).