5.7 KiB
5.7 KiB
P09-B. FoundationDB: детерминированная имитация
- Версия и дата проверки: 1.1, 07.09.2026.
- Статус: готово к назначению.
Статья и исходные материалы
- Основная статья: FoundationDB Team — FoundationDB: A Distributed Unbundled Transactional Key Value Store. SIGMOD 2021.
- Кратко о статье: FoundationDB сочетает рабочую распределённую базу с детерминированной имитацией, в которой тот же код выполняется под управляемым временем, сетью и инъекцией отказов. Фиксация начального зерна позволяет точно повторять редкие последовательности событий и отлаживать нарушения инвариантов. В этом проекте воспроизводится принцип детерминированного планирования и сравнивается повторяемость диагностики с обычным многопроцессным запуском.
- Почему результат актуален: статья описывает архитектуру FoundationDB: небольшое транзакционное ядро, разделение ролей хранения и обработки и детерминированную имитацию отказов для проверки системы.
- Артефакты и данные: apple/foundationdb, открытая система с локальным многопроцессным режимом и детерминированными simulation tests. Зафиксированная основная ревизия:
apple/foundationdb@ddec61a629a9(Apache-2.0). - Что уже предоставляет артефакт: FoundationDB уже содержит детерминированный simulation-режим, нагрузки, инъекцию отказов и воспроизведение по seed. Эти механизмы разрешено использовать как стенд.
Обязательный результат
- Проверяемый вопрос или утверждение: Детерминированная имитация позволяет систематически проверять последовательности отказов и точно воспроизводить редкие нарушения, которые трудно диагностировать в обычном многопроцессном запуске.
- Технический результат: Собрать или использовать зафиксированный simulation-режим FoundationDB, подготовить малую нагрузку, один проверяемый инвариант и сценарии отказов, управляемые seed. Добавить автоматическое повторное проигрывание найденной трассы.
- Обязательное приращение команды: Подготовить предусмотренные нагрузку, инвариант и проверяемое нарушение, организовать сопоставление реальной инъекции с simulation-режимом и автоматически проверять точность повторного проигрывания. Сравнение проводится при двух видах отказа и нескольких seed; один готовый simulation test его не заменяет.
- Эксперимент: Сравнить обычный локальный fault-injection и детерминированную имитацию по числу исследованных сценариев, времени до обнаружения, доле точных повторов и размеру диагностической трассы. Обязательны несколько seed, два вида отказа и намеренно внесённое либо уже известное нарушение.
- Границы выводов: сравнение характеризует воспроизводимость и исследованное пространство для выбранной нагрузки, инварианта и видов отказа; оно не доказывает корректность FoundationDB и не оценивает частоту таких сбоев в эксплуатации.
- Ресурсный профиль: локально, CPU, 8–16 ГБ памяти. Сборка всей системы может быть долгой; запасной вариант — использовать готовый выпуск для реального эксперимента и исходный код только для simulation tests.
Содержательные направления
- имитационный стенд и нагрузка.
- инварианты, отказы и воспроизведение.
- базовые варианты, покрытие, уменьшение трасс и анализ.
Возможное продолжение
Уменьшать трассу, добавить новый инвариант или отказ, направлять выбор seed по покрытию либо сопоставить simulation trace с реальным локальным кластером.