2017-07-17 6 views
0

Ich versuche, eine konsistente Hash-basierten Algorithmus in Java unter Verwendung der folgenden Referenz zu implementieren für sharding Schlüssel Redis -Implementieren Konsistente Hash-Algorithmus in Java

Stanford Theory on CH

Ich versuche, die beste Art und Weise zu verstehen, zu erzeugen, der Hascode für einen Knoten und einen Schlüssel. Derzeit bin ich die DigestUtils den Hash zu erzeugen, wie & folgt dem zurückgegebenen Wert in den Ring/Kreis hinzufügen -

private BigInteger hash(String key) { 
    return new BigInteger(DigestUtils.md5Hex(key.getBytes()), 16); 
} 

Ich wollte wissen, ob dieser Ansatz richtig klingt.

Antwort

0

Wenn Sie sich den Quellcode spymemcached client für Memcache ansehen, können Sie sehen, wie dieser Client den konsistenten Hashming-Algorithmus von Ketama implementiert hat. Konzentrieren Sie sich auf die folgenden Dateien:

Zwar nicht für Redis insbesondere die Prinzipien sind die gleichen.

0

In Redisson verwenden wir xxHash Algorithmus für sharded Map und Set-Objekte. Dieser Algorithmus hat eine bessere Verteilungseigenschaft.

Hier ist ein Anwendungsbeispiel bei der Implementierung von zero-allocation-hashing lib zur Verfügung gestellt:

long hash = LongHashFunction.xx().hashBytes(objectState); 
Verwandte Themen