высокопроизводительный (но тупой) веб-сервер - PullRequest
3 голосов
/ 16 декабря 2010

Я пытаюсь написать очень простой веб-сервер, который выполняет следующие действия:

  1. Получение запроса.
  2. Ответ небольшим файлом;закройте соединение.
  3. Обработайте данные запроса.

Другими словами, ответ не зависит от информации запроса, но информация запроса по-прежнему важна.Данные будут сохранены и затем использованы для аналитики.

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

В идеале сервер должен продолжать отвечать на запросы,пока данные запроса добавляются в стек, который очищается при сохранении.

Мы ожидаем обрабатывать тысячи запросов в секунду.Является ли программирование, основанное на событиях, действительно правильным способом, или я должен придерживаться (традиционных) потоков?Какой язык или рамки больше подходят для такой работы?

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Рассматривали ли вы использование Node.js ?Это позволяет вам быстро и легко писать http-ориентированные серверные программы, используя JavaScript.Кажется, он очень хорошо подходит для ваших нужд, поскольку его поведение настраивается, и говорят, что оно довольно хорошо масштабируется.

Возможно, вы захотите прочитать некоторые учебные пособия.

0 голосов
/ 20 декабря 2010

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

beanstalkd кажется легче и быстрее конкурентов, поэтому я, вероятно, буду придерживаться его.

...