Надежность Эрланга 99,9999999% (9 девяток)


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

Я сделал математику следующим образом:

20*365.25*24*60*60*(1 - 0.999999999) == 0.631 s

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


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

4 86

4 ответа:

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

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

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

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

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

Итак, пока сеть, частью которой был коммутатор, работала без простоев, автор может указать "надежность девяти девяток" для AXD301 (Это было все, что он когда-либо говорил, избегая конкретики). Это не обязательно означает, что Эрланг является единственной причиной такой высокой надежностью.

EDIT: на самом деле, "20 лет" сам по себе кажется неправильной интерпретацией. Джо упоминает цифру в 20 лет в той же статье, но на самом деле это не связано с цифрой надежности девять-девять, которая потенциально вышла из гораздо более короткого исследования (как упоминали другие).

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

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

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

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

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

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

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

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

пишут что пять девяток-это более реалистичная цифра.

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

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

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

вот как я это понимаю фигура.

надеюсь, что это поможет.