B
Backend Notes 🧠 👨‍💻
@backend_architecture1.8K подп.
7.7Kпросмотров
29 июля 2023 г.
📷 ФотоScore: 8.5K
🔥 Consistent Hashing   💡 Хеш-таблица - структура данных, которая обеспечивает быстрый доступ к объектам по их ключам. Ключи проходят через хеш-функцию, которая преобразует их в индексы для доступа к данным в таблице.   1⃣ Distributed hashing (распределенное хеширование) Если хеш-таблица большая, ее можно разнести по нескольким серверам (шардам).   📌 У нас N серверов, на какой сервер попадут данные? ✅ server_index = hash(key) mod N Хеш-функция преобразует key в число, от которого берется остаток от деления на N. В результате мы получаем индекс сервера, который будет хранить данные по ключу key.   📌 Что будет, если мы захотим увеличить/уменьшить кол-во серверов? 🆘 В данном случае нужно будет снова перехешировать все данные, что бы с измененным N разложить их по серверам.   2⃣ Consistent Hashing (последовательное хеширование) – улучшение распределенного хеширования. Key получает позицию в хеш-кольце. Мы можем масштабировать сервера, перехешируя меньшее количестово данных, в идеале только с соседних серверов.   ⚙ Допустим сервера и данные располагаются на окружности - минимальный угол 0, максимальный 360.   data = {server1, ..., serverN, key1, ..., keyM}   position_on_ring = hash(data[i]) mod 360   📌 У нас N серверов, на какой сервер попадут данные? ✅ Используем правило - двигаемся по часовой стрелке и берем первый найденный сервер. Например, если у нас есть отсортированный по position_on_ring список серверов, найти следующий можно с помощью бинарного поиска.   📌 Что будет, если мы захотим увеличить/уменьшить кол-во серверов? ✅В среднем будет перераспределено только M/N данных   📌 Как поддержать равномерное распределение данных в последовательном хешировании? ✅ Каждый физический сервер, может быть представлен несколькими виртуальными серверами на хеш-кольце. Чем больше виртуальных серверов, тем более равномерно распределены данные по ним. Однако для хранения данных о виртуальных серверах требуется больше места.   Подробнее о хешировании Consistent hashing в Cassandra #consistent_hashing #hashing
7.7K
просмотров
2096
символов
Нет
эмодзи
Да
медиа

Другие посты @backend_architecture

Все посты канала →
🔥 Consistent Hashing   💡 Хеш-таблица - структура данн — @backend_architecture | PostSniper