Erlang 99.9999999% (девять девяток) надежность

Сообщается, что

Erlang использовался в производственных системах более 20 лет с процентным соотношением времени безотказной работы 99.9999999%.

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

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

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


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

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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