Согласованное хеширование в реальном времениJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Согласованное хеширование в реальном времени

Сообщение Anonymous »

Я просмотрел множество руководств, статей и блогов, посвященных последовательному хешированию. Я понял концепцию и функциональное поведение. Но еще есть немало вопросов. Попробовал реализовать концепцию, как я понимаю.

Код: Выделить всё

public class ConsistentHashing {
private final TreeMap ring;
private final int numberOfReplicas;
private final MessageDigest md;

public ConsistentHashing(int numberOfReplicas) throws NoSuchAlgorithmException {
this.ring = new TreeMap();
this.numberOfReplicas = numberOfReplicas;
this.md = MessageDigest.getInstance("MD5");
}

public void addServer(String server) {
for (int i = 0; i < numberOfReplicas; i++) {
long hash = generateHash(server + i);
ring.put(hash, server);
}
}

public void removeServer(String server) {
for (int i = 0; i < numberOfReplicas; i++) {
long hash = generateHash(server + i);
ring.remove(hash);
}
}

public String getServer(String key) {
if (ring.isEmpty()) {
return null;
}
long hash = generateHash(key);
if (!ring.containsKey(hash)) {
SortedMap tailMap = ring.tailMap(hash);
hash = tailMap.isEmpty() ? ring.firstKey() : tailMap.firstKey();
}
return ring.get(hash);
}

private long generateHash(String key) {
md.reset();
md.update(key.getBytes());
byte[] digest = md.digest();
long hash = ((long) (digest[3] & 0xFF) 

Подробнее здесь: [url]https://stackoverflow.com/questions/78966865/consitent-hashing-in-real-time[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»