Поделиться через


Элемент управления параллелизмом

Заметка

API портала Cloud Partner интегрированы и будут продолжать работать в Центре партнеров. Переход вводит небольшие изменения. Просмотрите изменения, перечисленные в справочнике по API портала Cloud Partner, чтобы убедиться, что код продолжает работать после перехода в Центр партнеров. API CPP следует использовать только для существующих продуктов, которые уже были интегрированы перед переходом в Центр партнеров; новые продукты должны использовать API отправки Центра партнеров.

Каждый вызов API публикации портала Cloud Partner должен явно указать, какую стратегию управления параллелизмом следует использовать. Не указать заголовок If-Match приведет к возникновению ошибки HTTP 400. Мы предлагаем две стратегии для управления параллелизмом.

  • оптимистичные. Клиент, выполняющий обновление, проверяет, изменились ли данные с момента последнего чтения данных.
  • последняя победа. Клиент напрямую обновляет данные независимо от того, изменено ли другое приложение с момента последнего чтения.

Рабочий процесс оптимистического параллелизма

Мы рекомендуем использовать стратегию оптимистического параллелизма со следующим рабочим процессом, чтобы гарантировать, что непредвиденные изменения не вносятся в ресурсы.

  1. Получение сущности с помощью API. Ответ содержит значение ETag, определяющее текущую хранимую версию сущности (во время ответа).
  2. Во время обновления добавьте это же значение ETag в обязательный заголовок запроса if-Match.
  3. API сравнивает значение ETag, полученное в запросе, с текущим значением ETag сущности в атомарной транзакции.
    • Если значения ETag отличаются, API возвращает 412 Precondition Failed HTTP-ответ. Эта ошибка указывает на то, что любой другой процесс обновил сущность после последнего его получения или что значение ETag, указанное в запросе, неверно.
    • Если значения ETag совпадают или заголовок If-Match содержит символ звездочки (*), API выполняет запрошенную операцию. Операция API также обновляет сохраненное значение ETag сущности.

Заметка

Указание подстановочного знака (*) в заголовке If-Match приводит к использованию API с помощью стратегии параллелизма last-one-wins. В этом случае сравнение ETag не происходит, и ресурс обновляется без каких-либо проверок.