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


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

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

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

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

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

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

Свойство Type Описание Default value
retryPolicyType RetryPolicyType Необязательно. Режим, используемый для расчета интервалов повтора. ПОКАЗАТЕЛЬНЫЙ
maxTries Целое Необязательно. Максимальное количество попыток повторных попыток перед отказом. 4
tryTimeoutInSeconds Целое Необязательно. Максимально допустимое время до отмены запроса и предполагается сбой. Обратите внимание, что время ожидания применяется к запросу операции, а не к концу общей операции. Это значение должно быть основано на пропускной способности, доступной хост-компьютеру и близости к службе хранилища. Хорошая начальная точка может составлять 60 секунд на МБ ожидаемого размера полезных данных. Integer.MAX_VALUE (секунды)
retryDelayInMs Long Необязательно. Указывает объем задержки, используемой перед повторным повтором операции. 4 мс для EXPONENTIAL, 30 мс для ФИКСИРОВАННЫХ
maxRetryDelayInMs Long Необязательно. Указывает максимальную задержку, разрешенную перед повтором операции. 120 мс
secondaryHost Строка Необязательно. Вторичная конечная точка учетной записи хранения для повторных запросов. Прежде чем задать это значение, необходимо понять проблемы, связанные с чтением устаревших и потенциально несогласованных данных. Дополнительные сведения см. в статье "Использование геоизбыточности для разработки высокодоступных приложений". нет

В следующем примере кода мы настраиваем параметры повтора в экземпляре RequestRetryOptions и передаем его BlobServiceClientBuilder для создания клиентского объекта:

RequestRetryOptions retryOptions = new RequestRetryOptions(RetryPolicyType.FIXED, 2, 3, 1000L, 1500L, null);
BlobServiceClient client = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(credential)
        .retryOptions(retryOptions)
        .buildClient();

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

Следующие шаги

  • Эта статья является частью руководства разработчика хранилища BLOB-объектов для Java. Полный список статей руководства разработчика см. в статье о создании приложения.
  • Рекомендации по архитектуре и общие рекомендации по политикам повторных попыток см. в разделе "Обработка временных ошибок".
  • Рекомендации по реализации шаблона повторных попыток для временных сбоев см . в шаблоне повторных попыток.