Предотвращение ошибок ограничения скорости для операций Azure Cosmos DB для Apache Cassandra

ПРИМЕНИМО К: Кассандра

Стоимость всех операций с базой данных нормализуется Azure Cosmos DB и выражается в единицах запроса (ЕЗ). ЕЗ — это единица производительности, которая абстрагирует системные ресурсы (например, ЦП, операции ввода-вывода в секунду и память), необходимые для выполнения операций базы данных, поддерживаемых Azure Cosmos DB.

Операции Azure Cosmos DB для Apache Cassandra могут завершаться ошибкой ограничения скорости (OverloadedException/429), если они превышают ограничение пропускной способности таблицы (ЕЗ). Это может быть обработано на стороне клиента, как описано здесь. Если политику повторных попыток клиента нельзя реализовать для обработки сбоя из-за ошибки ограничения скорости, мы можем использовать функцию повторных попыток на стороне сервера (SSR), когда операции, превышающие ограничение пропускной способности таблицы, будут автоматически повторяться после небольшой задержки. Это настройка на уровне учетной записи, которая применяется ко всем ключевым пространствам и таблицам в учетной записи.

Использование портала Azure

  1. Войдите на портал Azure.

  2. Перейдите к учетной записи Azure Cosmos DB для Apache Cassandra.

  3. Перейдите в область Компоненты в разделе Параметры.

  4. Выберите Повторные попытки на стороне сервера.

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

Снимок экрана: функция повторных попыток на стороне сервера для Azure Cosmos DB для Apache Cassandra

Использование Azure CLI

  1. Убедитесь, что функция SSR для вашей учетной записи включена:

    az cosmosdb show --name accountname --resource-group resourcegroupname
    
  2. Включите SSR для всех таблиц в вашей учетной записи базы данных. Применение изменений может занять до 15 минут.

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableCassandra DisableRateLimitingResponses
    
  3. Следующая команда отключит SSR для всех таблиц в учетной записи базы данных, удалив DisableRateLimitingResponses из списка функций. Применение изменений может занять до 15 минут.

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableCassandra
    

Часто задаваемые вопросы

Как повторить запрос?

Повторные запросы выполняются постоянно (снова и снова) до тех пор, пока время ожидания не достигнет 60 секунд. Если время ожидания истекло, клиент получит соответствующую ошибку чтения или записи.

Когда лучше использовать SSR?

Функция повторных попыток на стороне сервера (SSR) наиболее полезна, когда происходит внезапный всплеск в течение короткого промежутка времени менее 1 минуты, когда можно избежать ошибок регулирования. Если рабочая нагрузка увеличилась и будет постоянно оставаться выше указанного количества ЕЗ, SSR мало чем поможет. Предлагается соответствующим образом увеличить количество ЕЗ.

Рекомендуемые параметры на стороне клиента?

После включения SSR клиентское приложение должно увеличить время ожидания чтения сверх 60-секундного значения повторной попытки на стороне сервера. Мы рекомендуем задать 90 секунд из соображений безопасности.

Пример кода: Driver3

SocketOptions socketOptions = new SocketOptions()
	.setReadTimeoutMillis(90000); 

Пример кода: Driver4

ProgrammaticDriverConfigLoaderBuilder configBuilder = DriverConfigLoader.programmaticBuilder()
	.withDuration(DefaultDriverOption.REQUEST_TIMEOUT, Duration.ofSeconds(90)); 

Как можно отслеживать работу SSR?

Вы можете просмотреть ошибки ограничения скорости (429), которые повторно используются на стороне сервера, на панели Метрики Azure Cosmos DB. Эти ошибки не переходят на клиент, когда включена функция SSR, так как они обрабатываются и повторяются на стороне сервера.

В журналах ресурсов Azure Cosmos DB можно искать записи журнала, содержащиеestimated DelayFromRateLimitingInMilliseconds.

Будет ли функция SSR влиять на уровень согласованности?

SSR не влияет на уровни согласованности. Запросы выполняются повторно на стороне сервера, если для них достигнуто предельное значение частоты (ошибка 429).

Влияет ли SSR на все типы ошибок, которые могут возникать на клиенте?

Нет, SSR влияет только на ошибки ограничения частоты (429), пытаясь повторить их на стороне сервера. Эта функция избавляет от необходимости обработки ошибок ограничения частоты в клиентском приложении. Все остальные ошибки будут отправлены на клиент.

Дальнейшие действия

Дополнительные сведения об устранении распространенных ошибок см. в этой статье:

Чтобы узнать о подготовке пропускной способности в Cosmos DB, обратитесь к следующим статьям: