Практично ли ведение журнала сообщений в службе групповой связи или paxos?
В случае сбоя сетевого раздела или узла большинству распределенных атомарных широковещательных протоколов (например, Extended Virtual Synchrony или Paxos) требуются работающие узлы для ведения журнала сообщений до тех пор, пока неисправный или разделенный узел не присоединится к кластеру. Когда узел присоединяется к кластеру, воспроизведения зарегистрированных сообщений достаточно, чтобы восстановить текущее состояние.
Мой вопрос: если разделенному / аварийному узлу потребуется очень много времени, чтобы снова присоединиться к кластеру, то в конечном итоге журналы переполнятся. Кажется, это очень практичный вопрос, но никто в их статье не говорит об этом. Есть ли очень очевидное решение этого, которого мне не хватает? Или мое понимание неверно.
2 ответа
Вам действительно не нужно помнить весь журнал. Например, представьте, что состояние, которое вы синхронизировали между узлами, было чем-то вроде таблицы SQL со строкой формы (id: int, name: string), а команды, которые будут записываться в журналы, были в форме "строка вставки" с id=x и name=y", " удалить строку, где id=z", " установить имя =a, где id=1000",...
После того, как такие команды были зафиксированы, все, что вас действительно волнует, это финальная таблица. Затем, как только узел, который долгое время находился в автономном режиме, подключился к сети, ему нужно было только загрузить таблицу + несколько записей из журнала, которые были зафиксированы во время загрузки таблицы.
Это называется "сжатие журналов", за дополнительной информацией обратитесь к главе 7 в статье "Плот".
Существует несколько потенциальных решений проблемы бесконечного журнала, но одно из наиболее популярных решений для реплицированных конечных автоматов - периодически снимать полностью реплицированный конечный автомат и удалять всю историю до этого момента. Узел, который был в автономном режиме слишком долго, просто отбрасывает всю свою информацию, загружает моментальный снимок и начинает воспроизводить реплицированные журналы с этой точки.