Отказоустойчивость
Общий подход к отказоустойчивости
Отказоустойчивость — это способность системы сохранять свою работоспособность и доступность данных даже при выходе из строя одного или нескольких компонентов. В ЗАКРОМА.Хранение применяется комплексный подход к обеспечению отказоустойчивости:
- Уровень узлов (серверов): система спроектирована так, чтобы выдерживать отказы целых серверов без потери данных.
- Уровень дисков: Применение помехоустойчивого кодирования Erasure Coding позволяет минимизировать затраты на резервирование данных, сохраняя при этом высокую надежность.
Отказоустойчивость на уровне узлов (серверов)
Каждый узел системы содержит набор сервисов (компонентов) системы. Сервисы системы не хранят состояние и могут быть запущены во множестве экземпляров на однотипных узлах. Это позволяет отключать (терять) узлы без потери работоспособности системы в целом. Состояние системы сохраняется в базе данных PostgreSQL, также запущенной в отказоустойчивом режиме средставми PostgreSQL.
Отказоустойчивость на уровне дисков
ЗАКРОМА использует технологию Erasure Coding, которая значительно повышает эффективность использования дискового пространства при сохранении высокой надежности.
Как работает Erasure Coding:
- Исходные данные разбиваются на фрагменты.
- Для каждого фрагмента рассчитываются дополнительные контрольные части (parity chunks).
- Все фрагменты и контрольные части распределяются по дискам разных узлов.
- Если происходит сбой одного или нескольких дисков, система может восстановить потерянные фрагменты данных, используя оставшиеся фрагменты и контрольные части.
Преимущества Erasure Coding:
- Экономия дискового пространства по сравнению с полной репликацией.
- Высокая надежность: система может пережить одновременный сбой нескольких дисков.
- Гибкость: можно настроить количество фрагментов и контрольных частей в зависимости от требований к отказоустойчивости.