← Cloudflare R2 / r2
Как работает R2
Cloudflare R2 представляет собой S3-совместимый сервис объектного хранения без платы за исходящий трафик, построенный на глобальной сети Cloudflare. Он строго согласованный и разработан для высокой долговечность данных.
R2 отлично подходит для хранения и раздачи неструктурированных данных, к которым часто обращаются через интернет, без платы за исходящий трафик. Это хороший вариант для таких задач, как раздача веб-ресурсов, обучение AI-моделей и управление пользовательским контентом.
Архитектура
Архитектура R2 состоит из нескольких компонентов:
-
R2 Gateway: Точка входа для всех запросов API, отвечающая за аутентификацию и логику маршрутизации. Этот сервис развёрнут по всей глобальной сети Cloudflare с помощью Cloudflare Workers.
-
Служба метаданных: Распределённый слой, построенный на Durable Objects используется для хранения и управления метаданными объекта (например, ключом объекта, контрольной суммой), чтобы обеспечить строгую согласованность объекта в системе хранения. Он включает встроенный уровень кеширования для ускорения доступа к метаданным.
-
Многоуровневый кеш чтения: Слой кеширования, который располагается перед Distributed Storage Infrastructure и ускоряет чтение объектов за счёт использования Cloudflare Tiered Cache чтобы обслуживать данные ближе к клиенту.
-
Распределённая инфраструктура хранения: Базовая инфраструктура, которая обеспечивает постоянное хранение зашифрованных данных объектов.
R2 поддерживает несколько клиентских интерфейсов, включая Cloudflare Workers Binding, S3-совместимый API, а также REST API который используется Cloudflare Dashboard и Wrangler CLI. Все запросы направляются через R2 Gateway, который взаимодействует со службой метаданных и распределённой инфраструктурой хранения для получения данных объекта.
Запись данных в R2
Когда к R2 поступает запрос на запись (например, загрузка объекта), происходит следующая последовательность действий:
-
Обработка запросов: Запрос принимается R2 Gateway на edge-узле, ближайшем к пользователю, где он проходит аутентификацию.
-
Шифрование и маршрутизация: Gateway обращается к Metadata Service, чтобы получить ключ шифрования и определяет, в какой кластер хранения записать зашифрованные данные в расположение настроено для бакета.
-
Запись в хранилище: Зашифрованные данные записываются и хранятся в распределённой инфраструктуре хранения, а также реплицируются в пределах региона (например, ENAM) для долговечность.
-
Фиксация метаданных: Наконец, Metadata Service фиксирует метаданные объекта, делая их видимыми при последующих чтениях. Только после этой фиксации
HTTP 200успешный ответ, отправленный клиенту, что предотвращает неподтверждённые записи.
Чтение данных из R2
Когда к R2 поступает запрос на чтение (например, получение объекта), происходит следующая последовательность действий:
-
Обработка запросов: Запрос принимается R2 Gateway на edge-узле, ближайшем к пользователю, где он проходит аутентификацию.
-
Поиск метаданных: Gateway запрашивает у Metadata Service метаданные объекта.
-
Чтение объекта: Gateway пытается получить зашифровано объект из многоуровневого кеша чтения. Если он недоступен, объект извлекается из одного из распределённых дата-центров хранения в регионе, где находятся данные объекта.
-
Передача клиенту: Объект расшифровывается и передаётся пользователю.
Производительность
На производительность операций могут влиять такие факторы, как географическое расположение бакета, источник запросов и характер обращений к данным.
Чтобы оптимизировать производительность загрузки для межрегиональных запросов, включите Local Uploads для вашего бакета.
Чтобы оптимизировать производительность чтения, включите Кеш Cloudflare при использовании пользовательский домен. Если кеширование включено, запросы на чтение могут обходить R2 Gateway и обслуживаться напрямую из edge-кеша Cloudflare, что снижает задержку. Обратите внимание, что закешированные данные могут не сразу отражать последнюю версию.