Хранилище Behemoth
Behemoth — это нативная основа хранения данных Converged. Он предоставляет несколько
моделей данных в рамках одной компактной среды выполнения, сохраняя при этом отдельную
физическую границу хранения для каждого микросервиса.
Хранилище для модульных сервисов
Каждый доменный сервис владеет своими данными. Он не использует общие таблицы или индексы
с несвязанными сервисами и не нуждается в отдельном стеке баз данных. Behemoth обслуживает
изолированные корни из общего нативного процесса и направляет каждый запрос в правильное
хранилище.
orders service -> orders volume -> SQL and files
calls service -> calls volume -> key-value and audio fragments
search service -> search volume -> vector index
Разделение является физическим, а не соглашением об именовании. Если корень сервиса
не смонтирован и не объявлен, Behemoth отказывается создавать его хранилище. Поэтому
ошибка развёртывания становится сразу видимой, вместо того чтобы данные записывались
во временную файловую систему контейнера.
Несколько моделей данных
Для разных рабочих нагрузок нужны разные структуры. Behemoth объединяет реляционное,
ключ-значение, колоночное, векторное, графовое и файловое хранилища в рамках одной
границы среды выполнения. Сервис выбирает хранилище, соответствующее его данным,
не добавляя на платформу новый внешний продукт базы данных.
Внутри механизмы остаются специализированными. Унифицированный слой отвечает за
жизненный цикл, изоляцию, транспорт и метаданные, а не пытается представить, будто
все модели данных работают одинаково.
Размещение и масштабирование
Размещение хранилища не зависит от кода приложения. Одна периферийная установка
может использовать один процесс Behemoth. Более крупные развёртывания могут разделять
области между несколькими экземплярами, а облачный профиль может предоставлять каждому
арендатору собственный экземпляр хранилища.
Каждый микросервис сохраняет собственный том в каждом профиле. Перемещение области
или сервиса в другой экземпляр Behemoth изменяет конфигурацию развёртывания, при этом
вызывающие стороны продолжают использовать тот же логический идентификатор хранилища.
Границы сбоев и восстановления
Небольшие хранилища, принадлежащие сервисам, уменьшают последствия повреждения,
миграции и операций резервного копирования. Проблема в одном хранилище не требует
восстановления общей базы данных для всей платформы. Дамп и восстановление можно
выполнять для границы затронутого сервиса, а несвязанные сервисы продолжают работу.
Место в системе
Запросы к хранилищу достигают Behemoth через Fujin, как запросы к любому другому
пиру среды выполнения. Ptah предоставляет структуру томов и конфигурацию монтирования.
Behemoth выполняет операции хранения, но не координирует бизнес-процессы, не выбирает
арендаторов и не определяет, какие сервисы входят в состав решения.