Реализация политики повторных попыток с помощью 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. Полный список статей руководства разработчика см. в статье о создании приложения.
- Рекомендации по архитектуре и общие рекомендации по политикам повторных попыток см. в разделе "Обработка временных ошибок".
- Рекомендации по реализации шаблона повторных попыток для временных сбоев см . в шаблоне повторных попыток.