Обработка запросов к базе данных, которые завершаются сбоем из-за переключения сервера

StackOverflow https://stackoverflow.com/questions/1895833

Вопрос

Как вы предпочитаете обрабатывать ошибки в среде с отказоустойчивым кластером или зеркалом SQL Server?Кажется, есть два варианта:

  1. Отклонить весь текущий запрос клиента и позволить пользователю повторить попытку.
  2. Найдите ошибку в своем DAL и повторите попытку.

У каждого подхода есть свои плюсы и минусы.Большинство магазинов, с которыми я работал, делают #1, но многие из них также не следуют строгим границам транзакций и, как мне кажется, подвергают себя неприятностям в случае неудачи.Несмотря на это, у меня возникли проблемы с обсуждением их пункта 2, что также должно привести к улучшению пользовательского опыта (одна из проблем — потенциально длительная задержка во время переключения при сбое).

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

Это было полезно?

Решение

Номер 2 может быть бесконечным циклом.Что, если это связано с сетью, или требуется перезагрузка локального компьютера, или что-то в этом роде?

Номер 1, конечно, раздражает пользователей.

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

В реальной жизни у вас может не быть хорошего чистого DAL на веб-сервере.У вас может быть подключенный лист Excel (большинство финансовых показателей) или WinForms, где соединение остается открытым, поэтому у вас есть только один вариант.

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

Таким образом, это случается так редко, что вы хотите знать, и номер 1 будет лучше.ИМХО.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top