Управление проектами - статьи


Designing for FAILURE - ключ к успеху?Беседа с Брюсом Линдсеем - часть 17


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

СБ: Мне кажется, что состояние дел в области обнаружения ошибок и восстановления не слишком изменилось за последние 20 лет.

БЛ: Одной из вещей, которые мы теперь понимаем немного лучше, является так называемая область действия ошибки (scope of the error). Испортила ли ошибка только одну функцию? Вы вызываете эту функцию, а она не работает. Она говорит: «Я сломалась, возврат». В этот момент областью действия ошибки является эта функция. Конечно, если вы делаете возврат, если вы возбуждаете исключительную ситуацию, то область действия ошибки расширяется. Вы должны решить, ограничена ли область действия ошибки данным потоком управления. Если ошибка проявляется вне каких-либо манипуляций с разделяемыми данными, вы можете сказать: «Может быть, если мы всего лишь ликвидируем этот поток управления, то остальные потоки смогут продолжать работать, а может быть, мы даже сможем перезапустить этот поток управления, и в следующий раз его судьба окажется более удачной».

СБ: А как это представляется в коде?

БЛ: Обычно посредством механизмов управления потоками, которые требуются при написании любого многопотокового приложения. Поток может закончиться, и тогда менеджер потоков скажет: «О, этот поток относился к такому виду потоков, которые нужно перезапускать, если они заканчиваются».

Например, в системе баз данных вы можете подать в систему некоторый оператор, а система может разволноваться и сказать: «Ой, я не могу разобраться с синтаксисом этого оператора». Это ошибка пользователя, и мы были бы счастливы сообщить ему это, но потоку, который мог бы это сделать, нужно принимать на обработку другой оператор или даже повторно тот же самый оператор.

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

Прокомментировать>>




Начало  Назад  



Книжный магазин