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


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

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

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

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

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

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

Свойство Type Описание Default value
maxRetryDelayInMs number Необязательно. Указывает максимальную задержку, разрешенную перед повтором операции. 120 секунд (или 120 * 1000 мс)
maxTries number Необязательно. Максимальное количество попыток повторных попыток перед отказом. 4
retryDelayInMs number Необязательно. Указывает объем задержки, используемой перед повторным повтором операции. 4 секунды (или 4 * 1000 мс)
retryPolicyType StorageRetryPolicyType Необязательно. 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. Эта политика применяется к клиентским запросам. Вы можете настроить различные стратегии повторных попыток для клиентов служб в зависимости от потребностей приложения.

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