Надежность Эрланга 99,999999% (девять девяток) - PullRequest
92 голосов
/ 08 декабря 2011

Эрланг , как сообщалось, использовался в производственных системах более 20 лет с процентом безотказной работы 99,99999999%.

Я сделал следующее:*

Это означает, что система простаивает менее чем за одну секунду в течение 20 лет.Я не пытаюсь оспаривать обоснованность этого, мне просто любопытно, как мы можем выключить систему (специально или случайно) всего за 0,631 секунду.Может ли кто-нибудь, кто знаком с большой системой программного обеспечения, объяснить это нам?Спасибо.


Кто-нибудь знает, как рассчитать время простоя службы в кластере блоков обработки (или машин)?

Ответы [ 4 ]

79 голосов
/ 08 декабря 2011

Показатель надежности не должен был измерять общее время, в течение которого какая-либо часть AXD301 (рассматриваемый проект) когда-либо закрывалась более 20 лет. Он представляет собой общее время за те 20 лет, когда служба, предоставляемая системой AXD301, когда-либо была отключена. Тонкая разница. Как говорит Джо Армстронг здесь :

AXD301 достиг девяноста надежности (да, вы правильно прочитали, 99,999999%). Давайте рассмотрим это следующим образом: 5 девяток считаются хорошими (5,2 минуты простоя / год). 7 девяток почти недостижимы ... но мы сделали 9.

Почему это? Нет общего состояния, а также сложная модель восстановления после ошибок.

Если вы покопаетесь немного глубже, в диссертации доктора Джо, первоначального автора Erlang (которая включает в себя исследование AXD301), вы прочитаете:

Одним из проектов, изученных в этой главе, является Ericsson AXD301, высокопроизводительный высоконадежный коммутатор ATM .

Таким образом, пока сеть, частью которой являлся коммутатор, работала без простоев, автор может заявить «надежность девяти девяток» для AXD301 (это было все, что он когда-либо говорил, избегая специфики). Это не обязательно означает, что Erlang является единственной причиной такой высокой надежности.

РЕДАКТИРОВАТЬ: На самом деле, "20 лет" само по себе кажется неправильным толкованием. Джо упоминает цифру 20 лет в той же статье, но на самом деле она не связана с цифрой надежности в девять девяток, которая потенциально может быть получена из более короткого исследования (как уже упоминали другие).

50 голосов
/ 12 декабря 2011

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

Erlang имеет несколько функций, которые исключают рабочее время человека как источник простоев:

  1. Горячая перезагрузка кода . В системе Erlang легко скомпилировать и загрузить модуль замены для существующего. Эмулятор BEAM выполняет обмен автоматически, не останавливая ничего. Несомненно, существует небольшое количество времени, в течение которого происходит эта передача, но это происходит автоматически в компьютерное время, а не вручную в человеческое время. Это позволяет выполнять обновления с простоем zero . (Вы можете иметь время простоя, если в модуле замены есть ошибка, которая приводит к сбою системы, но поэтому вы тестируете ее перед развертыванием в производство.)

  2. Контролеры . Библиотека OTP Эрланга имеет встроенную контрольную среду, которая позволяет вам определить, как система должна реагировать в случае сбоя модуля. Стандартное действие здесь - перезапустить неисправный модуль. Предполагая, что перезапущенный модуль не сразу снова дает сбой, общее время простоя вашей системы может составлять миллисекунды. Надежная система, которая почти никогда не выходит из строя, может действительно накапливать лишь долю секунды от общего времени простоя в течение многих лет работы.

  3. Процессы . Они примерно соответствуют потокам в других языках, за исключением того, что они не разделяют состояние, кроме как через постоянные хранилища данных. Помимо этого, общение происходит через передачу сообщений. Поскольку процессы Erlang очень недороги (намного дешевле, чем потоки ОС), это способствует слабосвязанному дизайну, поэтому, если процесс умирает, только одна крошечная часть системы испытывает простои. Обычно супервизор перезапускает этот один процесс, практически не влияя на остальную часть системы.

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

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

25 голосов
/ 19 октября 2014

Показатель доступности 99,9999999% является часто цитируемой, но в корне вводящей в заблуждение статистикой.Матс Кронквист, один из членов команды AXD-301, представил презентацию (видео) (которую я посетил) на конференции фабрики Erlang 2010 в Сан-Франциско, обсуждая эту точную статистику доступности,По его словам, компания British Telecom заявила, что на испытательный период (я полагаю, с января по сентябрь 2002 года) "5 узловых лет" с использованием AXD-301.К концу испытания было 14 узлов, переносящих живой трафик.

Кронквист определенно заявил, что это не является представителем всей истории AXD-301 или Эрланга в целом, и что он не был счастлив, что Джо Армстронгпродолжал цитировать это, приводя к раздутым ожиданиям надежности Эрланга. Другие написали , что пять девяток - более реалистичная цифра.

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

5 голосов
/ 09 декабря 2011

Мое понимание этой статистики состоит в том, что она рассчитывается для ВСЕХ систем AXD301 в производстве. Можно ожидать, что когда у AXD301 возникнет серьезная проблема, он будет недоступен более 0,631 секунды. В течение этого периода, другой AXD301 вступит во владение, чтобы поддерживать сеть в рабочем состоянии.

Однако, когда вы суммируете общее количество часов всех запущенных AXD301, сделаете соотношение для одного отказавшего AXD301, вы получите 99,9999999%

Вот как я понимаю эту цифру.

Надеюсь, эта помощь.

...