Cloudflare R2 Local Uploads: снижение задержки кросс-региональных загрузок на 75%

Cloudflare запустила функцию Local Uploads для объектного хранилища R2 в режиме открытого бета-тестирования — новая возможность позволяет сократить задержку записи при загрузке файлов из удалённых регионов до 75% без изменения расположения бакета.

Что такое R2 Local Uploads и зачем это нужно

Cloudflare R2 — объектное хранилище, совместимое с S3 API, которое пользуется популярностью благодаря отсутствию платы за исходящий трафик (egress fees). Однако при глобально распределённых пользователях возникала типичная проблема: если пользователь физически находится далеко от региона, в котором размещён бакет, загрузка файлов сопровождалась высокой задержкой из-за большого расстояния между клиентом и сервером.

Именно эту «проблему расстояния» и решает функция Local Uploads. Теперь данные объекта записываются в инфраструктуру хранения, ближайшую к клиенту, а метаданные публикуются в регионе бакета. Фоновый процесс Cloudflare (так называемый replication task) затем асинхронно копирует данные в целевой регион бакета.

Как это работает технически

Архитектура решения строится на разделении физического хранения данных и логических метаданных. R2 использует Durable Objects — механизм Cloudflare Workers, обеспечивающий единое и согласованное хранение состояния даже при распределённой работе приложения по всему миру. Именно на Durable Objects построен глобальный сервис метаданных R2.

Процесс загрузки при активированной функции Local Uploads выглядит следующим образом:

  • Клиент отправляет запрос на загрузку (PutObject или UploadPart).
  • R2 принимает данные в ближайшей к клиенту точке присутствия (PoP) Cloudflare.
  • Метаданные объекта сразу публикуются в регионе бакета — объект становится доступным для чтения немедленно.
  • Фоновая задача репликации через Cloudflare Queues с атомарными операциями и автоматическими повторными попытками переносит данные в целевой регион.

Ключевой момент: объект доступен для чтения сразу после завершения начальной записи — не нужно ждать окончания фоновой репликации. Это обеспечивает сильную согласованность данных на протяжении всего процесса.

Результаты производительности

По данным Cloudflare, полученным в ходе закрытого бета-тестирования с реальными клиентами и синтетических бенчмарков, новая функция показала впечатляющие результаты:

  • До 75% снижение Time to Last Byte (TTLB) при кросс-региональных загрузках.
  • Среднее TTLB для файла размером 5 МБ сократилось с ~2 секунд до ~500 миллисекунд при загрузке из Западной Северной Америки в Азиатско-Тихоокеанский регион.

TTLB в данном случае измеряется с момента получения запроса на загрузку сервисом R2 до момента возврата ответа 200 клиенту.

Инженер Oracle Шри Чавали точно охарактеризовал суть решения:

Загрузка файла размером 1 ГБ из одного региона в бакет, расположенный в другом регионе, в значительной мере определяется временем кругового обхода (RTT). R2 Local Uploads устраняет «проблему расстояния», завершая загрузку на ближайшей точке присутствия и разделяя прием данных и репликацию с помощью Durable Objects, атомарных коммитов и pull-based конвейера репликации.

Для каких сценариев подходит Local Uploads

Функция ориентирована на следующие рабочие нагрузки:

  • Приложения с глобально распределёнными пользователями (UGC-платформы, SaaS-сервисы).
  • Сценарии, где скорость и надёжность загрузки критична для пользовательского опыта.
  • Загрузка логов, телеметрии и других потоков данных из разных регионов мира.
  • Случаи, когда необходимо ускорить загрузки без изменения текущего расположения бакета.

При этом функция не поддерживается для бакетов с юрисдикционными ограничениями (EU jurisdiction, FedRAMP).

Как включить Local Uploads

Активировать функцию можно двумя способами:

  • Через панель управления R2: Settings → Local Uploads.
  • С помощью CLI-команды: npx wrangler r2 bucket local-uploads enable [BUCKET].

Включение происходит без прерывания текущего трафика. Для мониторинга географического распределения запросов доступен граф Request Distribution by Region на странице метрик бакета.

Сравнение с конкурентами

Cloudflare — не единственный провайдер, предлагающий оптимизацию кросс-региональных загрузок. AWS предлагает S3 Transfer Acceleration, который использует глобально распределённые edge-локации CloudFront для оптимизации маршрутизации: данные принимаются на ближайшей edge-точке и затем передаются по внутренней сети AWS до целевого бакета. Принципиальное отличие R2 Local Uploads — использование локальных записей с асинхронной репликацией, тогда как S3 Transfer Acceleration оптимизирует сетевой маршрут, но всё равно записывает данные напрямую в регион бакета. Google Cloud Storage и Azure Blob Storage на сегодняшний день не предоставляют аналогичного механизма локальных записей с глобальным охватом.

Стоимость

Включение Local Uploads не влечёт никаких дополнительных расходов. Запросы на загрузку тарифицируются по стандартным ценам на операции Class A — точно так же, как и без активации функции. Политика нулевых egress fees R2 при этом сохраняется в полном объёме. Для тестирования доступен публичный демо-стенд, позволяющий оценить скорость загрузок из разных точек мира.

Фото аватара

Олег Козлов

Разработчик.
Веб-фреймворки: Symfony, Strapi, Django
Также увлекаюсь NoCode & AI решениями.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *