Распределённое хранилище ключ-значение поддерживает операции GET, PUT и DELETE, обеспечивая баланс между низкой задержкой, отказоустойчивостью и масштабируемостью. Дизайн основан на проверенных системах вроде Amazon Dynamo и Apache Cassandra.
Используй consistent hashing для распределения ключей между узлами. Каждому узлу присвоена позиция на хеш-кольце, и ключи маршрутизируются к ближайшему узлу по часовой стрелке. Это минимизирует перемещение данных при добавлении или отключении узлов из кластера.
Каждый ключ реплицируется на N узлов (настраиваемый фактор репликации). Реплики размещаются на следующих N-1 преемниках на хеш-кольце, что гарантирует распределение копий между отдельными физическими узлами или зонами доступности.
Поддержи настраиваемую консистентность с помощью кворум-ориентированных чтений и записей:
W — минимальное количество узлов, которые должны подтвердить записьR — минимальное количество узлов, которые должны ответить на чтениеR + W > NR и W для большей доступностиКонфликты возникают, когда сетевые разделения приводят к расходящимся записям. Две стратегии:
Используй gossip-протокол, где каждый узел периодически обменивается состоянием со случайными соседями. Узлы помечаются как подозрительные после пропущенных heartbeat'ов и в итоге объявляются отказавшими, что запускает повышение реплик.
Когда узел присоединяется или отключается:
При consistent hashing добавление нового узла в кластер требует перераспределения всех ключей по всей системе для поддержания сбалансированного распределения нагрузки.
Новый — ещё не проверен сообществом
Вы