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


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

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

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

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

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

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

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