Сбой в распределённой системе Raft: две реплики разошлись, несмотря на safety-свойства
На платформе Habr опубликован отчёт о сбое в реализации алгоритма консенсуса Raft на TypeScript, где две реплики разошлись в значениях при полной симуляции с соблюдением всех правил алгоритма.
Специалист, тестировавший свою TypeScript-реализацию Raft в симулированной среде, обнаружил критическую ошибку. Несмотря на то, что все пять заявленных safety-свойств алгоритма выполнялись, на двадцать пятом прогоне симуляции две реплики применили разные значения. Это означает потерю консистентности данных в распределённой системе.
Симуляция проводилась в контролируемых условиях: каждый «тик» времени, задержки сообщений и отказы узлов генерировались на основе фиксированного сида. Такой подход позволил точно воспроизвести условия сбоя. Особое внимание автор уделяет тому, что сам баг не был главной проблемой, а то, как именно проверка его обнаружила, и вопросы к надёжности других проверок.


Комментарии (0)
Без регистрации. Комментарии проверяются автоматически перед публикацией.
Пока нет комментариев. Будьте первым!