Zum Inhalt springen
uencoder

Consistent Hashing

Consistent Hashing remappt beim Hinzufügen oder Entfernen von Knoten nur 1/n der Keys neu und minimiert die Umverteilung; es wird in verteiltem Caching und Sharding eingesetzt.

Zweck

Datenbewegung beim Beitreten oder Verlassen von Knoten minimieren; eine Kerntechnik für verteilten Speicher und verteiltes Caching.

Mechanismus

Knoten und Keys werden auf einen Hash-Ring von 0-2^32 abgebildet; jeder Key gehört zum ersten Knoten im Uhrzeigersinn. Das Hinzufügen oder Entfernen eines Knotens betrifft nur die Keys des angrenzenden Bogens. Virtuelle Knoten (mehrere Hash-Punkte pro Knoten) verbessern die Balance. Die Last verteilt sich ungefähr gleichmäßig.

Anwendungsfälle

  • Verteiltes Caching (Memcached)
  • CDN-Knoten-Sharding
  • Datenbank-Sharding (Cassandra)
  • Lastverteilung

Beispiele

  • Eingabe
    Node C joins
    Output
    Only keys in C's adjacent arc migrate

    Minimal migration

Häufige Fehler

Too few virtual nodes causes uneven load
Use 150+ virtual nodes per node

Verwandte Begriffe

References