Параллельные операции в OBS

Если при инициировании запроса на запись в объектное хранилище истекает время ожидания ответа сервера или сервер возвращает код состояния HTTP 500 или 503, то последующие операции чтения могут завершиться неудачей.

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

Рекомендуется использовать механизм блокировки объекта на уровне приложения в случае с параллельными запросами к объектам.

Примеры параллельных операций:

Сценарий 1. Параллельная загрузка объекта

Загружается объект «V1» и объект «V2» с одним и тем же названием со сдвигом по времени. Затем объект «V2» скачивается двумя параллельными операциями.

Результат: в обоих случаях будет скачан объект «V2», как показано на схеме.

../_images/schm__concurrent-operations-1.svg
Сценарий 2. Параллельная загрузка и удаление объекта

Загружается объект «V1», при этом метаданные объекта еще не записаны. Со сдвигом по времени параллельный процесс удаляет объект с тем же названием. Затем объект «V1» скачивается двумя параллельными операциями.

Результат: в обоих случаях будет скачан объект «V1», как показано на схеме.

../_images/schm__concurrent-operations-2.svg
Сценарий 3. Параллельная загрузка и удаление объекта

Загружается объект «V1», при этом его метаданные находятся в процессе записи. В это время параллельный запрос удаляет объект с тем же названием.

Результат: в обоих случаях будет скачан объект «V1», как показано на схеме.

../_images/schm__concurrent-operations-3.svg
Сценарий 4. Параллельное скачивание и удаление объекта

Загружается объект «V1». После успешной загрузки запускаются два параллельных запроса на скачивание и удаление объекта с временным сдвигом.

В этом сценарии объект может быть загружен полностью или частично. Затем запускаются две параллельные операции скачивания объекта.

Результат: в обоих случаях будет получена ошибка с указанием на несуществующий объект, как показано на схеме.

../_images/schm__concurrent-operations-4.svg
Сценарий 5. Параллельная загрузка и скачивание объекта

Загружается объект «V1». Затем запускаются параллельные операции загрузки объекта «V2» и скачивания объекта «V1» со сдвигом по времени. В этом сценарии предполагается, что объект был загружен полностью или частично. За ними следуют еще две параллельные операции скачивания объекта.

Результат: в обоих случаях будет скачан объект «V2», как показано на схеме.

../_images/schm__concurrent-operations-5.svg
Сценарий 6. Параллельная загрузка части объекта

Загружается одна и та же часть данных объекта «V1» и «V2» со сдвигом по времени. Затем запускаются две параллельные операции чтения части данных объекта.

Результат: в обоих случаях будет скачана часть данных объекта «V2», как показано на схеме.

../_images/schm__concurrent-operations-6.svg
Запустили Evolution free tier
для Dev & Test
Получить