что такое управляемый событиями веб-сервер - PullRequest
25 голосов
/ 20 октября 2010

Я хочу понять основы веб-сервера, управляемого событиями, я знаю, что одним из них является Торнадо, но любая другая информация очень ценится.

Спасибо

Ответы [ 3 ]

25 голосов
/ 04 февраля 2011

Вот хорошая аналогия, описанная здесь:

http://daverecycles.tumblr.com/post/3104767110/explain-event-driven-web-servers-to-your-grandma

15 голосов
/ 21 октября 2010

Веб-сервер должен обрабатывать одновременные соединения. Есть много способов сделать это, некоторые из них:

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

В конце концов, различие заканчивается тем, что вы сохраняете каждое состояние соединения (явно в структуре контекста, неявно в стеке, неявно в продолжении, ...) и как вы планируете соединения (пусть ОС планировщик делает это, пусть это делают примитивы опроса ОС, ...).

1 голос
/ 31 июля 2013

Событийный подход направлен на решение проблемы C10K. Он превращает традиционную «push-модель» в «pull-модель» для создания неблокирующего четного ввода-вывода. Проще говоря, управляемая событиями архитектура не порождает дополнительные потоки и накладные расходы на переключение контекста потока и обычно приводит к повышению производительности и меньшему потреблению ресурсов.

Некоторый обзор от разработчика рельсов, также включает аналогию: http://odysseyonrails.com/articles/8

...