Как erlang отказывается от толерантности или помогает в этом отношении?

Как erlang отказывается от толерантности или помогает в этом отношении?

Ответ 2

Erlang является отказоустойчивым, учитывая следующее:

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

  • Erlang поощряет вас программировать случай успеха и сбой, если что-то пойдет не так, не пытаясь восстановить частично сломанные данные. Идея заключается в том, что частично неправильные данные могут распространяться дальше в вашей системе и могут быть записаны в базу данных и, таким образом, представляют опасность для вашей системы. Лучше сначала избавиться от него и сохранить только правильные данные.

  • Изоляция процесса в Erlang помогает минимизировать влияние частично неправильных данных, когда она появляется, а затем приводит к сбою процесса. Система очищает разбитый код и его память, но продолжает работать в целом.

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

Ответ 3

Предостережение: Я - Erlang noob.

@Ответ Даниэля в основном правильный. Я настоятельно рекомендую вам найти время, чтобы прочитать создателя Erlang Joe Armstrong thesis (создание надежных распределенных систем при наличии ошибок программного обеспечения). Диссертация дает хорошее объяснение необходимости и решения для разработки надежных распределенных систем. Я считаю, что статья ответит на ваш вопрос удовлетворительно.

Ответ 4

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

Возможно, вы видели что-то подобное в современных версиях Windows: система может перезапустить графический драйвер, если он сработает; он не убивает всю систему.

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