Техническая документация СлойРА
Редакция 0.1 · 27 сентября 2026 года. Описание продукта и проектная спецификация технической реализации.
СлойРА — программный слой управления доступом, кешированием и размещением контента. Клиентская поставка 2.1.74 использует отдельную конфигурацию Nginx с модулями secure_link/auth_request и Python-агентом для проверки лицензии и чтения контента. Lua и нативный модуль Nginx описаны в целевой архитектуре; нативный бинарный модуль в текущий архив не включён.
Файлы, изображения, документы, видеозаписи и сегменты потокового видео проходят через общую систему учёта популярности. Часто востребованные данные получают место в оперативной памяти и на быстрых дисках. Редко используемые данные остаются на более ёмких носителях. Сервер доставки передаёт сведения о запросах и промахах кеша в контур размещения Ceph, чтобы выбор класса хранения учитывал работу всей системы.
Как читать эту редакцию
Документация содержит два уровня утверждений.
| Уровень | Что означает |
|---|---|
| Описание продукта | Функциональность, сообщённая разработчиком: Nginx, Lua, защита с ответом 403, многоуровневый кеш, учёт популярности и связь с Ceph |
| Проектная спецификация | Предложенные технические решения: форматы конфигурации, API, алгоритмы, имена метрик, управляющий агент, процедуры миграции и критерии приёмки |
Для поставки 2.1.74 есть исходные компоненты, проверенный ZIP и результаты компонентных проверок и установки с настоящим Nginx на macOS и Linux x86_64. Проверены подписи лицензии, ограниченные онлайн-разрешения, защита cache HIT, локальные уровни хранения и контракт Ceph-адаптера. Работа с настоящим Ceph-кластером, нагрузочные показатели и все перечисленные платформы этим не подтверждаются. Проектные API и расширения в остальных разделах остаются целевыми контрактами и не означают, что каждый из них уже реализован.
Для установки используйте инструкции внутри персонального ZIP действующей поставки: README.md, docs/INSTALL.md, docs/LICENSING.md, docs/OPERATIONS.md и docs/API.md. Они описывают фактические команды и параметры этого выпуска. В 2.1.74 heartbeat выполняется раз в 60 секунд, онлайн-разрешение действует не более 300 секунд; без связи новые запросы прекращаются по истечении последнего разрешения. Подписанное продление применяется через license-update.
Примеры настроек и числовые значения относятся к демонстрационным профилям. Перед применением их сопоставляют со схемой конкретного выпуска, ресурсами узла и требованиями к доступности данных.
Что решает СлойРА
Контроль доступа перед выдачей контента
Каждый запрос сначала проходит проверку легитимности. Политика может учитывать подпись ссылки, срок действия, область доступа, разрешённые методы и ограничения клиента. Если право доступа не подтверждено, сервер возвращает HTTP 403.
Проверка выполняется и для содержимого, уже находящегося в кеше. Наличие быстрой локальной копии не даёт клиенту дополнительных прав. Ограничение частоты запросов и отказ инфраструктуры имеют отдельные причины и диагностические коды.
Размещение в RAM и на дисках
Кеш доставки состоит из оперативной памяти и выбранных дисковых уровней. NVMe и SATA/SAS SSD рассматриваются как разные эксплуатационные профили. HDD используется для объектов, которым не требуется дорогой быстрый уровень.
Решение учитывает частоту обращений, размер объекта, давность последнего запроса, стоимость повторного чтения и доступное место. Однократная загрузка очень большого файла не должна вытеснять всю горячую выборку. Защита от массового обхода каталога входит в политику допуска в кеш.
Обратная связь для Ceph
Кеш меняет нагрузку на исходное хранилище. Большое число обращений может обслуживаться в памяти и быть невидимым для Ceph. Поэтому проект предусматривает два самостоятельных сигнала: логический спрос клиентов и фактические чтения из исходного хранилища.
На их основе контроллер строит очередь размещения. Объекты переводятся между подготовленными классами хранения с учётом целостности, свободного места, квот и состояния кластера. Изменение размещения не должно менять публичный адрес файла.
Два контура хранения
Клиент
|
v
Nginx + плагин СлойРА + политика Lua
|
+-- проверка доступа --> отказ 403
|
+-- RAM --> NVMe / SSD --> HDD
| локальный кеш доставки
|
+-- исходное хранилище Ceph
|
+-- горячий пул / класс SSD
+-- холодный пул / класс HDD
Учёт запросов и промахов
--> локальная очередь событий
--> агрегатор спроса
--> контроллер размещения
--> проверяемый перенос объектаЛокальный кеш можно восстановить из исходного хранилища. Он не заменяет механизм долговечности Ceph и не учитывается как резервная копия. Перемещение исходного объекта между пулами имеет другие требования, чем вытеснение его временной копии из кеша.
В этой редакции основной сценарий интеграции — выделенные пулы и каталог размещения. Вариант с RGW описывается отдельно, поскольку S3-адресация, storage classes и прямой доступ RADOS требуют разных адаптеров.
Маршруты чтения
| Задача читателя | Разделы |
|---|---|
| Оценить применимость | Обзор, архитектура, ёмкость и экономика |
| Подготовить сервер | Платформы и установка, Nginx и Lua, эксплуатация |
| Настроить доступ | Защита доступа, HTTP-доставка, справочник конфигурации |
| Разобраться с кешем | Иерархия кеша, популярность, наблюдаемость |
| Подключить Ceph | Интеграция с Ceph, контракты API, эксплуатация |
| Принять реализацию | Проверки и runbooks, каталог сценариев |
| Написать интеграцию | Nginx и Lua, контракты API, справочник конфигурации |
Языки и компоненты
| Компонент | Технология | Статус в этой редакции |
|---|---|---|
| HTTP-сервер | Nginx | Основа продукта по описанию разработчика |
| Политики обработки | Lua | Реализация указана разработчиком |
| Нативный модуль | C17, динамический HTTP-модуль | Предложенная техническая реализация |
| Среда Lua | LuaJIT с языковым профилем Lua 5.1 | Целевой вариант интеграции |
| Локальный агент | Rust | Предложенный управляющий компонент |
| Контроллер размещения | Rust, адаптер Ceph | Предложенный управляющий компонент |
| Формат настроек | YAML с версионированием схемы | Проектный контракт |
| Обмен событиями | JSON; пакетная передача через HTTPS | Проектный контракт |
| Диагностика | Метрики Prometheus и структурированные журналы | Проектный контракт |
Выбор C и Rust разделяет обработку HTTP-запросов и фоновые операции. Рабочий процесс Nginx не должен ожидать сканирования диска, пакетной отправки телеметрии или переноса объектов Ceph. Lua используется для контролируемой политики запроса, а не для запуска произвольных блокирующих операций в обработчике.
Платформы
Основной целевой профиль — Linux на x86_64. В матрицу квалификации включены Ubuntu LTS, Debian, а также семейства Rocky Linux и AlmaLinux. ARM64 рассматривается как отдельный профиль сборки и испытаний.
Указание дистрибутива в проектной матрице не является сертификатом совместимости. Для выпуска фиксируются точные версии ОС, ядра, Nginx, LuaJIT, библиотек и адаптера Ceph. Динамический модуль проверяется с конкретной ABI-конфигурацией Nginx.
Windows и macOS могут использоваться для работы с документацией и разработки, но в этой редакции не являются целевыми производственными ОС сервера доставки.
Экономия и измерения
Разработчик сообщает об экономии дискового пространства до 70%. В этой редакции значение сохраняется как заявленный результат, для которого ещё требуется опубликованная методика и воспроизводимый протокол.
Перенос объекта с SSD на HDD сам по себе не уменьшает число логических байтов. Он уменьшает потребность в быстром классе хранения. Уменьшение общего физического объёма возможно только при изменении количества временных копий, правил кеширования или других явно измеряемых факторов. Сравнение должно сохранять одинаковые требования к долговечности данных.
В разделе ёмкости отдельно рассчитываются логический объём, физическое размещение с репликацией, локальный кеш, миграционный резерв и стоимость используемых носителей.
Границы защиты
Проверка запроса позволяет ограничить автоматизированный доступ к контенту и снизить несанкционированную загрузку. Она не даёт абсолютной защиты от копирования уже выданных данных. Клиент с действительными правами может получать разрешённые ему байты.
СлойРА дополняет TLS, сетевую защиту, правила выдачи ссылок и безопасность приложения владельца контента. Идентификатор клиента не следует сводить только к IP-адресу: NAT, мобильные сети и прокси делают такой признак неоднозначным.
Установка и выпуск
Продукт поставляется отдельно от Nginx. Целевой комплект включает модуль, политики Lua, управляющий агент, схему настроек и документацию выпуска.
Действующая модель поставки предусматривает ZIP-архив, ключ и инструкцию в кабинете покупателя после подтверждения оплаты. Команды получения пакетов из публичного репозитория не предполагаются, пока такой репозиторий не опубликован и не включён в описание выпуска.
Администратор клиента выполняет установку, настройку и обновление. Лицензия включает обновления и исправления ошибок. Срок начинается после подтверждения оплаты; продление выполняется вручную. Точный регламент проверки лицензии и поведения при её недоступности должен быть согласован отдельно от технических примеров этого справочника.
Принципы реализации
- Авторизация предшествует выдаче любого байта защищённого объекта.
- Идентичность кеша включает арендатора, объект и версию содержимого.
- Физическое чтение из Ceph не приравнивается к числу клиентских запросов.
- Повторная доставка телеметрии не должна удваивать счётчики спроса.
- Сбой аналитики не должен останавливать уже разрешённую выдачу контента.
- Решение о размещении воспроизводимо по версии политики и входному окну.
- Перенос не удаляет исходную копию до проверки новой и переключения каталога.
- Нехватка места учитывается до начала копирования и во время переноса.
- Откат настроек восстанавливает последнюю проверенную конфигурацию.
- Секреты, подписи ссылок и содержимое файлов не попадают в телеметрию.
Версионирование документации
Номер этой редакции относится к документу, а не к выпущенной версии программы. Перед выпуском команда связывает редакцию справочника с артефактами сборки, схемой конфигурации и результатами приёмки.
При несовместимом изменении контракта повышается его основная версия. Добавление необязательного поля допускается только с определённым поведением для старого получателя. Изменение единиц измерения или смысла существующего поля не считается совместимым расширением.
Исправления этой редакции должны сохранять различие между описанием продукта, целевым поведением и результатами, подтверждёнными испытаниями.