Nano Hash - криптовалюты, майнинг, программирование

Вопросы RetryPolicy в хранилище таблиц Azure

Пара вопросов по использованию RetryPolicy с Table Storage,

  1. Лучше всего использовать RetryPolicy всякий раз, когда вы можете, поэтому используйте ctx.SaveChangeWithRetries() вместо ctx.SaveChanges() соответственно всякий раз, когда вы можете?

  2. Когда вы используете RetryPolicy, например,

    ctx.RetryPolicy = RetryPolicies.Retry(5, TimeSpan.FromSeconds(1));

Какие значения обычно используют для retryCount и TimeSpan? Я вижу, что 5 повторных попыток и 1 секунда TimeSpan являются популярным выбором, но не будут ли 5 ​​повторных попыток по 1 секунде слишком длинными?

Спасибо,

Рэй.


Ответы:


1

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

Теперь я бы посоветовал вначале вообще не включать RetryPolicy, а вместо этого использовать трассировку, чтобы вы могли видеть любые проблемы с сохранением в ATS. Как только вы стабилизируетесь, установка RetryPolicy может быть хорошей идеей, чтобы обойти некоторые сбои во время выполнения на стороне ATS. Просто убедитесь, что вы не маскируете собственные проблемы с помощью RetryPolicy.

28.12.2010

2

Если ваш клиент работает с пользователем, как веб-страница, вы, вероятно, захотите использовать линейную повторную попытку с коротким ожиданием (миллисекунды) между каждой повторной попыткой, если ваш клиент на самом деле не является пользовательской серверной службой и т. д., тогда вы, скорее всего, захотите используйте экспоненциальные повторы, чтобы не перегружать службу хранения таблиц, если она уже выдает ошибки 5xx, например, из-за высокой нагрузки.

При использовании последней версии SDK клиента службы хранилища Azure, если вы не определяете какую-либо политику повторных попыток в своих запросах к таблице с помощью TableRequestOptions, используется политика повторных попыток по умолчанию, которая является экспоненциальной повторной попыткой. SDK делает в общей сложности 3 попытки для ошибок, которые он считает исправимыми, и в общей сложности это занимает более или менее 20 секунд, если все попытки завершаются неудачей.

10.03.2016
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..