Skip to content

Логика Distributor

nmenshov edited this page Feb 18, 2015 · 5 revisions

Distributor - модуль в системе, который отвечает за распределение данных при записи и их поиске при чтении. У каждого Distributor хранится файл с распределением хешей.

  • Запись данных

При поступлении данных Distributor по хешу определяет Writer, на котором оно будет хранится. Затем выбирается N различных, доступных серверов, на которые пишется копия этого данного, где N + 1 - количество реплик в системе. На эти сервера параллельно посылается данное и асинхронно ожидается ответ. Если хотя бы один из серверов вернёт ошибку, то на сервера посылается команда отката операции.

  • Чтение данных

При поступлении запроса на чтение Distributor по хешу определяет Writer, на котором оно должно хранится. Если система находится в восстановленном состоянии, то данное читается только с этого сервера и возвращается запросившему. Если система не восстановлена, то данное запрашивается со всех серверов, где хранятся реплики. После этого среди них выбирается самая актуальная. Чтение в невосстановленной системе выполняется асинхронно.

Distributor поддерживает следующий набор функций:

  • start - Данная команда запускает Distributor

//TODO добаивть команду SayIAmHere

  • exit - Закрыть Distributor

При восстановлении Distributor используется схема восстановления

Clone this wiki locally