Насколько Erlang отказоустойчив или помогает в этом отношении? - PullRequest
11 голосов
/ 21 сентября 2010

Как Erlang отказоустойчив, или помочь в этом отношении?

Ответы [ 4 ]

4 голосов
/ 22 сентября 2010

Я думаю, что покрыл часть ответа в этом ответе в другой теме .

3 голосов
/ 09 ноября 2014

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

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

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

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

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

2 голосов
/ 21 сентября 2010

Предостережение: я новичок Эрланга.

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

1 голос
/ 21 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...