CottonАрхитектура
Архитектура

Как Cotton хранит файл. От браузера до диска.

Контентно-адресуемые чанки. Потоковый AES-GCM с тегами аутентификации на каждый чанк. Сжатие до шифрования. Манифесты поверх файловой системы или S3. Один конвейер от HTTP до диска — без склейки рантаймов, слоя плагинов и заплаток.

Контентно-адресуемые чанкиГраф манифестовПерематываемые потокиСнимки по ссылкам

Форма загрузки

Браузер хеширует чанки в воркере, загружает их параллельно и после обрыва досылает только недостающие куски. Маленькие и большие файлы идут одним маршрутом, поэтому системе не нужен отдельный хрупкий путь для больших загрузок или буфер на весь файл в памяти.

  • Идентичность чанка строится на SHA-256.
  • Манифест файла собирает упорядоченные чанки в видимый контент.
  • Прерванная загрузка досылает только то, чего не хватает.

Модель хранилища

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

  • Раскладки описывают, где контент виден.
  • Манифесты описывают, что именно является контентом.
  • Чанки можно безопасно переиспользовать, когда несколько файлов ссылаются на одинаковые байты.

Контракт бэкенда

Бэкенду хранилища нужен маленький контракт: записать данные по ключу и прочитать их обратно. Хранилище на файловой системе кладёт блобы чанков по путям, выведенным из хеша, а S3-совместимое хранилище использует те же логические ключи. Листинг и удаление делают проверку и очистку богаче, но базовая модель остаётся простой.

  • Публичный хеш чанка — это идентичность в хранилище.
  • Объекты в бэкенде не раскрывают пользовательское дерево папок.
  • База данных остаётся источником истины для живых ссылок.

Конвейер преобразования

Данные сжимаются до шифрования и потом пишутся в хранилище на файловой системе или поверх S3. Сжатие, шифрование и сохранение в бэкенде — не опциональные довески, а обычный путь приёма на потоковых буферах, без загрузки объекта целиком.

  • Встроенный Zstd держит экономию места прямо на горячем пути.
  • Потоковый AES-GCM аутентифицирует контент по чанкам.
  • Бэкенды на файловой системе и S3 делят один логический конвейер.

Модель выдачи

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

  • Большое медиа остаётся перематываемым.
  • Генераторы превью могут работать с потоками зашифрованных чанков.
  • Ответы на HTTP Range не требуют временных копий всего файла.

Модель восстановления

Снимки записывают ссылки, а не копируют всё дерево. Восстановление может переключить состояние раскладки без гигантской фоновой задачи копирования, а сборка мусора всё равно имеет понятный контракт хранения.

  • Снимки — полноценные операции над раскладкой.
  • Версии и корзина живут в том же жизненном цикле.
  • Контент без ссылок перепроверяется перед освобождением.

Операционная модель

Фоновое хеширование манифестов, проверки согласованности хранилища, генерация превью, очистка токенов и очистка временных данных — часть пути продукта. Оператор получает явные предупреждения, а не узнаёт о тихом расхождении в хранилище постфактум.

Доказательство модели хранилища

Страница архитектуры не просит поверить диаграмме. Доказательство продукта видно в словаре и интерфейсе: чанки, манифесты, снимки, версии, range-чтения, WebDAV, превью и проверки целостности — все упираются в одну модель.

  • Идентичность чанка по SHA-256 — якорь хранилища.
  • Манифесты описывают байты файла отдельно от раскладки папок.
  • Снимки и восстановление работают по ссылкам, а не копируют каждый байт заново.

Почему модель продаёт продукт

Cotton лучше всего ложится туда, где хочется файловое облако, чьи внутренности объясняют продукт, а не спорят с ним. Та же архитектура, которая делает большие файлы практичными, делает восстановление, шаринг, превью и очистку проще для понимания.

Когда проще — лучше

Движок хранения, где чанки на первом месте, требует больше дисциплины, чем примонтировать папку и назвать её облаком. Если нужен широкий набор приложений или прямая семантика файловой системы, groupware-стек или обычный файловый сервер могут подойти лучше.

Доказательство архитектуры

Поведение продукта вытекает из модели хранилища.

Cotton — не дерево папок с web-скином. Загрузка, чтение, превью, шаринг, восстановление, проверка и очистка завязаны на одну модель контента: чанки, манифесты, записи раскладки и явные ссылки.

01Chunk
02SHA-256
03Compress
04AES-GCM
05Backend
06Manifest

Раскладка отдельно

Папки, узлы и видимые файлы — это состояние раскладки. Сохранённые байты живут за манифестами и чанками.

У контента есть идентичность

Чанки и манифесты делают дедупликацию, идемпотентную загрузку, проверку и переиспользование частью обычной модели.

Чтение остаётся с произвольным доступом

Ответы по диапазонам, перемотка видео и извлечение превью собирают диапазоны байтов без пересборки объектов целиком.

Очистка видит ссылки

Снимки, шары, версии, артефакты бэкапа, манифесты и живые файлы должны быть видны до безопасного освобождения.

Вывод по модели

Файловое облако становится проще, когда контент и раскладка перестают притворяться одним и тем же.

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

Граница модели

Модель явнее, чем простая обёртка над файловой системой. Cotton нужна корректность метаданных, фоновая проверка и аккуратное освобождение, потому что база данных — источник истины для живых ссылок.

Вопросы

Прямые ответы

Cotton — это просто обёртка над файловой системой?

Нет. Cotton использует контентно-адресуемый движок хранения: чанки, манифесты, записи раскладки, снимки и фоновую проверку. WebDAV есть для совместимости, но внутренняя модель — не обычное дерево папок на диске.

Почему контентная адресация важна пользователю?

Она делает дублирующийся контент безопасным для переиспользования, прерванные загрузки дешевле для возобновления, снимки менее затратными по копированию, а проверки целостности прямее.

Это отменяет бэкапы?

Нет. Архитектура делает снимки, версии, восстановление и очистку внутри живого инстанса более связными. Полная потеря сервера всё равно требует проверенных бэкапов и плана восстановления.