- tocdepth
2
Параллельные операции в OBS
Если при инициировании запроса на запись в объектное хранилище истекает время ожидания ответа сервера или сервер возвращает код состояния HTTP 500 или 503, то последующие операции чтения могут завершиться неудачей.
При одновременной загрузке, скачивании или удалении одного и того же объекта запросы к системе могут обрабатываться в разные промежутки времени. В итоге результаты этих операций могут отличаться. Например, если две операции загрузки одного и того же объекта следуют друг за другом, то последний запрос на загрузку, полученный системой, заменит предыдущий.
Рекомендуется использовать механизм блокировки объекта на уровне приложения в случае с параллельными запросами к объектам.
Примеры параллельных операций:
- Сценарий 1. Параллельная загрузка объекта
Загружается объект «V1» и объект «V2» с одним и тем же названием со сдвигом по времени. Затем объект «V2» скачивается двумя параллельными операциями.
Результат: в обоих случаях будет скачан объект «V2», как показано на схеме.
- Сценарий 2. Параллельная загрузка и удаление объекта
Загружается объект «V1», при этом метаданные объекта еще не записаны. Со сдвигом по времени параллельный процесс удаляет объект с тем же названием. Затем объект «V1» скачивается двумя параллельными операциями.
Результат: в обоих случаях будет скачан объект «V1», как показано на схеме.
- Сценарий 3. Параллельная загрузка и удаление объекта
Загружается объект «V1», при этом его метаданные находятся в процессе записи. В это время параллельный запрос удаляет объект с тем же названием.
Результат: в обоих случаях будет скачан объект «V1», как показано на схеме.
- Сценарий 4. Параллельное скачивание и удаление объекта
Загружается объект «V1». После успешной загрузки запускаются два параллельных запроса на скачивание и удаление объекта с временным сдвигом.
В этом сценарии объект может быть загружен полностью или частично. Затем запускаются две параллельные операции скачивания объекта.
Результат: в обоих случаях будет получена ошибка с указанием на несуществующий объект, как показано на схеме.
- Сценарий 5. Параллельная загрузка и скачивание объекта
Загружается объект «V1». Затем запускаются параллельные операции загрузки объекта «V2» и скачивания объекта «V1» со сдвигом по времени. В этом сценарии предполагается, что объект был загружен полностью или частично. За ними следуют еще две параллельные операции скачивания объекта.
Результат: в обоих случаях будет скачан объект «V2», как показано на схеме.
- Сценарий 6. Параллельная загрузка части объекта
Загружается одна и та же часть данных объекта «V1» и «V2» со сдвигом по времени. Затем запускаются две параллельные операции чтения части данных объекта.
Результат: в обоих случаях будет скачана часть данных объекта «V2», как показано на схеме.
для Dev & Test