Ресурсы о программировании с ошибкой и отказоустойчивости

Мне нравится статья LWN Программное обеспечение только для борьбы с авариями, и я хотел бы узнать больше о сбое и отказоустойчивости программирования.

Удивительно сложно гарантировать, что постоянное состояние согласовано в ситуациях сбоя. Здесь я даже не говорю о распределенных операциях: это сложно и для одного node: даже нормальный DB Berkeley (BDB Data Store или BDB Concurrent Data Store) может иметь разрушенную базу данных, если система выходит из строя. Мало того, что ограничения на уровне высокого уровня нарушены, база данных может быть не открыта правильно, если система выйдет из строя.

Каковы хорошие ресурсы, касающиеся отказоустойчивых и отказоустойчивых конструкций, подходов и программирования.

Если ресурсы будут сосредоточены на средах С++ и POSIX, я был бы признателен.

Ответы

Ответ 1

Akka - это основа для Java и Scala, которая написана с учетом ошибки. Смотрите статью и эту презентацию для введения в Актеры и пусть-крах. Он также называется Fail-Fast и worker/supervisor стиль.

Две хорошие презентации на erlang Системы, которые Never Stop (и Erlang) и Сообщение Concurrency в Эрланге

Theron - это актерская библиотека для С++, я также думаю, что есть что-то в Boost.

Также Erlang может вызывать C или С++ code, чтобы увидеть это для обсуждения. Java/ Scala/Akka также может вызывать код С++.

(Если вам нравится С++, я предлагаю вам взглянуть на Scala, очень хороший язык и лучше, чем Java, если вы пришли из С++.)

Также презентация Jonas Boners Масштабируемость, Доступность и Шаблоны стабильности - хорошая презентация по этой теме.

Ответ 2

Модель Aktor на языках Erlang и Scala позволяет моделировать ее. См. Статью .

Ответ 3

Чтобы добавить к вышеуказанному набору ответов, Groovy и GPars, который был пропущен. Конечно, это не С++.

В С++ есть еще одна экспериментальная библиотека под названием libcppa. Theron более зрелый, чем это.

В любом случае лучше всего использовать:

  • Erlang
  • Scala/Akka