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


Реализация политики повторных попыток с помощью JavaScript или TypeScript

Любое приложение, работающее в облаке или взаимодействующее с удаленными службами и ресурсами, должно иметь возможность обрабатывать временные ошибки. Обычно эти приложения могут столкнуться с ошибками из-за мгновенной потери сетевого подключения, времени ожидания запроса, когда служба или ресурс занята или другие факторы. Разработчики должны создавать приложения для прозрачной обработки временных сбоев, чтобы повысить стабильность и устойчивость.

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

Настройка параметров повтора

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

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

Свойство Тип Описание Значение по умолчанию
maxRetryDelayInMs number Необязательно. Указывает максимальную задержку, разрешенную перед повтором операции. 120 секунд (или 120 * 1000 мс)
maxTries number Необязательно. Максимальное количество повторных попыток перед отказом. 4
retryDelayInMs number Необязательно. Указывает объем задержки, используемой перед повторным повтором операции. 4 секунды (или 4 * 1000 мс)
retryPolicyType Тип политики повторных попыток хранения Необязательно. StorageRetryPolicyType по умолчанию — это экспоненциальная политика повторных попыток. StorageRetryPolicyType.Exponential
secondaryHost string Необязательно. Вторичная конечная точка учетной записи хранения, на которую отправляются повторные запросы. Прежде чем задать это значение, необходимо понять проблемы, связанные с чтением устаревших и потенциально несогласованных данных. Дополнительные сведения см. в статье "Использование геоизбыточности для разработки высокодоступных приложений". нет
tryTimeoutInMs number Необязательно. Максимально допустимое время до отмены запроса и признания его неудачным. Это время ожидания применяется к запросу операции и должно основываться на пропускной способности, доступной для хост-компьютера и близости к службе хранилища. Значение 0 или неопределенное значение означает отсутствие тайм-аута по умолчанию на клиенте, и используется тайм-аут по умолчанию на стороне сервера. Дополнительные сведения см. в разделе о времени ожидания для операций службы BLOB.

В следующем примере кода мы настраиваем параметры повторных попыток в экземпляре StorageRetryOptions, передаем его в новый экземпляр StoragePipelineOptions и передаем pipeline при создании BlobServiceClient.

const options = {
  retryOptions: {
    maxTries: 4,
    retryDelayInMs: 3 * 1000,
    maxRetryDelayInMs: 120 * 1000,
    retryPolicyType: StorageRetryPolicyType.EXPONENTIAL
  },
};

const pipeline = newPipeline(credential, options);

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  credential,
  pipeline
);

В этом примере каждый запрос службы, выданный BlobServiceClient объектом, использует параметры повторных попыток, как определено в retryOptions. Эта политика применяется к клиентским запросам. Вы можете настроить различные стратегии повторных попыток для клиентов служб в зависимости от потребностей приложения.

  • Рекомендации по архитектуре и общие рекомендации по политикам повторных попыток см. в разделе "Обработка временных ошибок".
  • Рекомендации по реализации шаблона повторных попыток для временных сбоев см. в разделе Шаблон повторных попыток.