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.
Was er steuert
Abschnitt betitelt „Was er steuert“| Niedriger (z. B. 250 ms) | Default (1 s) | Höher (z. B. 5 s) |
|---|---|---|
| Schnellere Konvergenz | Ausgewogen | Langsamere Konvergenz |
| Mehr Gossip-Nachrichten | Moderater Traffic | Weniger Traffic |
| Schnellere Failover-Erkennung | Standard | Langsamerer 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.
Wann senken
Abschnitt betitelt „Wann senken“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.
Wann erhöhen
Abschnitt betitelt „Wann erhöhen“Ü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.
Die Bandbreiten-Mathematik
Abschnitt betitelt „Die Bandbreiten-Mathematik“Per-Node-Gossip-Bandbreite grob:
gossip_size × (1 / gossipIntervalMs) × peers_per_roundPer-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 gesamtVernachlä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.
Wechselwirkung mit anderen Timings
Abschnitt betitelt „Wechselwirkung mit anderen Timings“Gossip-Kadenz betrifft mehrere andere Operationen:
| Operation | Wie Gossip darauf wirkt |
|---|---|
Konvergenz nach join | Direkt — langsameres Gossip = langsameres Up. |
| Failure-Detector-Unreachable-Detection | Indirekt — Gossip trägt Last-Seen-Zeiten. |
| Sharding-Rebalance | Coordinator-Entscheidungen reiten auf Gossip. |
| DistributedPubSub-Topic-Propagation | Topic→Node-Map gossipt mit der Cluster-Rate. |
| Receptionist-Service-Registry | Dito — Gossip trägt Registrierungen. |
Ein langsameres gossipIntervalMs verlangsamt all das. In
stabilen Clustern üblicherweise okay; problematisch bei sich schnell
ändernden Workloads.
Empfohlene Werte
Abschnitt betitelt „Empfohlene Werte“| Cluster-Größe | Netzwerk | Empfohlenes gossipIntervalMs |
|---|---|---|
| 3-5 Nodes | LAN | 250-500 ms |
| 5-15 Nodes | LAN | 1 s (Default) |
| 15-50 Nodes | LAN | 1-2 s |
| 50+ Nodes | LAN | 2-5 s |
| Cross-Region | WAN | 2-5 s |
| Latenz-sensitiv | LAN | 250-500 ms |
Wohin als nächstes
Abschnitt betitelt „Wohin als nächstes“- Cluster-Überblick — was Gossip trägt.
- Joining und Seeds — wie die erste Gossip-Runde ein Mitglied bootstrapped.
- Failure Detector — konsumiert Gossip für Heartbeat-Tracking.
- Failure-Detector-Tuning — der komplementäre Tuning-Knopf.
- Konfiguration — der HOCON-Key für diese Einstellung.