Написание собственного HTTP-сервера - PullRequest
0 голосов
/ 27 июня 2011

Я планирую написать HTTP-сервер:

Будет два модуля (L & P), оба исполняемых файла.

Один из этих исполняемых файлов (L) будет прослушивать HTTP-запрос и просто перенаправит его на другой исполняемый файл (P), который имеет всю логику синтаксического анализа HTTP и выполняет дальнейшие действия. Может быть число «P», информация / параметры соединения которых будут известны слушателю L.

Идея состоит в том, что если один из P вызывает сбой, можно использовать другой, и т. Д. Кроме того, один P может быть запущен для взаимодействия с одной копией DB, а другие P - с другой репликой.

Теперь я в замешательстве, если я пойду за комбо L & P или только с L, который будет прослушивать, recv, анализировать запрос и отвечать.

In case I go for L&P combo there will be some overhead because of request forwarded from L to P and then response from P to L.

  • Можно ли пренебречь этими издержками при 100 000 попаданий в секунду?

1 Ответ

2 голосов
/ 27 июня 2011

Прежде всего, что не так со всеми существующими веб-серверами? Почему бы не создать модуль для одного из них?

Если вы хотите пойти дальше и создать свой собственный (и это не тривиальная задача, если вы хотите полностью поддерживать стандарт HTTP): создайте HTTP-сервер и модули (.so / .dll). Просто оберните все вызовы модуля командой try / catch, чтобы предотвратить их сбой на вашем сервере.

Еще один способ сделать это - создать библиотеку http-парсера, и пусть все P будут полноценными веб-серверами и поставить перед ними балансировщик прокси / нагрузки. Таким образом, вы можете переместить любой из P на новые серверы, если у вас закончится вычислительная мощность.

...