Zum Inhalt springen
Deutsch

Gossip-Kadenz

Cluster-Membership propagiert per Gossip — alle gossipIntervalMs wählt jedes Mitglied einen zufälligen erreichbaren Peer und tauscht seine Membership-Sicht aus. Nach ein paar Runden konvergiert der Cluster.

Cluster.join(system, {
host, port, seeds,
gossipIntervalMs: 1_000, // default
});

Der Default ist 1 Sekunde. Die meisten Cluster müssen ihn nie ändern.

Niedriger (z. B. 250 ms)Default (1 s)Höher (z. B. 5 s)
Schnellere KonvergenzAusgewogenLangsamere Konvergenz
Mehr Gossip-NachrichtenModerater TrafficWeniger Traffic
Schnellere Failover-ErkennungStandardLangsamerer Failover

Konkret:

  • Ein 5-Node-Cluster bei 1 s Gossip → typische Konvergenz nach einem Join: 2-3 Sekunden.
  • Bei 250 ms Gossip: ~700 ms.
  • Bei 5 s: ~10-15 Sekunden.

Unter 1 Sekunde drücken, wenn:

  • Latenz-sensitiver Failover — Singleton- oder Sharding-Muster, bei denen ein Leader-Wechsel im Sub-Sekunden-Bereich propagieren soll. 500 ms ist vernünftig; 250 ms ist aggressiv.
  • Kleiner Cluster (≤5 Nodes) — das Gossip-Volumen bleibt handhabbar.
  • Ruhiges Netzwerk — keine sonstigen Einschränkungen; schneller ist okay.

Über 1 Sekunde anheben, wenn:

  • Großer Cluster (20+ Nodes) — das Gossip-Volumen wächst im Worst Case clusterweit O(N²). 5 s verlangsamt die Konvergenz proportional, reduziert aber den Netzwerkrauschpegel deutlich.
  • Bandbreiten-beschränktes Netzwerk — Cross-Region- oder Cross-WAN-Cluster, in denen schwatzhaftes Gossip Verschwendung ist.
  • Stabiler Cluster — ändert sich selten; schnelleres Gossip hilft nicht.

Per-Node-Gossip-Bandbreite grob:

gossip_size × (1 / gossipIntervalMs) × peers_per_round

Per-Cluster:

N × gossip_size × (1 / gossipIntervalMs)

Mit:

  • gossip_size ~100-500 Bytes pro Mitglied in der Sicht. In einem 10-Node-Cluster liegen Gossip-Nachrichten bei ~1-2 KB.
  • peers_per_round = 1 (ein zufälliger Peer pro Tick).
  • N = Cluster-Größe.

Für einen 50-Node-Cluster bei 1 s Default-Gossip:

50 × ~5 KB × 1/s = 250 KB/s gesamt

Vernachlässigbar im LAN. Im High-Latency-WAN bei 10 ms RTT verlängert jede Gossip-Runde die In-Flight-Zeit um 10 ms — konvergiert langsamer als man hoffen würde.

Gossip-Kadenz betrifft mehrere andere Operationen:

OperationWie Gossip darauf wirkt
Konvergenz nach joinDirekt — langsameres Gossip = langsameres Up.
Failure-Detector-Unreachable-DetectionIndirekt — Gossip trägt Last-Seen-Zeiten.
Sharding-RebalanceCoordinator-Entscheidungen reiten auf Gossip.
DistributedPubSub-Topic-PropagationTopic→Node-Map gossipt mit der Cluster-Rate.
Receptionist-Service-RegistryDito — Gossip trägt Registrierungen.

Ein langsameres gossipIntervalMs verlangsamt all das. In stabilen Clustern üblicherweise okay; problematisch bei sich schnell ändernden Workloads.

Cluster-GrößeNetzwerkEmpfohlenes gossipIntervalMs
3-5 NodesLAN250-500 ms
5-15 NodesLAN1 s (Default)
15-50 NodesLAN1-2 s
50+ NodesLAN2-5 s
Cross-RegionWAN2-5 s
Latenz-sensitivLAN250-500 ms