Личный кабинет
Начало работы Проектная спецификация

Техническая документация СлойРА

Редакция 0.18 мин чтения Исходник главы
Редакция 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. Поэтому проект предусматривает два самостоятельных сигнала: логический спрос клиентов и фактические чтения из исходного хранилища.

На их основе контроллер строит очередь размещения. Объекты переводятся между подготовленными классами хранения с учётом целостности, свободного места, квот и состояния кластера. Изменение размещения не должно менять публичный адрес файла.

Два контура хранения

text
Клиент
  |
  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-модульПредложенная техническая реализация
Среда LuaLuaJIT с языковым профилем 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 не приравнивается к числу клиентских запросов.
  • Повторная доставка телеметрии не должна удваивать счётчики спроса.
  • Сбой аналитики не должен останавливать уже разрешённую выдачу контента.
  • Решение о размещении воспроизводимо по версии политики и входному окну.
  • Перенос не удаляет исходную копию до проверки новой и переключения каталога.
  • Нехватка места учитывается до начала копирования и во время переноса.
  • Откат настроек восстанавливает последнюю проверенную конфигурацию.
  • Секреты, подписи ссылок и содержимое файлов не попадают в телеметрию.

Версионирование документации

Номер этой редакции относится к документу, а не к выпущенной версии программы. Перед выпуском команда связывает редакцию справочника с артефактами сборки, схемой конфигурации и результатами приёмки.

При несовместимом изменении контракта повышается его основная версия. Добавление необязательного поля допускается только с определённым поведением для старого получателя. Изменение единиц измерения или смысла существующего поля не считается совместимым расширением.

Исправления этой редакции должны сохранять различие между описанием продукта, целевым поведением и результатами, подтверждёнными испытаниями.