← Справочные архитектуры / reference-architecture / diagrams / storage
Уведомления о событиях для хранилища
Введение
Cloudflare R2 Хранилище позволяет разработчикам хранить большие объёмы неструктурированных данных без дорогостоящей платы за исходящий трафик, характерной для типичных облачных хранилищ. Жизненный цикл данных в объектном хранилище часто не ограничивается загрузкой, изменением или удалением: нередко требуется преобразовывать, анализировать данные или выполнять их последующую обработку. R2 предоставляет уведомления о событиях для управления этими событийно-ориентированными процессами.
В этом документе рассматривается использование нашей встроенной бессерверной Cloudflare Workers или внешнюю службу для отслеживания уведомлений об изменениях данных и их последующей обработки.
Worker-потребитель по модели push
Уведомления о событиях работают путем отправки сообщений в очередь при каждом изменении ваших данных. Затем эти сообщения обрабатываются Worker-получатель. Термином consumer Worker называют клиента, который подписывается на очередь или получает из нее сообщения. Consumer Worker автоматически получает эти сообщения, что позволяет определить дальнейшие действия.
Например, можно настроить уведомление, которое будет срабатывать при загрузке новых изображений в ваш bucket R2. Это уведомление может автоматически запускать задачу ИИ, которая выполняет действие с изображением, например преобразует его в текст.
Рассмотрим пример постобработки на основе push-уведомлений: когда пользователь загружает новый объект в R2, событие нужно записать в журнал и сохранить в отдельном R2 bucket. Воспроизвести этот сценарий самостоятельно можно с помощью следующего руководства: Регистрируйте и сохраняйте события загрузки в R2 с помощью уведомлений о событиях.
- Пользователь загружает новый объект напрямую в R2.
- Уведомление о событии отправляется в очередь.
- Worker-потребитель получает новую задачу из очереди.
- Worker записывает событие журнала в R2.
HTTP-потребитель по модели pull
Как вариант, можно установить потребитель типа pull, когда сообщения забираются из очереди по HTTP из любой среды. Используйте pull-потребителя, если нужно получать сообщения из существующей инфраструктуры за пределами Cloudflare и точно контролировать скорость их обработки.
Потребитель с моделью pull должен явно выполнять вызов для получения сообщений из очереди (и последующего подтверждения), причём только тогда, когда он готов их обработать.
Рассмотрим следующий сценарий: пользователь инициирует удаление из R2. Внешнюю службу нужно уведомить об удалении, поэтому для неё настроена pull-очередь, из которой она получает уведомления.
- Пользователь инициирует удаление из R2.
- Уведомление о событии отправляется в очередь.
- Когда внешний сервис готов обработать запрос, он отправляет HTTP POST запрос в очередь, чтобы получить сообщение.
- Очередь отправляет сообщение в ответ на запрос POST из шага 3.
- Внешний сервис должен подтвердить получение сообщения.
Следуйте приведенным здесь шагам, чтобы настроить потребителя, работающего по модели pull.
Дополнительные примеры сценариев использования
- Отправляйте администратору письмо каждый раз, когда объекты удаляются из R2.
- Когда видео или подкаст загружается в R2, контент автоматически обрабатывается одной из ИИ-моделей автоматического распознавания речи (ASR) Cloudflare для создания субтитров или даже перевода контента.
- Удалять связанные записи базы данных при удалении объекта в R2.