-
Notifications
You must be signed in to change notification settings - Fork 0
Логика Distributor
Distributor - модуль в системе, который отвечает за распределение данных при записи и их поиске при чтении. У каждого Distributor хранится файл с распределением хешей.
- Запись данных
При поступлении данных Distributor по хешу определяет Writer, на котором оно будет хранится. Затем выбирается N различных, доступных серверов, на которые пишется копия этого данного, где N + 1 - количество реплик в системе. На эти сервера параллельно посылается данное и асинхронно ожидается ответ. Если хотя бы один из серверов вернёт ошибку, то на сервера посылается команда отката операции.
- Чтение данных
При поступлении запроса на чтение Distributor по хешу определяет Writer, на котором оно должно хранится. Если система находится в восстановленном состоянии, то данное читается только с этого сервера и возвращается запросившему. Если система не восстановлена, то данное запрашивается со всех серверов, где хранятся реплики. После этого среди них выбирается самая актуальная. Чтение в невосстановленной системе выполняется асинхронно.
Distributor поддерживает следующий набор функций:
- start - Данная команда запускает Distributor
//TODO добаивть команду SayIAmHere
- exit - Закрыть Distributor
При восстановлении Distributor используется схема восстановления