Элемент управления параллелизмом
Заметка
API портала Cloud Partner интегрированы и будут продолжать работать в Центре партнеров. Переход вводит небольшие изменения. Просмотрите изменения, перечисленные в справочнике по API портала Cloud Partner, чтобы убедиться, что код продолжает работать после перехода в Центр партнеров. API CPP следует использовать только для существующих продуктов, которые уже были интегрированы перед переходом в Центр партнеров; новые продукты должны использовать API отправки Центра партнеров.
Каждый вызов API публикации портала Cloud Partner должен явно указать, какую стратегию управления параллелизмом следует использовать. Не указать заголовок If-Match приведет к возникновению ошибки HTTP 400. Мы предлагаем две стратегии для управления параллелизмом.
- оптимистичные. Клиент, выполняющий обновление, проверяет, изменились ли данные с момента последнего чтения данных.
- последняя победа. Клиент напрямую обновляет данные независимо от того, изменено ли другое приложение с момента последнего чтения.
Рабочий процесс оптимистического параллелизма
Мы рекомендуем использовать стратегию оптимистического параллелизма со следующим рабочим процессом, чтобы гарантировать, что непредвиденные изменения не вносятся в ресурсы.
- Получение сущности с помощью API. Ответ содержит значение ETag, определяющее текущую хранимую версию сущности (во время ответа).
- Во время обновления добавьте это же значение ETag в обязательный заголовок запроса if-Match.
- API сравнивает значение ETag, полученное в запросе, с текущим значением ETag сущности в атомарной транзакции.
- Если значения ETag отличаются, API возвращает
412 Precondition Failed
HTTP-ответ. Эта ошибка указывает на то, что любой другой процесс обновил сущность после последнего его получения или что значение ETag, указанное в запросе, неверно. - Если значения ETag совпадают или заголовок If-Match содержит символ звездочки (
*
), API выполняет запрошенную операцию. Операция API также обновляет сохраненное значение ETag сущности.
- Если значения ETag отличаются, API возвращает
Заметка
Указание подстановочного знака (*) в заголовке If-Match приводит к использованию API с помощью стратегии параллелизма last-one-wins. В этом случае сравнение ETag не происходит, и ресурс обновляется без каких-либо проверок.