Лучший подход для кометы? (Неблокирующий ввод-вывод против Эрланга) - PullRequest
4 голосов
/ 12 мая 2011

Возможно, вопрос не так прост, чтобы ответить ... но каково ваше мнение? Должен ли я использовать неблокирующие подходы (libevent для экспертизы) или использовать процессы Erlang облегченного веса для:

  1. Получите как можно больше соединений при заданном объеме ОЗУ
  2. Достигните максимально возможной пропускной способности при заданном количестве CPU

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

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Одна статья о создании приложения-кометы для миллионов пользователей с Mochiweb вы можете прочитать там.Но я думаю, что стабильность, гибкость и ремонтопригодность будут важнее в большинстве случаев.Имея это в виду, я бы не стал думать ни о чем, кроме Эрланга, даже если бы было какое-то более эффективное решение.

2 голосов
/ 12 мая 2011

Под капотом Erlang VM использует неблокирующий ввод-вывод. Если вы используете легковесные блоки процесса Erlang, виртуальная машина не выполняет переключение контекста потока на уровне ядра. В большинстве случаев он просто пробуждает другой LWP в том же потоке ОС (таким образом, это не «блокировка» в правильном смысле этого слова).

Вы даже можете запустить vm, используя аргумент + A, и указать, сколько потоков цикла событий ввода-вывода вы хотели бы выделить (AFAIK, Node.js по-прежнему однопоточный, и если функция обратного вызова зависает, ваша виртуальная машина готова для )

...