package
0.0.0-20241225174012-7a0820eadc6a
Repository: https://github.com/chtonad0000/golang.git
Documentation: pkg.go.dev
# README
consistenthash
Реализуйте consistent hashing.
Consistent hashing - это хеш функция, которая отображает множество ключей на множество нод (процессов в кластере).
Пусть у вас есть N
процессов. Можно было бы использовать функцию hash(key) % N
,
где hash
- какая-то "хорошая" хеш функция. Но если в систему добавить еще один процесс,
почти все ключи "переедут". Потому что hash(key) % N != hash(key) % (N + 1)
.
Такие "переезды" в распределённой системе могут вызывать недоступность или
просто создавать большую нагрузку. Эту проблему решает consistent hashing.
Он гарантирует, что при добавлении новой ноды, "переедут" только ~ 1/N
ключей.
Для реализации используйте кольцо с виртуальными нодами, которое описано в CS168: Introduction and Consistent Hashing
# Functions
No description provided by the author
# Structs
No description provided by the author
# Interfaces
No description provided by the author